*DECK NADDUMP 
USETEXT COMCBEG 
USETEXT COMMCOM 
USETEXT COMMGET 
USETEXT COMRNET 
    PROC NADDUMP; 
      BEGIN  # NADDUMP #
#  TITLE  NADDUMP - NADDUMP NAD MEMORY #
  
# 
**    NADDUMP - DUMP NAD MEMORY 
* 
*     ENTRY    - DLSTATE  = 03 (DUMP IN-PROGRESS).
*                DLRMTNAD = FALSE. (LOCAL NAD DUMP REQUIRED)
*                         = TRUE. (REMOTE NAD DUMP REQUIRED)
* 
*     EXIT     - DLSTATE = 02 (DUMP COMPLETE, LOAD REQUIRED)
*                        = 03 (DUMP IN-PROGRESS)
*                DLRETRY = 03 (WAITING FOR DUMP FILE) 
* 
*     PROCESS    CALL ATTFIL TO ATTACH NAD DUMP FILE. 
*                IF NAD DUMP FILE NOT ATTACHED
*                  IF BUSY
*                    SEND DAYFILE MESSAGE (IN USE)
*                  ELSE:  
*                    IF NOT FOUND:  
*                      CALL REQFIL (DEFINE/REQUEST PERM FILE).
*                IF DUMP FILE AVAILABLE 
*                  CALL DUMPNM TO DUMP NAD MEMORY 
*                  IF DUMP COMPLETE:  
*                    SEND DAYFILE MESSAGE (DUMPED). 
*                IF FILE PRESENT: 
*                  CALL RTNFIL (RETURN/CATALOG PERM FILE).
*                IF PERM FILE ERROR:  
*                  SEND DAYFILE MESSAGE (FAULTY). 
# 
  
# 
****  PROC NADDUMP - XREF BEGINS. 
# 
      XREF
        BEGIN 
        LABEL FETADR;              # ADDR OF FET FOR CIO CALL # 
        PROC ATTFIL;               # ATTACH PERMANENT FILE #
        PROC CALLSYS;              # CALL SYSTEM VIA RA+1 # 
        PROC DBGNAME;              # DEBUG - DAYFILE MESSAGE #
        PROC DUMPNM;               # DUMP NAD MEMORY #
        FUNC OCTCHF     C(10);     # OCTAL DISPLAY #
        PROC REQFIL;               # REQUEST/DEFINE PERMANENT FILE #
        PROC RTNFIL;               # RETURN/CATALOG PERMANENT FILE #
        END 
# 
****  PROC NADDUMP - XREF ENDS. 
# 
  
  
      ARRAY [0:0] S(4); 
        BEGIN 
        ITEM NADDMPMSG  C(00,00,38) = 
             [" MHF, NAD DUMP FILE IN USE,   NDFXXXX."];
        ITEM NADDMPMSGB C(02,00,08);  # "IN USE/FAULTY/PF ERROR" #
        ITEM NADDMPMSGN C(03,00,07);  # FILE NAME # 
        ITEM NADDMPMSGP C(03,12,03);  # PERM FILE ERROR CODE #
        ITEM NADDMPMSGT U(03,48,12) = [0];  # TERMINATOR #
        END 
  
      ITEM I          I;           # SCRATCH #
  
CONTROL EJECT;
  
      $BEGIN
      DBGNAME ("NADDUMP");         # DEBUG MESSAGE #
      $END
  
      P<FET> = LOC(FETADR);        # ADDR OF DUMP FILE FET #
      NDFNAM$456 = HOSTPID;        # FORM DUMP FILE NAME #
      FET$WORD0 = NDFNAMU;         # DUMP FILE NAME FOR ATTACH #
      NADDMPMSGN = NDFNAMC;        # FILE NAME FOR MESSAGE #
      DLDELAY = DUMPDELAY;         # SET DUMP RETRY DELAY # 
  
      $BEGIN                       # DEBUG CODE # 
      DBGNAME ("ATTFIL"); 
      $END
  
      ATTFIL;                      # ATTACH NAD DUMP FILE # 
  
      IF FET$PFMERR NE 0           # IF FILE NOT ATTACHED # 
      THEN
        BEGIN 
        IF FET$PFMERR EQ 1         # IF FILE BUSY # 
        THEN
          BEGIN 
          NADDMPMSGB = "IN USE,"; 
          MSG$BUFADR = LOC(NADDMPMSG);
          MSG$STATUS = 0; 
          CALLSYS (MSGCALL);       # DAYFILE MESSAGE #
          END 
  
        ELSE
          BEGIN 
          IF FET$PFMERR EQ 2       # IF NO PERM FILE #
          THEN
            BEGIN 
            $BEGIN                 # DEBUG CODE # 
            DBGNAME ("REQFIL"); 
            $END
  
            REQFIL;                # REQUEST/DEFINE NEW DUMP FILE # 
            END 
  
          END 
        END 
  
      IF FET$PFMERR EQ 0           # IF DUMP FILE AVAILABLE # 
      THEN
        BEGIN 
        DUMPNM;                    # DUMP NAD MEMORY #
        IF DLSTATE EQ NS$LDREQ     # IF DUMP SUCCESSFUL # 
        THEN
          BEGIN 
          RECNADMSGD = "DUMPED";
          MSG$BUFADR = LOC(RECNADMSG);
          MSG$STATUS = 0; 
          CALLSYS (MSGCALL);       # DAYFILE MESSAGE #
          END 
  
        $BEGIN
        DBGNAME ("RTNFIL");        # DEBUG MESSAGE #
        $END
  
        RTNFIL;                    # RETURN/CATALOG DUMP FILE # 
        END 
  
      IF FET$PFMERR GT 1           # IF FILE ERROR (BUT NOT BUSY) # 
      THEN
        BEGIN 
        NADDMPMSGB = "FAULTY,"; 
        MSG$BUFADR = LOC(NADDMPMSG);
        MSG$STATUS = 0; 
        CALLSYS (MSGCALL);         # DAYFILE MESSAGE #
        NADDMPMSGB = "PF ERROR";
        NADDMPMSGN = "= XXXB "; 
        NADDMPMSGP = OCTCHF(FET$PFMERR,3);
        MSG$STATUS = 0; 
        CALLSYS (MSGCALL);         # DAYFILE MESSAGE #
        END 
      END    # NADDUMP #
  
    TERM
