*COMDECK NFETCH 
     FUNC    NFETCH(BARRAY,SYMBOL)     I; 
      BEGIN 
 #
*1DC  NFETCH
*     1.PROC NAME     AUTHOR     DATE 
*       NFETCH        PETER TAM  6/24/77
* 
*     2.FUNCTIONAL DESCRIPTION
*     NFETCH DOES A TABLE LOOKUP OF THE REQUIRED ITEM 
*     TO OBTAIN ITS COORINATES (I.E INDEX WITHIN ARRAY, 
*     STARTING BIT WITHIN WORD AND LENGTH IN BITS)
*     AND RETURNS TO THE CALLER THE REQUIRED FIELD. 
*     THE TABLE CONTAINING THIS INFORMATION IS ASSEMBLED
*     IN THE COMPASS ROUTINE NP$SYM , WHICH IN TURN 
*     USES THE ITEM, DEF AND STATUS MACROS DEFINED IN NETMAC. 
* 
*     3.METHOD USED 
*     NFETCH IS A SYMPL ROUTINE CALLABLE BY FTN CALLING SEQUENCES 
*     TO ACCESS SUPERVISORY MESSAGE FIELDS IN SYMPL COMMON DECKS. 
*     IT IS TO BE ACCESSED AS AN FTN INTEGER FUNCTION 
*        I=NFETCH(ARRAY,ITEM) 
*     WHERE ARRAY IS AN ARRAY CONTAINING THE SUPERVISORY MESSAGE
*     ITEM IS THE LEFT JUSTIFIED ZERO FIELD DISPLAY CODE NAME 
*     OF THE REQUIRED FIELD IN THE SUPERVISORY MESSAGE. 
* 
*     4.ENTRY CONDITIONS
*     SEE FUNCTIONAL DESCRIPTION
* 
*     5. EXIT CONDITIONS
*     THE VALUE OF THE FUNCTION WILL BE SET TO THE FIELD SPECIFIED. 
* 
*     6.COMDECKS CALLED 
*        NP$CRT 
* 
*     7.ROUTINES CALLED 
*        NP$ERR 
* 
*     8.DAYFILE MESSAGES
*        NETWORK APPLICATION ABORTED, RC = 68.
*        NFETCH: ILLEGAL FIELD MNEMONIC.
* 
 #
*CALL NP$CRT
        XREF    PROC    NP$ERR; 
        XREF    ITEM    NP$SYME    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  SYMBOL        U;
        ITEM  I             U;
        ITEM  J             U;
        FOR  I = 0  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
                    NFETCH  = SYMVAL[I];
                    RETURN; 
                  END 
                IF  J EQ 3 OR  J EQ 2 
                  THEN BEGIN
                    NFETCH  = 
                    B<SYMBIT[I],SYMLGTH[I]>CONTENTS[SYMWORD[I]];
                    RETURN; 
                  END 
                IF  J EQ 1
                  THEN BEGIN
                    NFETCH =
                    C<SYMBIT[I],SYMLGTH[I]>CONTENTS[SYMWORD[I]];
                    RETURN; 
                 END
              END 
         END
        NP$ERR("68");                  # ILLEGAL FIELD MNEMONIC.       #
      END 
      TERM
