*DECK NS$NDF
USETEXT COM$NS
USETEXT DEF$NS
USETEXT NDF$NS
USETEXT ERR$NS
  
PROC NS$NDF(NDFPFN,ERRCODE); # DEFINE NPU DUMP FILE                    #
  
# TITLE NS$NDF - DEFINE NPU DUMP FILE.                                 #
  
      BEGIN    # NS$NDF # 
# 
**    NS$NDF - DEFINE NPU DUMP FILE.
* 
*     J.C. LEE    1981
* 
*     THIS ROUTINE DEFINES AN NPU DUMP FILE.
* 
*     PROC NS$NDF(NDFPFN,ERRCODE) 
* 
*     ENTRY:  
*       NDFPFN - NPU DUMP FILE PERMANENT FILE NAME. 
* 
*     EXIT: 
*       ERRCODE - ERROR CODE. 
* 
*     METHOD: 
*       TRY THE FOLLOWING 256 TIMES OR TIL A FILE IS DEFINED: 
*         FORMAT PFN OF NDF 
*         DEFINE NDF AS A PRIVATE DIRECT ACCESS 
*         PERMANENT FILE. 
*       IF DUMP INDEX FULL, FLAG ERROR. 
*       UPDATE DUMP NUMBER. 
* 
# 
  
      ITEM NDFPFN     C(7);  # PFN OF NPU DUMP FILE                    #
      ITEM ERRCODE    U;     # ERROR CODE                              #
  
      $BEGIN
      XREF
        BEGIN 
        PROC NS$DBG;         # TRACE PROCEDURE CALL                    #
        END 
      $END
  
      XREF
        BEGIN 
        FUNC DEFINE;         # DEFINE A DIRECT ACCESS PERMANENT FILE   #
        FUNC NS$FEC U;       # FORMAT ERROR CODE                       #
        FUNC NS$CHD C(4);    # CONVERT TO 4 DISPLAY HEX CHAR           #
        END 
  
      ITEM INDEX      I;     # LOOP VARIABLE                           #
      ITEM STAT       U;     # RETURN STATUS FROM DEFINE               #
      ITEM TEMP       C(4);  # TEMPORARY                               #
  
CONTROL EJECT;
  
      $BEGIN
      NS$DBG("NDF");         # TRACE CALL                              #
      $END
  
      ERRCODE = 0;
      STAT = 1; 
  
      FOR INDEX = DN STEP 1 WHILE STAT NQ 0 
        AND INDEX LQ (MAX$NDFDN+DN) # TRY MAXIMUM 256 TIMES            #
      DO
        BEGIN 
# 
        FORMAT PERMANENT FILE NAME OF NDF 
# 
        C<0,2>NDFPFN = "NP";             # NDF FILE IDENTIFIER         #
        TEMP = NS$CHD(INDEX); # CONVERT TO DISPLAY HEXADECIMALS        #
        C<2,2>NDFPFN = C<2,2>TEMP; # DUMP INDEX IN DISPLAY HEX         #
        C<4,3>NDFPFN = NIN; # DISPLAY CODE DECIMAL NIN                 #
# 
        DEFINE NDF AS A PRIVATE DIRECT ACCESS PERMANENT FILE
# 
        STAT = DEFINE(NDFPFN,NDFPFN,NDF$PW,NDF$CT,NDF$MODE,NDF$AC); 
        END 
  
      IF STAT NQ 0
      THEN                               # DUMP INDEX FULL             #
        BEGIN 
        ERRCODE = NS$FEC(EC"ERR$DN",0); 
        END 
  
      DN = B<52,8>INDEX; # UPDATE DUMP NUMBER                          #
  
      RETURN; 
      END 
      TERM
