cdc:nos2.source:nam5871:ns_hfi
Table of Contents
NS$HFI
Table Of Contents
- [00008] PROC NS$HFI(REASON)
- [00010] NS$HFI - ALTERNATE LOAD FILE COMMAND PROCESSOR.
- [00014] ALTERNATE LOAD FILE COMMAND PROCESSOR.
- [00050] PROC NS$DBG
- [00056] FUNC ATTACH
- [00057] PROC NS$TKD
- [00058] FUNC NS$XZFN C(10)
- [00059] PROC READ
- [00060] PROC READW
- [00061] PROC RECALL
- [00062] PROC REQTSB
- [00063] PROC RETERN
- [00064] PROC RETTSB
- [00065] PROC SKIPB
- [00066] PROC SKIPEI
Source Code
- NS$HFI.txt
- *DECK NS$HFI
- USETEXT DEF$NS
- USETEXT DIR$NS
- USETEXT HOC$NS
- USETEXT LIN$NS
- USETEXT NPT$NS
- USETEXT PRF$NS
- PROC NS$HFI(REASON); # ALTERNATE LOAD FILE COMMAND PROCESSOR #
- # TITLE NS$HFI - ALTERNATE LOAD FILE COMMAND PROCESSOR. #
- BEGIN # NS$HFI #
- #
- ** NS$HFI - ALTERNATE LOAD FILE COMMAND PROCESSOR.
- *
- * J.C. LEE 1981
- *
- * PROC NS$HFI(REASON)
- *
- * ENTRY:
- * NONE.
- *
- * EXIT:
- * REASON - REASON CODE, POSSIBLE REASONS ARE:
- * - NPU NOT SPECIFIED IN COMMAND.
- * - SPECIFIED NPU NOT CONFIGURED/NOT FOUND
- * - ALTERNATE NLF NOT SPECIFIED IN COMMAND.
- * - FILE ATTACH NOT SUCCESSFUL.
- * - BAD NLF FILE FORMAT.
- * - SPECIFIED NPU ACTIVE, CANNOT ACTION COMMAND.
- *
- * METHOD:
- * SEARCH SPECIFIED NPU IN NPU TABLE.
- * ATTACH SPECIFIED ALTERNATE NLF.
- * GET CIO BUFFER.
- * READ THE ALTERNATE NLF.
- * IF SPECIFIED NLF NOT CURRENTLY ACTIVE, SEND ALTERNATE NLF
- * VERSION MESSAGE TO *KDB*.
- * READ NLF DIRECTORY TO TSB.
- * SAVE DIRECTORY TSBN.
- * RELEASE CIO BUFFER.
- *
- #
- ITEM REASON U; # FILE COMMAND ERROR REASON CODE #
- $BEGIN
- XREF
- BEGIN
- PROC NS$DBG; # TRACE CALL #
- END
- $END
- XREF
- BEGIN
- FUNC ATTACH; # ATTACH FILE TO CONTROL POINT #
- PROC NS$TKD; # TRANSFER DATA TO K DISPLAY BUFFER #
- FUNC NS$XZFN C(10); # ZERO-FILLED WORD #
- PROC READ; # READ FILE #
- PROC READW; # TRANSFER DATA #
- PROC RECALL; # WAIT TILL I/O COMPLETES #
- PROC REQTSB; # REQUEST TSB #
- PROC RETERN; # RETURN FILE #
- PROC RETTSB; # RELEASE TSB #
- PROC SKIPB; # SKIP FILE BACKWARDS #
- PROC SKIPEI; # SKIP TILL EOI #
- END
- DEF L$ALFBUF # O"101" #; # SIZE OF CIO BUFFER #
- DEF PRF$7700L # 15 #; # SIZE OF 77 TABLE IN NLF #
- ITEM DIRTSBN U; # DIRECTORY TSB NUMBER #
- ITEM I U; # TEMPORARY #
- ITEM NPTINDEX U; # NPU TABLE ENTRY INDEX #
- ITEM NPTCOUNT U; # NPU TABLE ENTRY COUNT #
- ITEM NPUNAME C(7); # NPU NAME #
- ITEM PFN C(7); # PFN OF ALTERNATE LOAD FILE #
- ITEM PW C(7); # PASSWORD OF ALTERNATE LOAD FILE #
- ITEM STAT U; # RETURN STATUS #
- ITEM TSBFWA U; # TSB FWA #
- ITEM TSBN U; # TSB NUMBER #
- ITEM UN C(7); # USER NAME OF ALTERNATE LOAD FILE #
- ARRAY ALF$FET[0:0]S(5);
- BEGIN # ALTERNATE LOAD FILE FET #
- ITEM FET$LFN C(00,00,07); # LOGICAL FILE NAME #
- ITEM FET$FM B(00,58,01) = [TRUE]; # BINARY FILE MODE #
- ITEM FET$COMP B(00,59,01) = [TRUE]; # COMPLETION BIT #
- ITEM FET$RAN B(01,12,01) = [TRUE]; # RANDOM FILE #
- ITEM FET$FIRST I(01,42,18); # FIRST POINTER #
- ITEM FET$IN I(02,42,18); # IN PONTER #
- ITEM FET$OUT I(03,42,18); # OUT POINTER #
- ITEM FET$LIMIT I(04,42,18); # LIMIT POINTER #
- END
- DEF L$FVERSION # 5 #; # LENGTH OF FILE VERSION MESSAGE #
- ARRAY FILVERSION[0:0]S(L$FVERSION);
- BEGIN # ALTERNATE FILE VERSION MESSAGE #
- ITEM FVER$LNHDR U(00,00,60); # LINE HEADER WORD #
- ITEM FVER$LNID U(00,00,24) = [LIN$IDENT]; # LINE ID #
- ITEM FVER$LNSIZ U(00,42,18) = [L$FVERSION]; # SIZE #
- ITEM FVER$TEXT C(01,00,38) = # MESSAGE TEXT #
- ["FILENAM VERSION - YY/MM/DD, HH.MM.SS."];
- ITEM FVER$PFN C(01,00,07); # ALTERNATE NLF PFN #
- ITEM FVER$DATE C(02,48,08); # CREATION DATE #
- ITEM FVER$TIME C(03,48,08); # CREATION TIME #
- ITEM FVER$TERM U(04,48,12) = [0]; # LINE TERMINATOR #
- END
- CONTROL EJECT;
- $BEGIN
- NS$DBG("HFI"); # TRACE CALL #
- $END
- REASON = 0;
- NPUNAME = CMD$NPUNAM[PAR$NPU]; # NPU NAME #
- IF NPUNAME NQ 0
- THEN # NPU NAME IS SPECIFIED IN COMMAND #
- BEGIN
- NPTCOUNT = NPT$EC[0]; # NPU TABLE ENTRY COUNT #
- NPTINDEX = 0; # NPU TABLE ENTRY INDEX #
- FOR I = 1 STEP 1 WHILE I LQ NPTCOUNT
- AND NPTINDEX EQ 0
- DO # SEARCH NPU TABLE FOR SPECIFIED NPU #
- BEGIN
- IF NPT$NPNAME[I] EQ NPUNAME
- THEN # NPU NAME MATCH, ENTRY FOUND #
- NPTINDEX = I; # SAVE NPU ENTRY INDEX #
- END
- IF NPTINDEX NQ 0
- THEN # FOUND SPECIFIED NPU #
- BEGIN
- IF CMD$WORD[PAR$NLF] NQ 0
- THEN # ALTERNATE NLF MUST BE SPECIFIED #
- BEGIN # TRY ATTACHING SPECIFIED FILE #
- PFN = NS$XZFN(CMD$NLFPFN[PAR$NLF]); # ZERO-FILLED PFN #
- UN = NS$XZFN(CMD$NLFUN[PAR$UN]); # ZERO-FILLED UN #
- PW = NS$XZFN(CMD$NLFPW[PAR$PW]); # ZERO-FILLED PASSWORD #
- IF CMD$WORD[PAR$PW] EQ 0
- THEN # USE DEFAULT PASSWORD FOR ATTACH CALL #
- CMD$NLFPW[PAR$PW] = "DEFAULT";
- STAT = ATTACH(PFN,PFN,UN,PW,1); # ATTACH SPECIFIED NLF #
- IF STAT EQ 0
- THEN # FILE ATTACH IS SUCCESSFUL #
- BEGIN # VALIDATE CCP LOAD FILE #
- REQTSB(L$ALFBUF,TSBFWA,TSBN); # GET CIO BUFFER #
- FET$LFN[0] = PFN; # SET LFN OF ALTERNATE LOAD FILE #
- FET$FIRST[0] = TSBFWA; # SET FET TO READ ALTERNATE NLF #
- FET$IN[0] = TSBFWA;
- FET$OUT[0] = TSBFWA;
- FET$LIMIT[0] = TSBFWA + L$ALFBUF;
- SKIPEI(ALF$FET); # SKIP FILE TILL EOI #
- SKIPB(ALF$FET,2); # POITION AT DIRECTORY RECORD #
- READ(ALF$FET); # READ NLF DIRECTORY RECORD #
- RECALL(ALF$FET); # WAIT TILL I/O COMPLETES #
- P<PRF$TABLE> = TSBFWA; # FWA OF PREFIX TABLE #
- P<DIR> = TSBFWA + PRF$7700L; # FWA OF NLF DIRECTORY #
- IF PRF$ID[0] EQ PRF$IDENT # PREFIX TABLE ID OK #
- AND DIR$FID[0] EQ LFN$NLF # FILE IDENTIFIER OK #
- THEN # VALID NLF #
- BEGIN
- IF NPT$NATTSB[NPTINDEX] EQ 0
- THEN # NPU CURRENTLY NOT ACTIVE, PROCEED #
- BEGIN
- FVER$PFN[0] = CMD$NLFPFN[PAR$NLF]; # FORMAT MESSAGE #
- FVER$DATE[0] = PRF$DATE[0]; # SET FILE CREATION DATE #
- FVER$TIME[0] = PRF$TIME[0]; # SET FILE CREATION TIME #
- NS$TKD(FILVERSION,L$FVERSION,1); # SEND LINE TO KDB #
- I = DIR$WC[0] + 1; # SIZE OF DIRECTORY RECORD #
- REQTSB(I,TSBFWA,DIRTSBN); # GET TSB FOR DIRECTORY #
- FET$OUT[0] = P<DIR>; # SET TO FWA OF DIRECTORY #
- P<DIR> = TSBFWA; # FWA OF DIRECTORY RECORD #
- READW(ALF$FET,DIR,I,STAT); # READ DIRECTORY TO TSB #
- IF NPT$ALFWD[NPTINDEX] NQ 0
- THEN # AN ALTERNATE NLF CURRENTLY EXISTS #
- BEGIN # RELEASE CURRENT NLF DIRECTORY TSB #
- RETTSB(NPT$DIRTSB[NPTINDEX]);
- FET$LFN[0] = NS$XZFN(NPT$ALFPFN[NPTINDEX]);
- RETERN(ALF$FET); # RETURN OLD ALTERNATE NLF #
- NPT$ALFWD[NPTINDEX] = 0; # CLEAR ALTERNATE NLF WORD#
- END
- NPT$ALFPFN[NPTINDEX] = CMD$NLFPFN[PAR$NLF];
- NPT$DIRTSB[NPTINDEX] = DIRTSBN; # SAVE DIR TSBN #
- RETTSB(TSBN); # RELEASE CIO BUFFER #
- END
- ELSE # NPU ACTIVE, CANNOT ACTION COMMAND #
- REASON = HOPCMDERR"NPUACTIVE";
- END
- ELSE # BAD NLF DIRECTORY RECORD #
- REASON = HOPCMDERR"NLFBAD"; # BAD NLF FILE FORMAT #
- END
- ELSE # FILE ATTACH IS NOT SUCCESSFUL #
- REASON = HOPCMDERR"NLFNAVAIL"; # NLF NOT AVAILABLE #
- END
- ELSE # ALTERNATE LOAD FILE IS NOT SPECIFIED #
- REASON = HOPCMDERR"NLFNSPEC";
- END
- ELSE # NPU NOT FOUND, SPECIFIED NPU NOT CONFIGURED #
- REASON = HOPCMDERR"NPUNCNFG";
- END
- ELSE # NPU MUST BE SPECIFIED IN COMMAND #
- REASON = HOPCMDERR"NPUNSPEC";
- RETURN;
- END # NS$HFI #
- TERM
cdc/nos2.source/nam5871/ns_hfi.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator