cdc:nos2.source:nam5871:netrel
Table of Contents
NETREL
Table Of Contents
Source Code
- NETREL.txt
- *DECK NETREL
- *IF,DEF,DEBUG
- USETEXT AIPDEF
- USETEXT NP$DB
- USETEXT NP$MODE
- USETEXT NP$NWL
- USETEXT NP$ZHDR
- *ENDIF
- PROC NETREL((LFN),(MSGLTH),(FRWD)); # INITIALIZE OR RELEASE ZZZZZDN #
- BEGIN
- *CALL NP$CRT
- *IF DEF,IMS
- #
- *1DC NETREL
- *
- * 1. PROC NAME AUTHOR DATE
- * NETREL E. GEE 86/01/20
- *
- * 2. FUNCTIONAL DESCRIPTION
- * ROUTE DEBUG LOG FILE TO INPUT QUEUE AND/OR WRITE JOB RECORD
- * TO DEBUG LOG FILE AND/OR UPDATE THE MAXIMUM NUMBER OF WORDS
- * OF TEXT THAT IS TO BE WRITTEN TO THE DEBUG LOG FILE.
- *
- * 3. METHOD USED
- * IF LFN IS NONZERO,
- * IF ZZZZZDN FILE ALREADY EXISTS,
- * CALL NP$WRTR TO WRITE END OF RECORD TO ZZZZZDN FILE.
- * IF NO I/O ERROR ON ZZZZZDN FILE,
- * SET UP DSP PARAMETER BLOCK.
- * CALL NP$ROUT TO ROUTE FILE TO INPUT QUEUE.
- * IF DSP ERROR,
- * CALL NP$MSG TO ISSUE INFORMATIVE DAYFILE MESSAGE.
- * ELSE (I/O ERROR OCCURRED WHEN END OF RECORD WAS WRITTEN),
- * CALL NP$MSG TO ISSUE INFORMATIVE DAYFILE MESSAGE.
- * IF I/O OR DSP ERROR ON ZZZZZDN FILE,
- * CALL NP$RETN TO RETURN FILE.
- * INITIALIZE FET.
- * IF REWIND OF JOB RECORD FILE IS NEEDED,
- * CALL NP$RWD TO REWIND JOB RECORD FILE.
- * IF NO I/O ERROR ON JOB RECORD FILE,
- * CALL NP$READ TO READ LOGICAL RECORD FROM JOB RECORD FILE.
- * 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 REC PLUS EOR TO DEBUG LOG FILE.
- * IF APPLICATION HAS NETTED ON,
- * CALL NP$RTIM TO GET SYSTEM RTIME.
- * CALL NP$CLK TO GET CURRENT CLOCK TIME.
- * CALL NP$DATE TO GET CURRENT DATE.
- * CREATE HEADER ENTRY FOR DEBUG LOG FILE.
- * CALL NP$WRTW TO WRITE HEADER ENTRY TO CIO BUFFER.
- * CALL NP$WRTR TO WRITE END OF RECORD TO DEBUG LOG FILE.
- * CALL NP$CLK TO GET CURRENT CLOCK TIME.
- * CALL NP$WRTO TO WRITE CLOCK TIME TO CIO BUFFER.
- * IF I/O ERROR HAS OCCURRED ON ZZZZZDN FILE,
- * CALL NP$PIOE TO PROCESS I/O ERROR.
- * IF MSGLTH GREATER THAN ZERO, MODIFY TRUNC. 1@TRUNC@410
- *
- * 4. ENTRY CONDITIONS
- * LFN - NAME OF A LOCAL FILE CONTAINING A JOB RECORD
- * MSGLTH - MAXIMUM NUMBER OF WORDS PER MESSAGE THAT CAN BE
- * WRITTEN TO ZZZZZDN FILE
- * FRWD - FLAG FOR REWINDING BEFORE READING
- * 0 FOR REWINDING FILE BEFORE READ
- * 1 FOR NO REWIND
- *
- * 5. EXIT CONDITIONS
- * DB$TRUNC - EQUAL TO MSGLTH IF MSGLTH IS GREATER THAN ZERO
- * ELSE 410
- * DB$FET - INITIALIZED,PREVIOUS ZZZZZDN FILE ROUTED TO INPUT
- *
- * 6. COMDECKS CALLED AND SYMPL TEXTS USED.
- * AIPDEF NP$CRT NP$DB NP$MODE
- * NP$NWL NP$ZHDR
- *
- * 7. PROCEDURES/FUNCTIONS CALLED
- * NP$CLK CLOCK TIME IN DISPLAY CODE
- * NP$DATE DATE IN DISPLAY CODE
- * NP$MSG ISSUE DAYFILE MESSAGE
- * NP$PIOE PROCESS I/O ERROR ON DEBUG LOG FILE
- * NP$READ READS A LOGICAL RECORD
- * NP$RETN RETURN FILE
- * NP$ROUT ROUTES A FILE TO INPUT
- * NP$RTIM REAL TIME SINCE DEADSTART IN SECONDS AND
- * MILLISECONDS
- * NP$RWD REWIND FILE
- * NP$WRTR CLOSES FILE BY WRITING EOR
- * NP$WRTW WRITES WORDS TO CIRCULAR IO BUFFER.
- *
- * 8. DAYFILE/DIAGNOSTIC MESSAGES
- * " READ ERROR ON FILE XXXXXXX - AT=YYB."
- * " REWIND ERROR ON FILE XXXXXXX - AT=YYB."
- * " ROUTE ERROR ON FILE ZZZZZDN - EC=YYB."
- * " WRITE ERROR ON FILE ZZZZZDN - AT=YYB."
- *
- #
- *ENDIF
- #
- FORMAL PARAMETERS
- #
- ITEM LFN C(10); # NAME OF LOCAL JOB RECORD #
- ITEM MSGLTH I; # MAX NO OF WORDS PER MESSAGE #
- ITEM FRWD B; # REWIND/NO REWIND OF LFN #
- *IF,DEF,DEBUG
- #
- ROUTINES CALLED
- #
- XREF
- BEGIN
- PROC NP$CLK; # CLOCK TIME IN DISPLAY CODE #
- PROC NP$DATE; # DATE IN DISPLAY CODE #
- PROC NP$MSG; # ISSUE DAYFILE MESSAGE #
- PROC NP$PIOE; # PROCESS I/O ERROR ON DISK FILE #
- PROC NP$READ; # READS A LOGICAL RECORD #
- PROC NP$RETN; # RETURN FILES #
- PROC NP$ROUT; # ROUTES A FILE #
- PROC NP$RTIM; # REAL TIME SINCE DEADSTART #
- PROC NP$RWD; # REWIND FILE #
- PROC NP$WRTR; # WRITE END OF RECORD #
- PROC NP$WRTW; # WRITE WORDS TO CIO BUFFER #
- PROC NP$WRTO; # WRITE ONE WORD #
- END
- #
- DEF-S
- #
- DEF JOTWRD$ # O"66" #; # WORD POSITION OF JOB ORIGIN TYPE #
- DEF SYOT$ # 0 #; # ORIGIN TYPE FOR SYSTEM ORIGIN JOB #
- #
- LOCAL VARIABLES
- #
- ITEM AT; # ABNORMAL TERMINATION CODE FROM READ #
- ITEM CHARWD C(10);
- ITEM DSPEC; # ERROR CODE RETURNED FROM DSP #
- ITEM I; # INDUCTION VARIABLE #
- ITEM TIMEWD;
- 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,02) = ["- "];
- ITEM ERRMSGC C(3,12,2); # NAME OF FIELD WITH ERROR CODE #
- ITEM ERRMSG6 C(3,24,1) = ["="];
- ITEM ERRMSGRC U(3,30,12); # ERROR CODE FROM DSP/CIO #
- ITEM ERRMSG7 C(3,42,3) = ["B. "];
- ITEM ERRMSGE U(4,0,60) = [0];
- END
- ARRAY PARAM P(7); # PARAMETER BLOCK TO ROUTE LFN TO INPUT #
- BEGIN
- ITEM PAR$NAME C(0,0,7)=["ZZZZZDN"];# NAME OF FILE BEING ROUTD#
- ITEM PAR$EC U(0,42,6); # ERROR CODE RESPONSE #
- ITEM PAR$F B(00,48,01); # FORCED ORIGIN FLAG #
- ITEM PAR$OT U(00,53,06); # FORCED JOB ORIGIN TYPE #
- ITEM PAR$CB B(0,59,1)=[FALSE]; # COMPLETE BIT #
- ITEM PAR$DISP C(1,24,2); # DISPOSITION OF FILE #
- ITEM PAR$EP B(1,47,1); # ERROR PROCESSING FLAG #
- ITEM PAR$DCF B(1,55,1); # DISPOSITION CODE SET FLAG #
- ITEM PAR$ID B(1,58,1); # ROUTE TO CENTRAL SITE #
- ITEM PAR$WD1 I(1,0,WL)=[0];
- ITEM PAR$WD2 I(2,0,WL)=[0];
- END
- BASED ARRAY JOT [00:00] S(1);
- BEGIN # JOB ORIGIN TYPE FIELD #
- ITEM JOT$TYPE U(00,24,12);
- END
- BASED ARRAY LFNNAME;
- BEGIN
- ITEM LFNAME C(0,0,10); # NAME OF LOCAL FILE #
- ITEM LFILE I(0,0,60); # =0 IF NO LOCAL FILE #
- END
- *ENDIF
- #**********************************************************************#
- #
- NETREL EXECUTION STARTS HERE
- #
- ENTRY PROC QTREL((LFN),(MSGLTH),(FRWD)); # QTRM ENTRY POINT #
- *IF,DEF,DEBUG
- DSPEC = 0; # INIT TO NO ERROR IN ROUTE CALL#
- P<LFNNAME> = LOC(LFN);
- IF LFILE[0] NQ 0
- THEN # THERE IS LOCAL FILE TO COPY #
- BEGIN
- DB$JR = TRUE; # SET JOB RECORD FILE EXIST FLAG#
- FOR I = 0 STEP 1 UNTIL 6
- DO # CONVERT ZEROS INTO BLANKS #
- BEGIN
- IF B<I*6,6>LFNAME[0] EQ 0
- THEN # BIN ZERO TO CONVERT TO BLANK #
- BEGIN
- C<I,1>DB$LFN = " "; # REPLACE WITH BLANK #
- END
- ELSE # LETTER IN NAME #
- BEGIN
- C<I,1>DB$LFN = C<I,1>LFNAME[0]; # COPY LETTER #
- END
- END
- DB$RWD = NOT FRWD; # SET REWIND JOB RECORD FILE FLG#
- IF FET$LFN[0] EQ "ZZZZZDN" # FILE ZZZZZDN ALREADY EXISTS #
- THEN # ROUTE ZZZZZDN FILE TO INPUT #
- BEGIN
- NP$WRTR(DB$FET,1); # WRITE EOR ON FILE ZZZZZDN #
- AT = FET$AT[0]; # ABNORMAL TERMINATION CODE #
- IF AT EQ 0
- THEN # NO RMS I/O ERROR HAS OCCURRED #
- BEGIN
- P<JOT> = JOTWRD$; # GET JOB ORIGIN TYPE #
- IF JOT$TYPE EQ SYOT$
- THEN # IF THIS IS A SYSTEM ORIGIN JOB#
- BEGIN
- PAR$F[0] = TRUE; # SET ROUTE TO SYSTEM ORIGIN #
- PAR$OT[0] = SYOT$;
- END
- ELSE #THIS IS NOT A SYSTEM ORIGIN JOB#
- BEGIN
- PAR$F[0] = FALSE; # SET ROUTE TO DEFAULT ORIGIN #
- END
- PAR$CB[0] = FALSE;
- PAR$DISP[0] = "IN"; # ROUTE TO INPUT QUEUE #
- PAR$EP[0] = TRUE; # ERROR PROCESSING FLAG #
- PAR$DCF[0] = TRUE;
- PAR$ID[0] = TRUE;
- NP$ROUT(PARAM,1); # ROUTE ZZZZZDN FILE #
- DSPEC = PAR$EC[0]; # ERROR CODE RESPONSE FROM DSP #
- IF DSPEC NQ 0
- THEN # ROUTE FAILED DUE TO ERROR #
- BEGIN
- ERRMSGT[0] = " ROUTE "; # ADD ROUTE TO DAYFILE MESSAGE #
- ERRMSGF[0] = "ZZZZZDN"; # NAME OF FILE ROUTED #
- ERRMSGC[0] = "EC"; # NAME OF FIELD CONTAINING RC #
- ERRMSGRC[0] = ((DSPEC/8)+27)*64 + DSPEC - (DSPEC/8)*8+27;
- NP$MSG(ERRMSG,3);
- END
- # NSUPWRD BASED ARRAY POINTER TO THE USER COMMUNICATION WORD
- WAS SET BY NETON. THE ARRAY IS LOCATED IN NP$NWL COMDECK.
- ZERO MESSAGE COUNTER FIELD IN NSUP COMMUNICATION WORD.
- #
- MSGCNT[0] = 0;
- #
- RESET THRESHOLD VALUE FOR WRITING EOR TO LOGFILE.
- #
- DB$ERCT = 500;
- END
- ELSE # WRITE ERROR OCCURRED ON FILE #
- BEGIN
- ERRMSGT[0] = " WRITE "; # ADD WRITE TO DAYFILE MESSAGE #
- ERRMSGF[0] = "ZZZZZDN"; # NAME OF FILE WITH WRITE ERROR #
- ERRMSGC[0] = "AT"; # NAME OF FIELD CONTAINING RC #
- ERRMSGRC[0] = ((AT/8) + 27)*64 + AT - (AT/8)*8 + 27;
- NP$MSG(ERRMSG,3); # ISSUE DAYFILE MESSAGE #
- END
- IF (DSPEC NQ 0) OR # ROUTE OF FILE ZZZZZDN FAILED #
- (AT NQ 0 ) # WRITE TO FILE ZZZZZDN FAILED #
- THEN # NEED TO GET RID OF BAD FILE #
- BEGIN
- NP$RETN(DB$FET); # RETURN TRACE FILE #
- END
- END
- #
- INITIALIZE FET
- #
- FET$LN[0] = 0; # INITIALIZE LEVEL NUMBER FIELD #
- FET$AT[0] = 0; # INIT ABNORMAL TERM CODE FIELD #
- FET$CODE[0] = 1; # SET COMPLETION BIT #
- FET$LEN[0] = 3; # SET FET LENGTH #
- TIMEWD = LOC(DB$BUF); # TIMEWD USED AS A TEMPORARY STO#
- FET$FIRST[0] = TIMEWD; # INITIALIZE CIRCULAR BUFFER PTR#
- FET$IN[0] = TIMEWD;
- FET$OUT[0] = TIMEWD;
- FET$LIMIT[0] = TIMEWD + 192;
- #
- COPY JOB RECORD TO ZZZZZDN FILE
- #
- AT = 0; # INITIALIZE ABNORMAL TERM FLAG #
- FET$LFN[0] = LFNAME[0]; # LFN OF JOB RECORD FILE #
- IF NOT FRWD
- THEN # NEED TO REWIND JOB RECORD FILE#
- BEGIN
- NP$RWD(DB$FET); # REWIND FILE TO BOI #
- ERRMSGT[0] = " REWIND"; # TYPE OF FUNCTION PERFORMED #
- AT = FET$AT[0]; # ABNORMAL TERMINATION CODE #
- END
- IF AT EQ 0
- THEN # NO I/O ERROR ON JOB REC FILE #
- BEGIN
- NP$READ(DB$FET,1); # READ LOGICAL RECORD OF LFN #
- IF (FET$AT[0] NQ 0) AND # NO ABNORMAL TERMINATION CODE #
- (FET$AT[0] NQ 1) # EOI NOT ENCOUNTERED #
- THEN # NO ERROR OCCURRED ON READ #
- BEGIN
- ERRMSGT[0] = " READ "; # TYPE OF FUNCTION PERFORMED #
- AT = FET$AT[0]; # ABNORMAL TERMINATION CODE #
- END
- END
- FET$LFN = "ZZZZZDN"; # RESET FILE NAME IN FET #
- FET$AT[0] = 0;
- FET$LN[0] = 0; # INITIALIZE LEVEL NUMBER FIELD #
- IF AT NQ 0
- THEN # ISSUE DAYFILE MSG FOR I/O ERR #
- BEGIN
- ERRMSGF[0] = DB$LFN; # NAME OF FILE WITH READ ERROR #
- ERRMSGC[0] = "AT"; # NAME OF FIELD CONTAINING RC #
- ERRMSGRC[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(DB$FET,1); # WRITE EOR TO FILE ZZZZZDN #
- END
- IF ACCEPTED # APP HAS NETTED ON #
- THEN # CREATE TRACE FILE HEADER REC #
- BEGIN
- NP$RTIM(TIMEWD); # REAL TIME SINCE DEADSTART #
- ZH$TIM[0] = TIMEWD;
- NP$CLK(CHARWD); # CLOCK TIME #
- ZH$CLK[0] = CHARWD;
- NP$DATE(CHARWD); # DATE #
- ZH$DATE = CHARWD;
- NP$WRTW(DB$FET,ZHDR,4); # COPY HEADER TO ZZZZZDN FILE #
- NP$WRTR(DB$FET,1); # WRITE END OF RECORD #
- NP$CLK(CHARWD); # CLOCK TIME #
- NP$WRTO(DB$FET,CHARWD); # WRITE TIME STAMP #
- END # DEBUG LOG FILE HEADER WRITTEN #
- IF FET$AT[0] NQ 0
- THEN # RMS I/O ERROR HAS OCCURRED #
- BEGIN
- NP$PIOE(DB$FET); # PROCESS I/O ERROR #
- END
- END
- #
- UPDATE DB$TRUNC
- #
- IF MSGLTH GR 0
- THEN
- BEGIN
- IF MSGLTH GR 410
- THEN
- MSGLTH = 410;
- DB$TRUNC = MSGLTH;
- END
- *ENDIF
- RETURN;
- END # NETREL #
- TERM
cdc/nos2.source/nam5871/netrel.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator