*DECK NSTORE
PROC NSTORE(BARRAY,SYMBOL,VALUE);
BEGIN
*IF,DEF,IMS
#
*1DC NSTORE
* 1.PROC NAME AUTHOR DATE
* NFETCH PETER TAM 5/24/77
*
* 2.FUNCTIONAL DESCRIPTION
* NSTORE IS A SYMPL ROUTINE CALLABLE BY AN FNT CALLING
* SEQUENCE, TO STORE FIELDS IN SUPERVISORY MESSAGES.
* CALL NSTORE(ARRAY,F1,F2)
* WHERE
* ARRAY IS THE FWA OF THE SUPERVISORY MESSAGE
* F1 IS THE LEFT JUSTIFIED ZERO FILLED DISPLAY CODED
* NAME OF THE FIELD TO BE STORED
* F2 IS THE LEFT JUSTIFIED ZERO FILLED DISPLAY CODED
* NAME OF THE VALUE OF THE FIELD TO BE STORED
* F2 MAY ALSO BE A CONSTANT VALUE TO BE STORED
*
* 3.METHOD USED
* NSTORE WILL STORE F2 IN FIELD F1 IN THE ARRAY
*
* IT USES A TABLE LOOK-UP TECHNIQUE TO FIND THE
* A. VALUE OF F2
* B. THE DESCRIPTION OF WHERE IN THE ARRAY F1 IS
*
* THESE TABLES ARE ASSEMBLED INTO THE COMPASS ROUTINE
* NP$SYM, WHICH USES THEIR DEFINITION IN NETMAC.
*
*
* 4.ENTRY CONDITIONS
* ARRAY CONTAINS THE SUPERVISORY MESSAGE
* F1 IS THE DISPLAY CODE NAME OF THE REQUIRED FIELD
*
* 5.EXIT CONDITIONS
* THE VALUE F2 WILL BE STORED IN FIELD F1 OF ARRAY
*
* 6.COMDECKS CALLED
* NP$CRT
*
* 7.ROUTINES CALLED
* NFETCH
* NP$ERR
*
* 8.DAYFILE MESSAGES
* NETWORK APPLICATION ABORTED, RC = 69.
* NSTORE: ILLEGAL FIELD MNEMONIC.
*
*
#
*ENDIF
*CALL NP$CRT
XREF FUNC NFETCH I;
XREF PROC NP$ERR;
XREF ITEM NP$SYME U;
XREF ITEM NP$SYMI U;
XREF ARRAY NP$SYM[0:300] S(2);
BEGIN
ITEM SYMNAME C(0,0,7);
ITEM SYMST U(0,54,6);
ITEM SYMWORD U(1,6,12);
ITEM SYMBIT U(1,18,12);
ITEM SYMLGTH U(1,30,12);
ITEM SYMVAL U(1,0,60);
END
ARRAY BARRAY[0:O"77777"] S(1);
ITEM CONTENTS U;
ITEM VALUE I;
ITEM SYMBOL U;
ITEM I U;
ITEM J U;
ITEM II U;
II = (LOC(NP$SYMI)-LOC(NP$SYM))/2;
FOR I = II STEP 1 UNTIL NP$SYME DO BEGIN
IF SYMNAME[I] EQ C<0,7>SYMBOL THEN BEGIN
J = SYMST[I];
IF J EQ 4 THEN BEGIN
NP$ERR("69"); # ILLEGAL FIELD MNEMONIC. #
END
IF J EQ 3 OR J EQ 2 THEN BEGIN
IF VALUE NQ 0
AND B<42,18>VALUE EQ 0
AND SYMLGTH[I] LQ 18
THEN BEGIN
VALUE = NFETCH(0,VALUE);
END
B<SYMBIT[I],SYMLGTH[I]>CONTENTS[SYMWORD[I]] = VALUE;
RETURN;
END
IF J EQ 1 THEN BEGIN
IF VALUE NQ 0
AND B<42,18>VALUE EQ 0
AND SYMLGTH[I] LQ 18
THEN BEGIN
VALUE = NFETCH(0,VALUE);
END
B<SYMBIT[I],6*SYMLGTH[I]>CONTENTS[SYMWORD[I]] = VALUE;
RETURN;
END
END
END
NP$ERR("69"); # ILLEGAL FIELD MNEMONIC. #
END
TERM