*DECK ERRNLD
USETEXT COMCBEG 
USETEXT COMMCOM 
    PROC ERRNLD;
#TITLE  ERRNLD - PROCESS NLD ERROR #
      BEGIN  # ERRNLD # 
  
# 
**    ERRNLD - PROCESS NLD ERROR
* 
*     ENTRY      PB$RC    = NLD RESPONSE CODE.
*                PB$CH    = NAD CHANNEL NUMBER. 
*                PB$ND    = REMOTE NAD ADDRESS. 
*                NLD$FC   = NLD FUNCTION CODE.
* 
*     EXIT       DAYFILE MESSAGE SENT.
* 
*     PROCESS    DEPENDING ON VALUE OF NLD RESPONSE CODE
*                  PUT NAD CHANNEL, REMOTE NAD ADDRESS, OR RESPONSE 
*                      CODE INTO APPROPRIATE MESSAGE. 
*                SEND MESSAGE TO DAYFILE
# 
  
# 
****  PROC ERRNLD - XREF LIST BEGIN 
# 
      XREF
        BEGIN 
        PROC CALLSYS;              # CALL SYSTEM VIA RA+1 # 
        FUNC HEXCHF     C(10);     # VALUE TO HEX DISPLAY # 
        FUNC OCTCHF     C(10);     # VALUE TO OCTAL DISPLAY # 
        END 
# 
****  PROC ERRNLD - XREF LIST END 
# 
  
      DEF NLDRC$MX   # 12 #;  # MAXIMUM NLD RESPONSE CODE + 1 # 
      DEF NLDRC$XX   #  6 #;  # INVALID NLD RESPONSE INDEX #
  
      ARRAY [1:NLDRC$MX] S(5);
        BEGIN 
        ITEM ERRNLDMSG  C(00,00,48) = 
             ["MHF DEBUG-ERRNLD FC=XX, RC=XX/XXXX,     CHAN=XX."
             ," MHF, EST ENTRY UP OR NOT RESERVED,   NAD CH=XX."
             ," MHF, NO EST ENTRY DEFINED,     LOCAL NAD CH=XX."
             ," MHF, EST/CHANNEL UNAVAILABLE,  LOCAL NAD CH=XX."
             ," MHF, NAD ACCESS ERROR (NLD ERROR 4)  NAD CH=XX."
             ," MHF, INVALID NLD RESPONSE XXB, LOCAL NAD CH=XX."
             ," MHF, BUFFER FOR NLD TOO SMALL, LOCAL NAD CH=XX."
             ," MHF, DEVICE ENABLE SWITCH OFF, LOCAL NAD CH=XX."
             ," MHF, LOCAL NAD FAULT,          LOCAL NAD CH=XX."
             ," MHF, CONNECT REJECT, RNAD YY,  LOCAL NAD CH=XX."
             ," MHF, CONNECT BROKEN, RNAD YY,  LOCAL NAD CH=XX."
             ," MHF, NO ERROR LOG,   RNAD YY,  LOCAL NAD CH=XX."
             ]; 
        ITEM ERRNLDMSGC C(04,30,02);  # LOCAL NAD CHANNEL # 
        ITEM ERRNLDMSGD C(03,06,04);  # DEAD CODE # 
        ITEM ERRNLDMSGF C(02,00,02);  # NLD FUNCTION CODE # 
        ITEM ERRNLDMSGP C(02,12,08);  # "RNAD XX," OR BLANK # 
        ITEM ERRNLDMSGR C(02,42,02);  # RNAD ADDR OR NLD RESPONSE # 
        ITEM ERRNLDMSGT U(04,48,12) = [NLDRC$MX(0)];  # TERMINATOR #
        END 
  
      ITEM I          I;           # SCRATCH #
  
      SWITCH SWERRNLD ERRNLD6,ERRNLD6,ERRNLD5,ERRNLD5,ERRNLD5,
                      ERRNLD5,ERRNLD1,ERRNLD5,ERRNLD5,ERRNLD5,
                      ERRNLD4,ERRNLD4,ERRNLD3;
CONTROL EJECT;
  
      MSG$DSPLAY = MSG$DAYF;       # RESET MESSAGE DESTINATION #
  
      $BEGIN                       # DEBUG #
      ERRNLDMSGC[1] = OCTCHF(PB$CH,2);  # NAD CHANNEL # 
      ERRNLDMSGR[1] = OCTCHF(PB$RC,2);  # NLD RESPONSE CODE # 
      ERRNLDMSGF[1] = OCTCHF(PB$FC,2);  # NLD FUNCTION CODE # 
      MSG$BUFADR = LOC(ERRNLDMSG[1]); 
      MSG$STATUS = 0; 
      CALLSYS (MSGCALL);           # SEND DEBUG MESSAGE TO DAYFILE #
      $END                         # DEBUG #
  
      IF PB$RC GE NLDRC$MX         # IF INVALID RESPONSE CODE # 
      THEN
        BEGIN 
        I = NLDRC$XX;              # INDEX = INVALID MESSAGE #
        END 
  
      ELSE
        BEGIN 
        I = PB$RC + 1;             # INDEX TO MESSAGE # 
        END 
  
      GOTO SWERRNLD[I]; 
  
ERRNLD1:         # PB$RC = 5 OR .GE. MAXIMUM #
  
      ERRNLDMSGR[I] = OCTCHF(PB$RC,2);  # NLD RESPONSE CODE # 
      GOTO ERRNLD5; 
  
ERRNLD3:         # PB$RC = 13B #
  
      IF NOT DLRMTNAD              # IF LOCAL NAD FUNCTION #
      THEN
        BEGIN 
        ERRNLDMSGP[I] = "        ";  # CLEAR "RNAD XX," # 
        GOTO ERRNLD5; 
        END 
  
#     ELSE           #
#       GOTO ERRNLD4 #
  
ERRNLD4:         # PB$RC = 11B OR 12B OR 13B(REMOTE) #
  
      ERRNLDMSGP[I] = "RNAD 00,"; 
      ERRNLDMSGR[I] = HEXCHF(PB$ND,2);  # REMOTE NAD ADDR # 
#     GOTO ERRNLD5 #
  
ERRNLD5:         # PB$RC .GT. 0 # 
  
      ERRNLDMSGC[I] = OCTCHF(PB$CH,2);  # NAD CHANNEL # 
      MSG$BUFADR = LOC(ERRNLDMSG[I]); 
      MSG$STATUS = 0; 
      CALLSYS (MSGCALL);           # SEND MESSAGE TO DAYFILE #
  
ERRNLD6:         # RETURN # 
  
      RETURN; 
  
      END  # ERRNLD # 
  
    TERM
