cdc:nos2.source:nam5871:np_pioe
Table of Contents
NP$PIOE
Table Of Contents
- [00005] PROC NP$PIOE(FET)
- [00101] PROC NP$BKSP
- [00102] PROC NP$CLK
- [00103] PROC NP$DATE
- [00104] PROC NP$MSG
- [00105] PROC NP$READ
- [00106] PROC NP$RETN
- [00107] PROC NP$RTIM
- [00108] PROC NP$RWD
- [00109] PROC NP$WRTO
- [00110] PROC NP$WRTR
- [00111] PROC NP$WRTW
Source Code
- NP$PIOE.txt
- *DECK NP$PIOE
- USETEXT AIPDEF
- USETEXT NP$DB
- USETEXT NP$ZHDR
- PROC NP$PIOE(FET); # PROCESS I/O ERROR AFTER WRITE FUNCTION #
- *IF,DEF,IMS
- #
- *1DC NP$PIOE
- *
- * 1. SUBROUTINE AUTHOR DATE
- * NP$PIOE E. GEE 86/01/28
- *
- * 2. FUNCTIONAL DESCRIPTION.
- * PROCESS I/O ERROR AFTER WRITE OPERATION ON AIP FILE.
- *
- * 3. METHOD USED.
- * CALL NP$MSG TO ISSUE INFORMATIVE DAYFILE MESSAGE.
- * CALL NP$RETN TO RETURN FILE.
- * REINITIALIZE FET.
- * IF FILE IS AIP DEBUG LOG FILE,
- * IF JOB RECORD FILE EXISTS,
- * IF JOB RECORD FILE NEEDS TO BE REWOUND,
- * CALL NP$RWD TO REWIND JOB RECORD FILE.
- * ELSE (JOB RECORD FILE SHOULD NOT BE REWOUND),
- * CALL NP$BKSP TO BACKSPACE TO PREVIOUS RECORD ON FILE.
- * IF NO I/O ERROR ON JOB RECORD FILE,
- * CALL NP$READ TO READ UP JOB RECORD.
- * IF I/O ERROR ON JOB RECORD FILE,
- * CALL NP$MSG TO ISSUE INFORMATIVE DAYFILE MESSAGE.
- * ELSE (NO I/O ERROR ON JOB RECORD FILE),
- * CALL NP$WRTR TO WRITE JOB RECORD + EOR TO TRACE FILE.
- * CALL NP$RTIM TO GET SYSTEM RTIME.
- * CALL NP$CLK TO GET CURRENT CLOCK TIME.
- * CALL NP$DATE TO GET TODAY'S DATE.
- * CREATE HEADER ENTRY.
- * CALL NP$WRTW TO WRITE OUT HEADER ENTRY TO CIO BUFFER.
- * CALL NP$WRTR TO WRITE END OF RECORD TO FILE.
- * CALL NP$WRTO TO WRITE CLOCK TIME TO CIO BUFFER.
- *
- * 4. ENTRY PARAMETERS.
- * DB$JR TRUE IF JOB RECORD FILE EXISTS
- * DB$LFN LFN OF JOB RECORD FILE IF ONE EXISTS
- * DB$RWD TRUE IF JOB RECORD FILE NEEDS TO BE REWOUND
- * FET FET OF FILE WHICH GOT I/O ERROR
- *
- * 5. EXIT PARAMETERS.
- * NONE.
- *
- * 6. COMMON DECKS CALLED AND SYMPL TEXT USED.
- * AIPDEF AIP CONSTANT DEFINITIONS
- * NP$DB DEBUG LOG FILE BUFFER
- * NP$CRT CONTROL DATA COPYRIGHT
- * NP$ZHDR AIP DEBUG LOG FILE HEADER ENTRY
- *
- * 7. SUBROUTINES AND MACROS CALLED.
- * NP$BKSP BACKSPACE FILE ONE LOGICAL RECORD
- * NP$CLK GET CURRENT CLOCK TIME
- * NP$DATE GET TODAY'S DATE
- * NP$MSG ISSUE DAYFILE MESSAGE
- * NP$READ READ DATA FROM FILE
- * NP$RETN RETURN FILE TO SYSTEM
- * NP$RWD REWIND FILE
- * NP$RTIM GET SYSTEM RTIME
- * NP$WRTO WRITE SINGLE WORD FROM WSA TO CIO BUFFER
- * NP$WRTR WRITE END OF RECORD TO FILE
- * NP$WRTW WRITE DATA FROM WSA TO CIO BUFFER
- *
- * 8. DAYFILE MESSAGES.
- * " BKSP ERROR ON FILE XXXXXXX - AT=YYB."
- * " READ ERROR ON FILE XXXXXXX - AT=YYB."
- * " REWIND ERROR ON FILE XXXXXXX - AT=YYB."
- * " WRITE ERROR ON FILE ZZZZZDN - AT=YYB."
- *
- #
- *ENDIF
- BEGIN
- #
- INPUT PARAMETERS
- #
- ARRAY FET S(8);
- BEGIN
- ITEM FETLFN C(0,00,07); # LOCAL FILE NAME #
- ITEM FETLN U(0,42,04); # LEVEL NUMBER #
- ITEM FETAT U(0,46,05); # ABNORMAL TERMINATION CODE #
- ITEM FETCODE U(0,51,08); # REQUEST/RETURN CODE #
- ITEM FETUP B(1,14,01); # USER PROCESSING FLAG #
- ITEM FETEP B(1,15,01); # ERROR PROCESSING FLAG #
- ITEM FETFB B(1,23,01); # FLUSH BIT #
- ITEM FETLEN U(1,36,06); # NO OF ADDITIONA WORDS IN FET #
- ITEM FETFIRST U(1,42,18); # FWA OF CIO BUFFER #
- ITEM FETWD1 U(1,00,60);
- ITEM FETIN U(2,42,18); # IN PTR FOR CIO BUFFER #
- ITEM FETOUT U(3,42,18); # OUT PTR FOR CIO BUFFER #
- ITEM FETLIMIT U(4,42,18); # LWA+1 OF CIO BUFFER #
- END
- #
- EXTERNAL ROUTINES CALLED
- #
- XREF
- BEGIN
- PROC NP$BKSP; # BACKSPACE FILE 1 LOGICAL REC #
- PROC NP$CLK; # GET CURRENT CLOCK TIME #
- PROC NP$DATE; # GET CURRENT DATE #
- PROC NP$MSG; # ISSUE DAYFILE MESSAGE #
- PROC NP$READ; # READ DATA FROM FILE #
- PROC NP$RETN; # RETURN FILE TO SYSTEM #
- PROC NP$RTIM; # GET SYSTEM RTIME #
- PROC NP$RWD; # REWIND FILE #
- PROC NP$WRTO; # WRITE 1 WD FROM WSA TO CIO BUF#
- PROC NP$WRTR; # WRITE END OF REC TO FILE #
- PROC NP$WRTW; # WRITE DATA FROM WSA TO CIO BUF#
- END
- *IF DEF,DEBUG
- #
- LOCAL VARIABLES
- #
- ARRAY ERRMSG S(5); # ERROR MESSAGE IF ROUTE FAILS #
- BEGIN
- ITEM ERRMSGT C(0,0,07); # TYPE OF FUNCTION PERFORMED ON FILE #
- ITEM ERRMSG1 C(0,42,3) = [" ER"];
- ITEM ERRMSG2 C(1,0,10) = ["ROR ON FIL"];
- ITEM ERRMSG3 C(2,0,02) = ["E "];
- ITEM ERRMSGF C(2,12,7); # NAME OF FILE WITH ERROR #
- ITEM ERRMSG4 C(2,54,6) = [" "];
- ITEM ERRMSG5 C(3,0,05) = ["- AT="];
- ITEM ERRMSGAT U(3,30,12); # ERROR CODE FROM CIO #
- ITEM ERRMSG6 C(3,42,3) = ["B. "];
- ITEM ERRMSGE U(4,0,60) = [0];
- END
- ITEM AT; # ABNORMAL TERM CODE FROM CIO #
- ITEM TIMEWD; # WORD TO CONTAIN CURRENT RTIME #
- ITEM CHARWD C(10); # WORD TO CONTAIN CLOCK/DATE #
- #**********************************************************************#
- #
- EXECUTABLE CODE BEGINS HERE
- #
- #
- ISSUE INFORMATIVE DAYFILE MESSAGE
- #
- ERRMSGT[0] = " WRITE "; # TYPE OF FUNCTION PERFORMED #
- ERRMSGF[0] = FETLFN[0]; # STORE LOCAL FILE NAME IN MSG #
- ERRMSGAT[0] = ((FETAT[0]/8)+27)*64 + FETAT[0] - (FETAT[0]/8)*8+27;
- NP$MSG(ERRMSG,3); # ISSUE DAYFILE MESSAGE #
- #
- RETURN FILE WITH I/O ERROR
- #
- FETCODE[0] = 0; # CLEAR FET REQUEST/RETURN CODE #
- FETAT[0] = 0; # CLEAR ABNORMAL TERM CODE FIELD#
- NP$RETN(FET); # RETURN FILE TO SYSTEM #
- #
- REINITIALIZE FET
- #
- FETLN[0] = 0; # INITIALIZE LEVEL NUMBER FIELD #
- FETAT[0] = 0; # INITIALIZE ABNORMAL TERM FIELD#
- FETCODE[0] = 0; # INITIALIZE REQUEST/RETURN CODE#
- FETIN[0] = FETFIRST[0]; # INITIALIZE FET IN POINTER #
- FETOUT[0] = FETFIRST[0]; # INITIALIZE FET OUT POINTER #
- #
- , CHECK IF FILE IS AIP DEBUG LOG FILE
- #
- IF FETLFN[0] EQ "ZZZZZDN"
- THEN # AIP DEBUG LOG FILE HAD I/O ERR#
- BEGIN
- IF DB$JR
- THEN # NEED TO TRY TO COPY JOB RECORD#
- BEGIN
- FETLFN[0] = DB$LFN; # LFN OF JOB RECORD FILE #
- IF DB$RWD
- THEN # NEED TO REWIND JOB RECORD FILE#
- BEGIN
- NP$RWD(FET); # REWIND FILE TO BOI #
- ERRMSGT[0] = " REWIND"; # TYPE OF FUNCTION PERFORMED #
- END
- ELSE # NEED TO BACKSPACE JOB REC FILE#
- BEGIN
- NP$BKSP(FET); # BACKSPACE FILE ONE LOGICAL REC#
- ERRMSGT[0] = " BKSP "; # TYPE OF FUNCTION PERFORMED #
- END
- AT = FETAT[0]; # CIO ABNORMAL TERMINATION CODE #
- IF AT EQ 0
- THEN # NO I/O ERROR ON JOB REC FILE #
- BEGIN
- NP$READ(FET,1); # READ LOGICAL RECORD OF LFN #
- IF (FETAT[0] NQ 0) AND # NO ABNORMAL TERMINATION CODE #
- (FETAT[0] NQ 1) # EOI NOT ENCOUNTERED #
- THEN # NO ERROR OCCURRED ON READ #
- BEGIN
- ERRMSGT[0] = " READ "; # TYPE OF FUNCTION PERFORMED #
- AT = FETAT[0]; # ABNORMAL TERMINATION CODE #
- END
- END
- FETLFN = "ZZZZZDN"; # RESET FILE NAME IN FET #
- FETAT[0] = 0;
- FETLN[0] = 0; # INITIALIZE LEVEL NUMBER FIELD #
- IF AT NQ 0
- THEN # ISSUE DAYFILE MSG FOR I/O ERR #
- BEGIN
- ERRMSGF[0] = DB$LFN; # FILE NAME #
- ERRMSGAT[0] = ((AT/8)+27)*64 + AT - (AT/8)*8 + 27;
- NP$MSG(ERRMSG,3); # ISSUE DAYFILE MESSAGE #
- END
- ELSE # JOB RECORD WAS NOT READ #
- BEGIN
- NP$WRTR(FET,1); # WRITE EOR TO FILE ZZZZZDN #
- END
- END
- NP$RTIM(TIMEWD); # GET SYSTEM RTIME #
- ZH$TIM[0] = TIMEWD; # STORE IN LOG FILE HEADER ENTRY#
- NP$CLK(CHARWD); # GET CURRENT CLOCK TIME #
- ZH$CLK[0] = CHARWD; # STORE CLOCK TIME IN HDR ENTRY #
- NP$DATE(CHARWD); # GET CURRENT DATE #
- ZH$DATE[0] = CHARWD; # STORE DATE IN HEADER ENTRY #
- NP$WRTW(FET,ZHDR,4); # WRITE HDR ENTRY TO CIO BUFFER #
- NP$WRTR(FET,1); # WRITE END OF RECORD TO FILE #
- NP$CLK(CHARWD); # GET CURRENT CLOCK TIME #
- NP$WRTO(FET,CHARWD); # WRITE CLOCK TIME IN CIO BUFFER#
- END
- *ENDIF
- END
- TERM
cdc/nos2.source/nam5871/np_pioe.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator