*COMDECK NP$ERR 
PROC NP$ERR(DIGITS);
 #
*1DC  NP$ERR
* 
*     1. PROC NAME         AUTHOR                DATE 
*        NP$ERR            S.KRULEVITCH         77/05/23
* 
*     2. FUNCTIONAL DISCRIPTION 
*        CALLS DAYFILE MESSAGE PROCESSOR
* 
*     3. METHOD USED
*        DAYFILE MESSAGE
*        ABORT APPLICATION
*     4. ENTRY CONDITIONS 
*        DIGITS - TWO CHARACTER RETURN CODE.
* 
*     5. EXIT CONDITONS 
*        STOPS IN LIEU OF EXITING.
* 
*     6. COMDECKS CALLED
*        NP$CRT 
* 
*     7. ROUTINES CALLED
*        NP$MSG - DAYFILE MESSAGE PROCESSOR 
*        NP$OSIF - ISSUES AN OPERATING SYSTEM REQUEST TO ABORT THE
*                  APPLICATION
* 
*     8. DAYFILE MESSAGES 
*        NETWORK APPLICATION ABORTED, RC = XX.
*            XX RANGE FROM 01 TO 99.
*               RANGE 01 TO 29 USED BY NIP. 
*               RANGE 30 TO 69 USED BY AIP. 
*               RANGE 70 TO 99 USED BY QTRM.
* 
 #
   BEGIN
  
*CALL NP$CRT
  
#                                                                     # 
#     PARAMETERS:                                                     # 
#                                                                     # 
      ITEM DIGITS   C(2); 
# 
      ROUTINES CALLED:  
# 
   XREF BEGIN 
        PROC NP$MSG;                   # WRITE MESSAGE TO JOB DAYFILE. #
        PROC CALLSYS;                  # ISSUE OS REQUEST              #
        END #XREF#
# 
      LOCAL DECLARATIONS: 
# 
      ITEM ABT  I = O"01022400000000000000";  # DISPLAY CODE FOR ABT   #
      ARRAY ERROR[0] S(4);
        BEGIN 
        ITEM
          ERRMSG        C(0,0,38) = 
                        ["NETWORK APPLICATION ABORTED, RC =   . "], 
          ERRCODE       C(3,24,2),
          EOL           U(3,48,12) = [0]; 
        END 
$BEGIN
      ITEM INDEX    I;
      DEF LENGTH  #21#; 
      ARRAY ERRORS[0:LENGTH] S(4);
        BEGIN 
        ITEM
          EOLS          U(3,48,12), 
          RCFIELDS      C(3,48,2),
          ERRMSGS       C(0,0,40) = [ 
                        "NETON: DUPLICATE NETON REQUEST.       30", 
                        "NP$GET: REQUEST INVALID BEFORE NETON. 31", 
                        "NP$PUT: REQUEST INVALID BEFORE NETON. 32", 
                        "NETWAIT: REQUEST INVALID BEFORE NETON.33", 
                        "NETDBG: REQUEST INVALID BEFORE NETON. 34", 
                        "NETON: PREVIOUS REQUEST INCOMPLETE.   40", 
                        "NETSETP: PREVIOUS REQUEST INCOMPLETE. 41", 
                        "NP$GET: PREVIOUS REQUEST INCOMPLETE.  42", 
                        "NP$PUT: PREVIOUS REQUEST INCOMPLETE.  43", 
                        "NETWAIT: PREVIOUS REQUEST INCOMPLETE. 44", 
                        "NP$ON: INVALID PROCESS NUMBER.        50", 
                        "NP$XFER: NWL HAS OVERFLOWED.          51", 
                        "NP$XFER: NIP NOT AVAILABLE AT SCP.    67", 
                        "NFETCH: ILLEGAL FIELD MNEMONIC.       68", 
                        "NSTORE: ILLEGAL FIELD MNEMONIC.       69", 
                        "QTENDT: REQUEST INVALID BEFORE QTOPEN.70", 
                        "QTGET: REQUEST INVALID BEFORE QTOPEN. 71", 
                        "QTPUT: REQUEST INVALID BEFORE QTOPEN. 72", 
                        "QTOPEN: DUPLICATE QTOPEN.             80", 
                        "QTOPEN: NIT NUM-TERMS FIELD IS ZERO.  81", 
                        "QTOPEN: NETON REJECTED.               82", 
                        "QTOPEN: NETWORK NOT AVAILABLE.        83", 
                        "QTGET: NETWORK LOGICAL ERROR.         99"];
        END 
$END
#**********************************************************************#
# 
      NP$ERR EXECUTION BEGINS HERE. 
# 
      ERRCODE[0] = DIGITS;             # BUILD ERROR MESSAGE.          #
      NP$MSG(ERROR,0);                 # LIST ERROR IN DAYFILE.        #
$BEGIN
      FOR INDEX = 0 STEP 1 UNTIL LENGTH DO
        BEGIN 
        IF RCFIELDS[INDEX] EQ DIGITS
        THEN
          BEGIN 
          EOLS[INDEX] = 0;
          NP$MSG(ERRORS[INDEX]);
          RCFIELDS[INDEX] = DIGITS; 
          END 
        END 
$END
      CALLSYS(ABT);                    # ABORT THE APPLICATION         #
  
   END #NP$ERR# 
TERM
