*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