User Tools

Site Tools


cdc:nos2.source:nam5871:netrel

โˆ’Table of Contents

NETREL

Table Of Contents

  • [00009] PROC NETREL1)
  • [00110] PROC NP$CLK
  • [00111] PROC NP$DATE
  • [00112] PROC NP$MSG
  • [00113] PROC NP$PIOE
  • [00114] PROC NP$READ
  • [00115] PROC NP$RETN
  • [00116] PROC NP$ROUT
  • [00117] PROC NP$RTIM
  • [00118] PROC NP$RWD
  • [00119] PROC NP$WRTR
  • [00120] PROC NP$WRTW
  • [00121] PROC NP$WRTO
  • [00185] ENTRY PROC QTREL2)

Source Code

NETREL.txt
  1. *DECK NETREL
  2. *IF,DEF,DEBUG
  3. USETEXT AIPDEF
  4. USETEXT NP$DB
  5. USETEXT NP$MODE
  6. USETEXT NP$NWL
  7. USETEXT NP$ZHDR
  8. *ENDIF
  9. PROC NETREL((LFN),(MSGLTH),(FRWD)); # INITIALIZE OR RELEASE ZZZZZDN #
  10. BEGIN
  11. *CALL NP$CRT
  12. *IF DEF,IMS
  13. #
  14. *1DC NETREL
  15. *
  16. * 1. PROC NAME AUTHOR DATE
  17. * NETREL E. GEE 86/01/20
  18. *
  19. * 2. FUNCTIONAL DESCRIPTION
  20. * ROUTE DEBUG LOG FILE TO INPUT QUEUE AND/OR WRITE JOB RECORD
  21. * TO DEBUG LOG FILE AND/OR UPDATE THE MAXIMUM NUMBER OF WORDS
  22. * OF TEXT THAT IS TO BE WRITTEN TO THE DEBUG LOG FILE.
  23. *
  24. * 3. METHOD USED
  25. * IF LFN IS NONZERO,
  26. * IF ZZZZZDN FILE ALREADY EXISTS,
  27. * CALL NP$WRTR TO WRITE END OF RECORD TO ZZZZZDN FILE.
  28. * IF NO I/O ERROR ON ZZZZZDN FILE,
  29. * SET UP DSP PARAMETER BLOCK.
  30. * CALL NP$ROUT TO ROUTE FILE TO INPUT QUEUE.
  31. * IF DSP ERROR,
  32. * CALL NP$MSG TO ISSUE INFORMATIVE DAYFILE MESSAGE.
  33. * ELSE (I/O ERROR OCCURRED WHEN END OF RECORD WAS WRITTEN),
  34. * CALL NP$MSG TO ISSUE INFORMATIVE DAYFILE MESSAGE.
  35. * IF I/O OR DSP ERROR ON ZZZZZDN FILE,
  36. * CALL NP$RETN TO RETURN FILE.
  37. * INITIALIZE FET.
  38. * IF REWIND OF JOB RECORD FILE IS NEEDED,
  39. * CALL NP$RWD TO REWIND JOB RECORD FILE.
  40. * IF NO I/O ERROR ON JOB RECORD FILE,
  41. * CALL NP$READ TO READ LOGICAL RECORD FROM JOB RECORD FILE.
  42. * IF I/O ERROR ON JOB RECORD FILE,
  43. * CALL NP$MSG TO ISSUE INFORMATIVE DAYFILE MESSAGE.
  44. * ELSE (NO I/O ERROR ON JOB RECORD FILE),
  45. * CALL NP$WRTR TO WRITE JOB REC PLUS EOR TO DEBUG LOG FILE.
  46. * IF APPLICATION HAS NETTED ON,
  47. * CALL NP$RTIM TO GET SYSTEM RTIME.
  48. * CALL NP$CLK TO GET CURRENT CLOCK TIME.
  49. * CALL NP$DATE TO GET CURRENT DATE.
  50. * CREATE HEADER ENTRY FOR DEBUG LOG FILE.
  51. * CALL NP$WRTW TO WRITE HEADER ENTRY TO CIO BUFFER.
  52. * CALL NP$WRTR TO WRITE END OF RECORD TO DEBUG LOG FILE.
  53. * CALL NP$CLK TO GET CURRENT CLOCK TIME.
  54. * CALL NP$WRTO TO WRITE CLOCK TIME TO CIO BUFFER.
  55. * IF I/O ERROR HAS OCCURRED ON ZZZZZDN FILE,
  56. * CALL NP$PIOE TO PROCESS I/O ERROR.
  57. * IF MSGLTH GREATER THAN ZERO, MODIFY TRUNC. 1@TRUNC@410
  58. *
  59. * 4. ENTRY CONDITIONS
  60. * LFN - NAME OF A LOCAL FILE CONTAINING A JOB RECORD
  61. * MSGLTH - MAXIMUM NUMBER OF WORDS PER MESSAGE THAT CAN BE
  62. * WRITTEN TO ZZZZZDN FILE
  63. * FRWD - FLAG FOR REWINDING BEFORE READING
  64. * 0 FOR REWINDING FILE BEFORE READ
  65. * 1 FOR NO REWIND
  66. *
  67. * 5. EXIT CONDITIONS
  68. * DB$TRUNC - EQUAL TO MSGLTH IF MSGLTH IS GREATER THAN ZERO
  69. * ELSE 410
  70. * DB$FET - INITIALIZED,PREVIOUS ZZZZZDN FILE ROUTED TO INPUT
  71. *
  72. * 6. COMDECKS CALLED AND SYMPL TEXTS USED.
  73. * AIPDEF NP$CRT NP$DB NP$MODE
  74. * NP$NWL NP$ZHDR
  75. *
  76. * 7. PROCEDURES/FUNCTIONS CALLED
  77. * NP$CLK CLOCK TIME IN DISPLAY CODE
  78. * NP$DATE DATE IN DISPLAY CODE
  79. * NP$MSG ISSUE DAYFILE MESSAGE
  80. * NP$PIOE PROCESS I/O ERROR ON DEBUG LOG FILE
  81. * NP$READ READS A LOGICAL RECORD
  82. * NP$RETN RETURN FILE
  83. * NP$ROUT ROUTES A FILE TO INPUT
  84. * NP$RTIM REAL TIME SINCE DEADSTART IN SECONDS AND
  85. * MILLISECONDS
  86. * NP$RWD REWIND FILE
  87. * NP$WRTR CLOSES FILE BY WRITING EOR
  88. * NP$WRTW WRITES WORDS TO CIRCULAR IO BUFFER.
  89. *
  90. * 8. DAYFILE/DIAGNOSTIC MESSAGES
  91. * " READ ERROR ON FILE XXXXXXX - AT=YYB."
  92. * " REWIND ERROR ON FILE XXXXXXX - AT=YYB."
  93. * " ROUTE ERROR ON FILE ZZZZZDN - EC=YYB."
  94. * " WRITE ERROR ON FILE ZZZZZDN - AT=YYB."
  95. *
  96.  #
  97. *ENDIF
  98. #
  99.   FORMAL PARAMETERS
  100. #
  101. ITEM LFN C(10); # NAME OF LOCAL JOB RECORD #
  102. ITEM MSGLTH I; # MAX NO OF WORDS PER MESSAGE #
  103. ITEM FRWD B; # REWIND/NO REWIND OF LFN #
  104. *IF,DEF,DEBUG
  105. #
  106.   ROUTINES CALLED
  107. #
  108. XREF
  109. BEGIN
  110. PROC NP$CLK; # CLOCK TIME IN DISPLAY CODE #
  111. PROC NP$DATE; # DATE IN DISPLAY CODE #
  112. PROC NP$MSG; # ISSUE DAYFILE MESSAGE #
  113. PROC NP$PIOE; # PROCESS I/O ERROR ON DISK FILE #
  114. PROC NP$READ; # READS A LOGICAL RECORD #
  115. PROC NP$RETN; # RETURN FILES #
  116. PROC NP$ROUT; # ROUTES A FILE #
  117. PROC NP$RTIM; # REAL TIME SINCE DEADSTART #
  118. PROC NP$RWD; # REWIND FILE #
  119. PROC NP$WRTR; # WRITE END OF RECORD #
  120. PROC NP$WRTW; # WRITE WORDS TO CIO BUFFER #
  121. PROC NP$WRTO; # WRITE ONE WORD #
  122. END
  123. #
  124.   DEF-S
  125. #
  126. DEF JOTWRD$ # O"66" #; # WORD POSITION OF JOB ORIGIN TYPE #
  127. DEF SYOT$ # 0 #; # ORIGIN TYPE FOR SYSTEM ORIGIN JOB #
  128. #
  129.   LOCAL VARIABLES
  130. #
  131. ITEM AT; # ABNORMAL TERMINATION CODE FROM READ #
  132. ITEM CHARWD C(10);
  133. ITEM DSPEC; # ERROR CODE RETURNED FROM DSP #
  134. ITEM I; # INDUCTION VARIABLE #
  135. ITEM TIMEWD;
  136.  
  137. ARRAY ERRMSG S(5); # ERROR MESSAGE IF ROUTE FAILS #
  138. BEGIN
  139. ITEM ERRMSGT C(0,0,07); # TYPE OF FUNCTION PERFORMED ON FILE #
  140. ITEM ERRMSG1 C(0,42,3) = [" ER"];
  141. ITEM ERRMSG2 C(1,0,10) = ["ROR ON FIL"];
  142. ITEM ERRMSG3 C(2,0,02) = ["E "];
  143. ITEM ERRMSGF C(2,12,7); # NAME OF FILE WITH ERROR #
  144. ITEM ERRMSG4 C(2,54,6) = [" "];
  145. ITEM ERRMSG5 C(3,0,02) = ["- "];
  146. ITEM ERRMSGC C(3,12,2); # NAME OF FIELD WITH ERROR CODE #
  147. ITEM ERRMSG6 C(3,24,1) = ["="];
  148. ITEM ERRMSGRC U(3,30,12); # ERROR CODE FROM DSP/CIO #
  149. ITEM ERRMSG7 C(3,42,3) = ["B. "];
  150. ITEM ERRMSGE U(4,0,60) = [0];
  151. END
  152.  
  153. ARRAY PARAM P(7); # PARAMETER BLOCK TO ROUTE LFN TO INPUT #
  154. BEGIN
  155. ITEM PAR$NAME C(0,0,7)=["ZZZZZDN"];# NAME OF FILE BEING ROUTD#
  156. ITEM PAR$EC U(0,42,6); # ERROR CODE RESPONSE #
  157. ITEM PAR$F B(00,48,01); # FORCED ORIGIN FLAG #
  158. ITEM PAR$OT U(00,53,06); # FORCED JOB ORIGIN TYPE #
  159. ITEM PAR$CB B(0,59,1)=[FALSE]; # COMPLETE BIT #
  160. ITEM PAR$DISP C(1,24,2); # DISPOSITION OF FILE #
  161. ITEM PAR$EP B(1,47,1); # ERROR PROCESSING FLAG #
  162. ITEM PAR$DCF B(1,55,1); # DISPOSITION CODE SET FLAG #
  163. ITEM PAR$ID B(1,58,1); # ROUTE TO CENTRAL SITE #
  164. ITEM PAR$WD1 I(1,0,WL)=[0];
  165. ITEM PAR$WD2 I(2,0,WL)=[0];
  166. END
  167.  
  168. BASED ARRAY JOT [00:00] S(1);
  169. BEGIN # JOB ORIGIN TYPE FIELD #
  170. ITEM JOT$TYPE U(00,24,12);
  171. END
  172.  
  173. BASED ARRAY LFNNAME;
  174. BEGIN
  175. ITEM LFNAME C(0,0,10); # NAME OF LOCAL FILE #
  176. ITEM LFILE I(0,0,60); # =0 IF NO LOCAL FILE #
  177. END
  178.  
  179. *ENDIF
  180. #**********************************************************************#
  181. #
  182.   NETREL EXECUTION STARTS HERE
  183. #
  184.  
  185. ENTRY PROC QTREL((LFN),(MSGLTH),(FRWD)); # QTRM ENTRY POINT #
  186.  
  187. *IF,DEF,DEBUG
  188. DSPEC = 0; # INIT TO NO ERROR IN ROUTE CALL#
  189. P<LFNNAME> = LOC(LFN);
  190. IF LFILE[0] NQ 0
  191. THEN # THERE IS LOCAL FILE TO COPY #
  192. BEGIN
  193. DB$JR = TRUE; # SET JOB RECORD FILE EXIST FLAG#
  194. FOR I = 0 STEP 1 UNTIL 6
  195. DO # CONVERT ZEROS INTO BLANKS #
  196. BEGIN
  197. IF B<I*6,6>LFNAME[0] EQ 0
  198. THEN # BIN ZERO TO CONVERT TO BLANK #
  199. BEGIN
  200. C<I,1>DB$LFN = " "; # REPLACE WITH BLANK #
  201. END
  202. ELSE # LETTER IN NAME #
  203. BEGIN
  204. C<I,1>DB$LFN = C<I,1>LFNAME[0]; # COPY LETTER #
  205. END
  206. END
  207. DB$RWD = NOT FRWD; # SET REWIND JOB RECORD FILE FLG#
  208. IF FET$LFN[0] EQ "ZZZZZDN" # FILE ZZZZZDN ALREADY EXISTS #
  209. THEN # ROUTE ZZZZZDN FILE TO INPUT #
  210. BEGIN
  211. NP$WRTR(DB$FET,1); # WRITE EOR ON FILE ZZZZZDN #
  212. AT = FET$AT[0]; # ABNORMAL TERMINATION CODE #
  213. IF AT EQ 0
  214. THEN # NO RMS I/O ERROR HAS OCCURRED #
  215. BEGIN
  216. P<JOT> = JOTWRD$; # GET JOB ORIGIN TYPE #
  217. IF JOT$TYPE EQ SYOT$
  218. THEN # IF THIS IS A SYSTEM ORIGIN JOB#
  219. BEGIN
  220. PAR$F[0] = TRUE; # SET ROUTE TO SYSTEM ORIGIN #
  221. PAR$OT[0] = SYOT$;
  222. END
  223. ELSE #THIS IS NOT A SYSTEM ORIGIN JOB#
  224. BEGIN
  225. PAR$F[0] = FALSE; # SET ROUTE TO DEFAULT ORIGIN #
  226. END
  227. PAR$CB[0] = FALSE;
  228. PAR$DISP[0] = "IN"; # ROUTE TO INPUT QUEUE #
  229. PAR$EP[0] = TRUE; # ERROR PROCESSING FLAG #
  230. PAR$DCF[0] = TRUE;
  231. PAR$ID[0] = TRUE;
  232. NP$ROUT(PARAM,1); # ROUTE ZZZZZDN FILE #
  233. DSPEC = PAR$EC[0]; # ERROR CODE RESPONSE FROM DSP #
  234. IF DSPEC NQ 0
  235. THEN # ROUTE FAILED DUE TO ERROR #
  236. BEGIN
  237. ERRMSGT[0] = " ROUTE "; # ADD ROUTE TO DAYFILE MESSAGE #
  238. ERRMSGF[0] = "ZZZZZDN"; # NAME OF FILE ROUTED #
  239. ERRMSGC[0] = "EC"; # NAME OF FIELD CONTAINING RC #
  240. ERRMSGRC[0] = ((DSPEC/8)+27)*64 + DSPEC - (DSPEC/8)*8+27;
  241. NP$MSG(ERRMSG,3);
  242. END
  243. # NSUPWRD BASED ARRAY POINTER TO THE USER COMMUNICATION WORD
  244.   WAS SET BY NETON. THE ARRAY IS LOCATED IN NP$NWL COMDECK.
  245.  
  246.   ZERO MESSAGE COUNTER FIELD IN NSUP COMMUNICATION WORD.
  247. #
  248. MSGCNT[0] = 0;
  249. #
  250.   RESET THRESHOLD VALUE FOR WRITING EOR TO LOGFILE.
  251. #
  252. DB$ERCT = 500;
  253. END
  254. ELSE # WRITE ERROR OCCURRED ON FILE #
  255. BEGIN
  256. ERRMSGT[0] = " WRITE "; # ADD WRITE TO DAYFILE MESSAGE #
  257. ERRMSGF[0] = "ZZZZZDN"; # NAME OF FILE WITH WRITE ERROR #
  258. ERRMSGC[0] = "AT"; # NAME OF FIELD CONTAINING RC #
  259. ERRMSGRC[0] = ((AT/8) + 27)*64 + AT - (AT/8)*8 + 27;
  260. NP$MSG(ERRMSG,3); # ISSUE DAYFILE MESSAGE #
  261. END
  262. IF (DSPEC NQ 0) OR # ROUTE OF FILE ZZZZZDN FAILED #
  263. (AT NQ 0 ) # WRITE TO FILE ZZZZZDN FAILED #
  264. THEN # NEED TO GET RID OF BAD FILE #
  265. BEGIN
  266. NP$RETN(DB$FET); # RETURN TRACE FILE #
  267. END
  268. END
  269. #
  270.   INITIALIZE FET
  271. #
  272.  
  273. FET$LN[0] = 0; # INITIALIZE LEVEL NUMBER FIELD #
  274. FET$AT[0] = 0; # INIT ABNORMAL TERM CODE FIELD #
  275. FET$CODE[0] = 1; # SET COMPLETION BIT #
  276. FET$LEN[0] = 3; # SET FET LENGTH #
  277. TIMEWD = LOC(DB$BUF); # TIMEWD USED AS A TEMPORARY STO#
  278. FET$FIRST[0] = TIMEWD; # INITIALIZE CIRCULAR BUFFER PTR#
  279. FET$IN[0] = TIMEWD;
  280. FET$OUT[0] = TIMEWD;
  281. FET$LIMIT[0] = TIMEWD + 192;
  282. #
  283.   COPY JOB RECORD TO ZZZZZDN FILE
  284. #
  285. AT = 0; # INITIALIZE ABNORMAL TERM FLAG #
  286. FET$LFN[0] = LFNAME[0]; # LFN OF JOB RECORD FILE #
  287. IF NOT FRWD
  288. THEN # NEED TO REWIND JOB RECORD FILE#
  289. BEGIN
  290. NP$RWD(DB$FET); # REWIND FILE TO BOI #
  291. ERRMSGT[0] = " REWIND"; # TYPE OF FUNCTION PERFORMED #
  292. AT = FET$AT[0]; # ABNORMAL TERMINATION CODE #
  293. END
  294. IF AT EQ 0
  295. THEN # NO I/O ERROR ON JOB REC FILE #
  296. BEGIN
  297. NP$READ(DB$FET,1); # READ LOGICAL RECORD OF LFN #
  298. IF (FET$AT[0] NQ 0) AND # NO ABNORMAL TERMINATION CODE #
  299. (FET$AT[0] NQ 1) # EOI NOT ENCOUNTERED #
  300. THEN # NO ERROR OCCURRED ON READ #
  301. BEGIN
  302. ERRMSGT[0] = " READ "; # TYPE OF FUNCTION PERFORMED #
  303. AT = FET$AT[0]; # ABNORMAL TERMINATION CODE #
  304. END
  305. END
  306. FET$LFN = "ZZZZZDN"; # RESET FILE NAME IN FET #
  307. FET$AT[0] = 0;
  308. FET$LN[0] = 0; # INITIALIZE LEVEL NUMBER FIELD #
  309. IF AT NQ 0
  310. THEN # ISSUE DAYFILE MSG FOR I/O ERR #
  311. BEGIN
  312. ERRMSGF[0] = DB$LFN; # NAME OF FILE WITH READ ERROR #
  313. ERRMSGC[0] = "AT"; # NAME OF FIELD CONTAINING RC #
  314. ERRMSGRC[0] = ((AT/8)+27)*64 + AT - (AT/8)*8 + 27;
  315. NP$MSG(ERRMSG,3); # ISSUE DAYFILE MESSAGE #
  316. END
  317. ELSE # JOB RECORD WAS NOT READ #
  318. BEGIN
  319. NP$WRTR(DB$FET,1); # WRITE EOR TO FILE ZZZZZDN #
  320. END
  321. IF ACCEPTED # APP HAS NETTED ON #
  322. THEN # CREATE TRACE FILE HEADER REC #
  323. BEGIN
  324. NP$RTIM(TIMEWD); # REAL TIME SINCE DEADSTART #
  325. ZH$TIM[0] = TIMEWD;
  326. NP$CLK(CHARWD); # CLOCK TIME #
  327. ZH$CLK[0] = CHARWD;
  328. NP$DATE(CHARWD); # DATE #
  329. ZH$DATE = CHARWD;
  330. NP$WRTW(DB$FET,ZHDR,4); # COPY HEADER TO ZZZZZDN FILE #
  331. NP$WRTR(DB$FET,1); # WRITE END OF RECORD #
  332. NP$CLK(CHARWD); # CLOCK TIME #
  333. NP$WRTO(DB$FET,CHARWD); # WRITE TIME STAMP #
  334. END # DEBUG LOG FILE HEADER WRITTEN #
  335. IF FET$AT[0] NQ 0
  336. THEN # RMS I/O ERROR HAS OCCURRED #
  337. BEGIN
  338. NP$PIOE(DB$FET); # PROCESS I/O ERROR #
  339. END
  340. END
  341.  
  342. #
  343.   UPDATE DB$TRUNC
  344. #
  345. IF MSGLTH GR 0
  346. THEN
  347. BEGIN
  348. IF MSGLTH GR 410
  349. THEN
  350. MSGLTH = 410;
  351. DB$TRUNC = MSGLTH;
  352. END
  353. *ENDIF
  354. RETURN;
  355. END # NETREL #
  356. TERM
1) , 2)
LFN),(MSGLTH),(FRWD
cdc/nos2.source/nam5871/netrel.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator