User Tools

Site Tools


cdc:nos2.source:nam5871:ndllist

NDLLIST

Table Of Contents

  • [00008] PROC NDLLIST
  • [00052] PROC ABORT
  • [00053] PROC SSTATS
  • [00054] FUNC EDATE C(10)
  • [00055] FUNC ETIME C(10)
  • [00056] PROC MESSAGE
  • [00057] PROC PDATE
  • [00058] FUNC SSDCAD
  • [00059] PROC READ
  • [00060] PROC READH
  • [00061] PROC READW
  • [00062] PROC RECALL
  • [00063] PROC REWIND
  • [00064] PROC SKIPB
  • [00065] PROC SKIPEI
  • [00066] PROC WRITEH
  • [00067] PROC WRITER
  • [00068] FUNC XCDD C(10)
  • [00069] FUNC XCHD C(10)
  • [00070] FUNC XSFW C(10)
  • [00698] FUNC DC$FRAME (PFRAM) U
  • [00735] PROC APPLST
  • [00739] APPLST - APPL LISTER
  • [00844] PROC CPLLST
  • [00848] CPLLST - COUPLER LISTER.
  • [00914] PROC DEFLST
  • [00918] DEFLST - DEFINE LISTER
  • [01018] PROC DEVLST(TRMWORD)
  • [01022] DEVLST - DEVICE LISTER
  • [01610] PROC ERRLST
  • [01614] ERRLST - ERROR LISTER
  • [01789] PROC ERRMSG(ENUM,EPRC)
  • [01793] ERRMSG - PRINT ERROR MESSAGE
  • [01838] PROC EXSLST
  • [01842] EXSLST - EXPANDED SOURCE LISTER
  • [02013] PROC HDRLST
  • [02017] HDRLST - HEADER INFO LISTER
  • [02051] PROC INLST
  • [02055] INLST - INCALL INFO LISTER
  • [02288] PROC LCFLST
  • [02292] LCFLST - LCF LISTER
  • [02448] PROC LINLST
  • [02452] LINLST - LINE LISTER
  • [02868] PROC LLKLST
  • [02872] LLKLST - LOGICAL LINK LISTER
  • [02986] PROC NCBW
  • [02990] NCBW - NCB WORD
  • [03048] PROC NCFLST
  • [03052] NCFLST - NCF LISTER
  • [03242] PROC NODLST
  • [03246] NODLST - NODE INFO LISTER
  • [03356] PROC NPULST
  • [03360] NPULST - NPU LISTER
  • [03453] PROC OUTLST
  • [03457] OUTLST - OUTCALL LISTER
  • [03512] PROC PRHEX(POS)
  • [03735] PROC PGLST(NUMLN)
  • [03739] PGLST - PAGE HEADER LISTER
  • [03812] PROC RDNCB(ASCIILITERAL,NCB$TAB)
  • [03817] RDNCB - READ NCB
  • [03935] PROC READREC(POINTER,(INDEX))
  • [03939] READREC - READ RECOR
  • [03993] PROC SERMSGX
  • [03997] SERMSGX - SERVICE MESSAGE CROSSING
  • [04029] PROC SRCLST
  • [04034] SRCLST - SOURCE LISTER
  • [04177] PROC SUPLST
  • [04181] SUPLST - SUPLINK LISTER
  • [04261] PROC TIPLST
  • [04265] TIPLST - TIPTYPE LISTER
  • [04341] PROC TRKLST
  • [04345] TRKLST - TRUNK STATEMENT LISTER
  • [04459] PROC TRMLST
  • [04463] TRMLST - TERMINAL LISTER
  • [04762] PROC USERLST
  • [04766] USERLST - USER STATEMENT LISTER

Source Code

NDLLIST.txt
  1. *DECK NDLLIST
  2. USETEXT NDLDATT
  3. USETEXT NDLER1T
  4. USETEXT NDLFETT
  5. USETEXT NDLNCFT
  6. USETEXT NDLPS2T
  7. USETEXT NDLTBLT
  8. PROC NDLLIST;
  9. BEGIN
  10. *IF,DEF,IMS
  11. #
  12. ** NDLLIST
  13. *
  14. * S.M. ILMBERGER 81/10/29
  15. *
  16. * PRODUCES LISTINGS FOR NDL RUN
  17. *
  18. * PROC NDLLIST
  19. *
  20. * ENTRY NONE
  21. *
  22. * EXIT NONE
  23. *
  24. * MESSAGES NONE
  25. *
  26. * METHOD
  27. *
  28. * SET UP OUTFET POINTERS
  29. * SET UP INFO FOR PAGE HEADER
  30. * IF RUN IS CREATION RUN
  31. * IF SOURCE LISTING IS REQUESTED
  32. * CALL SRCLST
  33. * IF ERRORS EXIST
  34. * CALL ERRLST
  35. * IF DEFINE LISTING IS REQUESTED
  36. * CALL DEFLST
  37. * IF EXPANDED SOURCE LISTING IS REQUESTED
  38. * CALL EXSLST
  39. * IF SUMMARY LISTING REQUESTED
  40. * CALL NCFLST AND/OR LCFLST
  41. * IF RUN IS SUMMARY RUN
  42. * CALL NCFLST AND/OR LCFLST
  43. * END
  44. #
  45. *ENDIF
  46.  
  47. #
  48. **** PROC NDL$LST - XREF LIST BEGINS.
  49. #
  50. XREF
  51. BEGIN
  52. PROC ABORT; # ABORTS NDLP #
  53. PROC SSTATS; # ALLOCATES TABLE SPACE #
  54. FUNC EDATE C(10); # UNPACKS DATE #
  55. FUNC ETIME C(10); # UNPACKS TIME #
  56. PROC MESSAGE;
  57. PROC PDATE; # GET PACKED DATE AND TIME #
  58. FUNC SSDCAD ; # CONVERTS ASCII TO DISPLAY CODE #
  59. PROC READ; # READS FET #
  60. PROC READH; # READS TABLES #
  61. PROC READW; # READW ERROR FETS #
  62. PROC RECALL; # RETURNS CONTROL WHEN FUNCTIONS DONE #
  63. PROC REWIND; # REWINDS FILES #
  64. PROC SKIPB; # SKIP BACKWRDS IN NCF FILE #
  65. PROC SKIPEI; # SKIP TO EOI #
  66. PROC WRITEH; # WRITES TO TABLES #
  67. PROC WRITER; # FLUSH BUFFER AND WRITE EOR #
  68. FUNC XCDD C(10); # CONVERTS INT TO DEC DISPLAY CODE #
  69. FUNC XCHD C(10); # CONVERTS HEX TO INT DISPLAY CODE #
  70. FUNC XSFW C(10); # CONVERT ZERO FILLED NAME TO BLANK FILLED#
  71. END
  72. #
  73. ****
  74. #
  75.  
  76. DEF ENTRY0 # 0 #; # ENTRY 0 OF TABLE #
  77. DEF ENTRY1 # 1 #;
  78. DEF ENTRY2 # 2 #;
  79. DEF ENTRY3 # 3 #; # WORD 3 OF TABLE #
  80. DEF ENTRY4 # 4 #; # WORD 4 OF TABLE #
  81. DEF ERMSG1 # 1 #; # DEFINE ERROR MESSAGE NUMBERS #
  82. DEF ERMSG2 # 2 #;
  83. DEF ERMSG3 # 3 #;
  84. DEF ERMSG4 # 4 #;
  85. DEF ERMSG5 # 5 #;
  86. DEF ERMSG6 # 6 #;
  87. DEF ERMSG7 # 7 #;
  88. DEF ERMSG8 # 8 #;
  89. DEF ERMSG9 # 9 #;
  90. DEF ERMSG10 # 10 #;
  91. DEF ERMSG11 # 11 #;
  92. DEF LN1 # 1 #; # NUMBER OF LINES TO BE PRINTED #
  93. DEF LN2 # 2 #;
  94. DEF LN3 # 3 #;
  95. DEF LN4 # 4 #;
  96. DEF LN5 # 5 #;
  97. DEF LN6 # 6 #;
  98. DEF NEWPAGE # 100 #; # LINE COUNT #
  99. DEF SERMSG # 31 #; # NUMBER OF WORDS IN ONE SERVICE MESSAGE #
  100.  
  101. # CALL NAMLEV AND ER2CNDL #
  102. CONTROL NOLIST;
  103. *CALL NAMLEV
  104.  
  105. CONTROL PRESET;
  106. *CALL ER2CNDL
  107. CONTROL LIST;
  108.  
  109. ITEM BIT=0; # BIT OF WORD NODEMAP #
  110. ITEM CPL$ID; # CURRENT COUPLER NODE ID #
  111. ITEM ENTRY$CNT I; # NUMBER OF LIN$CON$REC ENTRIES #
  112. ITEM FNFV$CNT I; # NUMB OF FVFN PAIRS IN LIN$CON$REC ENTRY #
  113. ITEM INCALL$EC I; # INCALL TABLE ENTRY COUNT #
  114. ITEM LCF$STAT I; # STATUS OF READ FROM LCF #
  115. ITEM LINREC$WC I; # WORD COUNT OF LINE RECORD #
  116. ITEM LINREC$GC I; # GROUP COUNT OF LINE RECORD #
  117. ITEM NCBIT I; # BIT NUMBER OF NCBWORD TO REFER TO #
  118. ITEM NCBWD I; # WORD NUMBER OF NCB TO REFER TO #
  119. ITEM NCF$IDX$EC; # ENTRY COUNT FOR NCF$INDEX #
  120. ITEM NODE$ID; # CURRENT NPU NODE ID #
  121. ITEM OUTCALL$EC I; # OUTCALL TABLE ENTRY COUNT #
  122. ITEM PORTNUM; # CURRENT PORT NUMBER #
  123. ITEM TEMPACKED U; # STORAGE FOR PACKED DATE AND TIME #
  124. ITEM TEMPT U; # STORAGE FOR TIME #
  125. ITEM TEMP1 U; # TEMP STORAGE FOR INTEGER NUMBER #
  126. ITEM TEMP2 C(10); # TEMP STORAGE FOR CHARACTER ITEM #
  127. ITEM TEMPD C(10); # STORAGE FOR DATE #
  128. ITEM WORD=0; # WORD OF BITMAP #
  129.  
  130.  
  131. ARRAY ALLNODS [0:0] S(6); # ALL NODE NUMBERS USED LINE #
  132. BEGIN
  133. ITEM ALLN C(00,00,54) =
  134. ["0 ALL NODE NUMBERS LESS THAN HAVE BEEN USED"];
  135. ITEM MAXNODE C(03,36,03);
  136. END
  137.  
  138. ARRAY APPL$HDR [0:0] S(11); # HEADER FOR APPL SUMMARY #
  139. BEGIN
  140. ITEM APPL$1 C(00,00,110) =
  141. ["0 APPL NAME PRIV UID STATUS
  142. RS MXCOPYS KDSP NETXFR PRU"];
  143. END
  144.  
  145. ARRAY APPL$LN [0:0] S(11); # APPL LINE #
  146. BEGIN
  147. ITEM APPL$FIL C(00,00,110) = [" "];
  148. ITEM APPL$NAM C(02,00,07);
  149. ITEM APPL$PRI C(03,00,03);
  150. ITEM APPL$UID C(04,00,03);
  151. ITEM APPL$STA C(05,12,02);
  152. ITEM APPL$RS C(06,00,03);
  153. ITEM APPL$MAXC C(07,00,02);
  154. ITEM APPL$KDP C(08,00,03);
  155. ITEM APPL$XFR C(09,00,03);
  156. ITEM APPL$PRU C(10,00,03);
  157. END
  158.  
  159. ARRAY ASCII$TO$DC [0:0] S(13); # ASCII TO DISPLAY CODE TABLE #
  160. BEGIN
  161. ITEM DC$CHAR C(00,00,130) = ["
  162. 0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ"];
  163. END
  164.  
  165. ARRAY BLNK$LN [0:0] S(1); # BLANK LINE #
  166. ITEM BLNK C(00,00,10) = [" "];
  167.  
  168. ARRAY CPL$HDR [0:0] S(6); # HEADER FOR COUPLER SUMMARY #
  169. BEGIN
  170. ITEM CPL$1 C(00,00,53) =
  171. ["0 COUPLER NAME NODE HNAME LOC"];
  172. END
  173.  
  174. ARRAY CPL$LN [0:0] S(6); # COUPLER LINE #
  175. BEGIN
  176. ITEM CPL$FILL C(00,00,60) = [" "];
  177. ITEM CPL$NAM C(02,00,07);
  178. ITEM CPL$NOD C(03,06,02);
  179. ITEM CPL$HNA C(04,00,07);
  180. ITEM CPL$LOC C(05,00,07);
  181. END
  182.  
  183. ARRAY DEF$HDR [0:0] S(4); # DEFINE LISTING HEADER #
  184. ITEM DEF$LN C(00,00,40) =
  185. ["0 DEFINE NAME DEFINE CONTENTS "];
  186.  
  187. ARRAY DEF$L [0:11] S(1); # DEFINE LINE #
  188. BEGIN
  189. ITEM DEF$LAB C(00,30,07);
  190. ITEM DEF$STR C(02,00,100);
  191. ITEM DEF$TOTAL C(00,00,120) = [" "];
  192. END
  193.  
  194. ARRAY NO$DEF [0:0] S(6);
  195. ITEM NO$DEF$L C(00,00,60) =
  196. ["0 NO DEFINE COMMANDS ENCOUNTERED "];
  197.  
  198. ARRAY DEV$HDR1 [0:0] S(13); # HEADER1 FOR DEVICE LINES #
  199. BEGIN
  200. ITEM DEF$1 C(00,00,130) =
  201. ["0 DEVICE NAME DT/ SDT/ ABL/ DBZ/ UBL/
  202. HN/ AUTOCON/ BR/ AB/ B1/ CI/ CT/ DLC/ EP/ LI/ PG/ PL/ SE/ "]
  203. ;
  204. END
  205.  
  206. ARRAY DEV$HDR2 [0:0] S(14); # HEADER2 FOR DEVICE LINES #
  207. BEGIN
  208. ITEM DEV$2 C(00,00,130) =
  209. [" TA XBZ/ DBL/ UBZ/ STREAM/ D
  210. O/ PRI/ BS/ B2/ CN/ DLX/ DLTO/ IN/ OP/ PA/ PW/ STAT/"]
  211. ;
  212. END
  213.  
  214. ARRAY DEV$HDR3 [0:0] S(13);
  215. BEGIN
  216. ITEM DEV$3 C(00,00,130) =
  217. [" MCI MLI RTS XLY M
  218. C FA ELO ELX ELR EBO EBX EBR CP IC OC LK "];
  219. END
  220.  
  221. ARRAY DEV$LN1 [0:0] S(13); # DEVICE LINE1 #
  222. BEGIN
  223. ITEM DEV1$FIL C(00,06,129) = [" "];
  224. ITEM DEV$NAM C(02,00,07);
  225. ITEM DEV$DT C(02,54,04);
  226. ITEM DEV$SDT C(03,24,05);
  227. ITEM DEV$ABL C(04,06,01);
  228. ITEM DEV$DBZ C(04,36,04);
  229. ITEM DEV$UBL C(05,18,02);
  230. ITEM DEV$HN C(06,00,02);
  231. ITEM DEV$ACON C(06,42,03);
  232. ITEM DEV$BR C(07,30,03);
  233. ITEM DEV$AB C(08,00,02);
  234. ITEM DEV$B1 C(08,30,02);
  235. ITEM DEV$CI C(09,00,02);
  236. ITEM DEV$CT C(09,30,02);
  237. ITEM DEV$DLC C(10,00,04);
  238. ITEM DEV$EP C(10,36,03);
  239. ITEM DEV$LI C(11,06,02);
  240. ITEM DEV$PG C(11,42,03);
  241. ITEM DEV$PL C(12,06,03);
  242. ITEM DEV$SE C(12,36,03);
  243. ITEM DEV1$CRRT C(00,00,01) = ["0"]; # CARRIAGE CONTROL #
  244. END
  245.  
  246. ARRAY DEV$LN2 [0:0] S(13); # DEVICE LINE2 #
  247. BEGIN
  248. ITEM DEV2$FIL C(00,00,130) = [" "];
  249. ITEM DEV$TA C(03,00,02);
  250. ITEM DEV$XBZ C(03,24,04);
  251. ITEM DEV$DBL C(04,06,01);
  252. ITEM DEV$UBZ C(04,36,04);
  253. ITEM DEV$STR C(05,24,01);
  254. ITEM DEV$DO C(06,06,01);
  255. ITEM DEV$PRI C(07,30,03);
  256. ITEM DEV$BS C(08,00,02);
  257. ITEM DEV$B2 C(08,30,02);
  258. ITEM DEV$CN C(09,00,02);
  259. ITEM DEV$DLX C(09,30,02);
  260. ITEM DEV$DLTO C(10,06,03);
  261. ITEM DEV$IN C(10,42,02);
  262. ITEM DEV$OP C(11,06,02);
  263. ITEM DEV$PA C(11,42,01);
  264. ITEM DEV$PW C(12,06,03);
  265. ITEM DEV$STAT C(12,36,02);
  266. END
  267.  
  268. ARRAY DEV$LN3 [0:0] S(13);
  269. BEGIN
  270. ITEM DEV3$FIL C(00,00,130) = [" "];
  271. ITEM DEV$MCI C(03,24,03);
  272. ITEM DEV$MLI C(04,00,03);
  273. ITEM DEV$RTS C(04,42,03);
  274. ITEM DEV$XLY C(05,18,02);
  275. ITEM DEV$MC C(06,00,02);
  276. ITEM DEV$FA C(07,30,03);
  277. ITEM DEV$ELO C(08,00,02);
  278. ITEM DEV$ELX C(08,30,02);
  279. ITEM DEV$ELR C(09,00,02);
  280. ITEM DEV$EBO C(09,30,02);
  281. ITEM DEV$EBX C(10,06,03);
  282. ITEM DEV$EBR C(10,42,02);
  283. ITEM DEV$CP C(11,06,03);
  284. ITEM DEV$IC C(11,42,03);
  285. ITEM DEV$OC C(12,06,03);
  286. ITEM DEV$LK C(12,36,03);
  287. END
  288.  
  289. ARRAY ENT1 [0:0] S(1); # NCB TABLE ENTRY #
  290. BEGIN
  291. ITEM ENTF U(00,44,08); # FIRST EIGHT BITS OF ENTRY #
  292. ITEM ENTCNT U(00,52,08); # LAST EIGHT BITS OF ENTRY #
  293. ITEM TENTRY U(00,44,16); # TOTAL ENTRY #
  294. END
  295.  
  296. ARRAY EMTAB [1:11] S(5);
  297. BEGIN
  298. ITEM EMPROC C(01,06,08);
  299. ITEM EMESS C(00,00,40) = [
  300. # 1 # " ABRT FROM - NO SUCH RECORD TYPE",
  301. # 2 # " ABRT FROM - READ ERROR ",
  302. # 3 # " ABRT FROM - BAD NCF FILE RECORD",
  303. # 4 # " ABRT FROM - INVALID RECORD TYPE",
  304. # 5 # " ABRT FROM - FN VAL NOT DEVIC FN",
  305. # 6 # " ABRT FROM -CAN'T READ LIN RECDS",
  306. # 7 # " ABRT FROM -CAN'T READ NCF RECDS",
  307. # 8 # " ABRT FROM - FN VAL NOT LINE FN ",
  308. # 9 # " ERROR IN LCF -- SUMMARY SUPPRESSED. ",
  309. # 10 # " ABRT FROM - FN VAL NOT TERM FN ",
  310. # 11 # " ERROR IN NCF -- SUMMARY SUPPRESSED. ",
  311. ];
  312. ITEM EMZBYT U(04,00,60) = [11(0)];
  313. ITEM EM$ENT C(00,00,50); # ERROR MSG TABLE ENTRY #
  314. END
  315.  
  316. ARRAY ERR$HDR [0:0] S(5);
  317. BEGIN
  318. ITEM ERR$HDR1 C(00,00,50) =
  319. ["0 LINE ERROR SEVERITY DETAILS DIAGNOSIS"];
  320. END
  321.  
  322. ARRAY FH$NAM$LST [0:0] S(4); # FILE NAME AND TYPE SUMMARY STMT #
  323. BEGIN
  324. ITEM NAM$LIN C(00,00,37) =
  325. ["0 FILE NAME "];
  326. ITEM NAM$TYP C(00,42,03);
  327. ITEM NET$NAME C(03,00,07);
  328. END
  329.  
  330. ARRAY FNFV$TAB [0:0] S(1);
  331. BEGIN
  332. ITEM FNFV$ENT U(00,44,16);
  333. ITEM FN$ENT U(00,44,08);
  334. ITEM FV$ENT U(00,52,08);
  335. END
  336.  
  337. ARRAY INC$HDR1 [0:0] S(12); # HEADER FOR INCALL SUMMARY #
  338. BEGIN
  339. ITEM INC$1 C(00,00,120) =
  340. ["0 INCALL FAMILY USER/ PRI/ DBL ABL/
  341. DBZ/ SNODE/ SHOST/ COLLECT/ PORT/ DPLR/ DTEA "];
  342. END
  343. ARRAY INC$HDR2 [0:0] S(12);
  344. BEGIN
  345. ITEM INC$2 C(00,00,120) =
  346. [" ANAME UBL
  347. UBZ DNODE WS FASTSEL DPLS WR "];
  348. END
  349.  
  350.  
  351. ARRAY INC$HDR3 [0:0] S(3); # INCALL/OUTCALL FACILITY HEADER #
  352. BEGIN
  353. ITEM INC$3 C(00,00,30) = [" FACILITIES"];
  354. END
  355.  
  356. ARRAY INC$LN [0:0] S(13); # INCALL LINE #
  357. BEGIN
  358. ITEM INC$CRRT C(00,00,01);
  359. ITEM INC$FIL C(00,00,130) = [" "];
  360. ITEM INC$FAM C(02,00,07);
  361. ITEM INC$USER C(03,00,07);
  362. ITEM INC$PRI C(04,00,03);
  363. ITEM INC$DBL C(04,48,01);
  364. ITEM INC$ABL C(05,24,01);
  365. ITEM INC$DBZ C(05,54,04);
  366. ITEM INC$SND C(06,42,03);
  367. ITEM INC$SHT C(07,06,06);
  368. ITEM INC$COLLECT C(08,12,03);
  369. ITEM INC$PORT C(09,12,02);
  370. ITEM INC$DPLR C(09,54,04);
  371. ITEM INC$DTEA C(10,48,15);
  372. END
  373. ARRAY INC$LN2 [0:0] S(13);
  374. BEGIN
  375. ITEM INC$FIL2 C(00,00,130) = [" "];
  376. ITEM INC$ANAM C(03,00,14);
  377. ITEM INC$UBL C(05,24,01);
  378. ITEM INC$UBZ C(05,54,02);
  379. ITEM INC$DND C(06,48,02);
  380. ITEM INC$WS C(07,36,01);
  381. ITEM INC$FSEL C(08,12,03);
  382. ITEM INC$DPLS C(09,12,04);
  383. ITEM INC$WR C(09,54,03);
  384. END
  385.  
  386. ARRAY LIN$REC$BUF [0:PRULNGTH] S(1);
  387. ITEM LINEWORD (00,00,60);
  388.  
  389. ARRAY LIN$HDR [0:0] S(12); # HEADER FOR LINE SUMMARY #
  390. BEGIN
  391. ITEM LIN$1 C(00,00,120) =
  392. ["0 LINE NAME PORT/ LTYPE AUTO/ TIPTYPE/ DI
  393. LSPEED/ DFL/ FRAME/ RTIME/ RCOUNT/ NSVC/"];
  394. END
  395.  
  396. ARRAY LIN$HDR2 [0:0] S(11); # 2ND HEADER FOR LINE SUMMARY #
  397. BEGIN
  398. ITEM LIN$2 C(00,00,110) =
  399. [" LCN IMDISC RC
  400. XAUTO PSN NPVC AL ARSPEED DTEA"];
  401. END
  402.  
  403. ARRAY LIN$LN [0:0] S(11); # FORMAT FOR LINE SUMARY LIST #
  404. BEGIN
  405. ITEM LN$CRRT C(00,00,01) = ["0"];
  406. ITEM LN$FIL C(00,06,109) = [" "];
  407. ITEM LN$NAM C(02,00,07);
  408. ITEM LN$PORT C(03,00,02);
  409. ITEM LN$LTY C(03,36,02);
  410. ITEM LN$AUTO C(04,12,03);
  411. ITEM LN$TIPT C(04,54,05);
  412. ITEM LN$DI C(05,42,03);
  413. ITEM LN$LSPE C(06,18,05);
  414. ITEM LN$DFL C(07,00,05);
  415. ITEM LN$FRAM C(07,48,03);
  416. ITEM LN$RTIME C(08,24,05);
  417. ITEM LN$RCNT C(09,18,02);
  418. ITEM LN$NSVC C(09,54,03);
  419. ITEM LN$DCE C(10,24,03);
  420. END
  421.  
  422. ARRAY LIN$LN2 [0:0] S(11);
  423. BEGIN
  424. ITEM LN$FL2 C(00,00,110) = [" "];
  425. ITEM LN$LCN C(03,00,03) = ["0"];
  426. ITEM LN$IMD C(04,12,03) = ["NO"];
  427. ITEM LN$RC C(05,12,03);
  428. ITEM LN$XAUTO C(06,30,03);
  429. ITEM LN$PSN C(06,54,07);
  430. ITEM LN$NPVC C(07,42,04);
  431. ITEM LN$SL C(08,36,02);
  432. ITEM LN$ARSPEED C(09,06,03);
  433. ITEM LN$DTEA C(10,00,02);
  434. END
  435.  
  436. ARRAY LLK$HDR [0:0] S(5); # HEADER FOR LOGLINK SUMMARY #
  437. BEGIN
  438. ITEM LLK$1 C(00,00,46) =
  439. ["0 LOGLINK NAME NCNAME STATUS"];
  440. END
  441.  
  442. ARRAY LLK$LN [0:0] S(5); # LOGLINK LINE #
  443. BEGIN
  444. ITEM LLK$FILL C(00,00,50) = [" "];
  445. ITEM LLK$NAM C(02,00,07);
  446. ITEM LLK$NCN C(03,00,07);
  447. ITEM LLK$STA C(04,12,02);
  448. END
  449.  
  450. ARRAY MAXN$HDR [0:0] S(4); # MAXIMUM NODE HEADER #
  451. BEGIN
  452. ITEM MAXN1 C(00,00,32) =
  453. ["0 MAXIMUM NODE NUMBER USED"];
  454. END
  455.  
  456. ARRAY MAXN$LN [0:0] S(2); # MAX NODE NUMBER #
  457. BEGIN
  458. ITEM MAXN$FILL C(00,00,20) = [" "];
  459. ITEM MAXNOD C(01,00,03);
  460. ITEM MAX$CRRT C(00,00,01) = ["0"]; # CARRIAGE CONTROL #
  461. END
  462.  
  463. ARRAY NODE$TAB [0:5] S(1);
  464. ITEM NODEMAP = [6(0)];
  465.  
  466. ARRAY NPU$HDR [0:0] S(7); # HEADER FOR NPU SUMMARY #
  467. BEGIN
  468. ITEM NPU$1 C(00,00,63) =
  469. ["0 NPU NAME NODE VARIANT OPGO DMP"];
  470. END
  471.  
  472. ARRAY NPU$LN [0:0] S(7); # NPU LINE #
  473. BEGIN
  474. ITEM FIL1 C(00,00,70) = [" "];
  475. ITEM NPU$NAM C(02,00,07);
  476. ITEM NPU$NOD C(03,00,03);
  477. ITEM NPU$VAR C(04,00,07);
  478. ITEM NPU$OP C(05,00,03);
  479. ITEM NPU$DMP C(06,00,03);
  480. END
  481.  
  482. ARRAY PG$HDR [0:0] S(13); # PAGE HEADER FOR NDLP LISTING #
  483. BEGIN
  484. ITEM PGHDR$FIL C(00,00,130) = [" "];
  485. ITEM TITLE C(00,06,45);
  486. ITEM STAR1 C(04,42,01) = ["*"];
  487. ITEM LST$TYP C(04,54,15);
  488. ITEM STAR2 C(06,30,01) = ["*"];
  489. ITEM PROG$T C(07,00,04) = ["NDLP"];
  490. ITEM VER$NUM C(07,30,03);
  491. ITEM DASH C(07,54,01) = ["-"];
  492. ITEM LEV$NUM C(08,06,03);
  493. ITEM DAT C(09,00,10); # DATE #
  494. ITEM TIM C(10,00,10); # TIME #
  495. ITEM PAG C(11,36,04) = ["PAGE"];
  496. ITEM PAGE$N C(12,06,05); # PAGE NUMBER #
  497. ITEM PG$CRRT C(00,00,01) = ["1"]; # CARRIAGE CONTROL #
  498. END
  499.  
  500.  
  501. ARRAY OUT$HDR1 [0:0] S(11); # HEADER FOR OUTCALL SUMMARY #
  502. BEGIN
  503. ITEM OUTC$1 C(00,00,110) =
  504. ["0 OUTCALL NAME1 NAME2/ PRI/ DBL/ ABL/ SNODE
  505. / PORT DPLS/ WS DTEA PRID "];
  506. END
  507.  
  508. ARRAY OUT$HDR2 [0:0] S(9); # HEADER FOR OUTCALL SUMMARY #
  509. BEGIN
  510. ITEM OUTC$2 C(00,00,90) =
  511. [" PID UBL UBZ DBZ DNODE
  512. ACCLEV "];
  513. END
  514.  
  515. ARRAY OUT$HDR21 [0:0] S(3); # HEADER FOR OUTCALL SUMMARY #
  516. BEGIN
  517. ITEM OUTC$21 C(00,00,30) =
  518. [" UDATA "];
  519. END
  520.  
  521. ARRAY OUT$HDR3 [0:0] S(3); # HEADER FOR OUTCALL FACILITIES #
  522. BEGIN
  523. ITEM OUTC$3 C(00,00,30) = [" FACILITIES "];
  524. END
  525.  
  526. ARRAY OUTC$LN1 [0:0] S(11); # OUTCALL LINE #
  527. BEGIN
  528. ITEM OUTC$CC1 C(00,00,01);
  529. ITEM OUTC$FL1 C(00,00,110) = [" "];
  530. ITEM OUTC$NM1 C(02,00,07);
  531. ITEM OUTC$NM2 C(02,54,03);
  532. ITEM OUTC$PRI C(03,36,03);
  533. ITEM OUTC$DBL C(04,12,01);
  534. ITEM OUTC$ABL C(04,54,01);
  535. ITEM OUTC$SND C(05,36,02);
  536. ITEM OUTC$PRT C(06,30,02);
  537. ITEM OUTC$DPS C(07,18,04);
  538. ITEM OUTC$WS C(07,54,01);
  539. ITEM OUTC$DTA C(08,06,16);
  540. ITEM OUTC$PRD C(09,42,08);
  541. END
  542.  
  543. ARRAY OUTC$LN2 [0:0] S(9); # OUTCALL LINE TWO #
  544. BEGIN
  545. ITEM OUTC$FL2 C(00,00,90) = [" "];
  546. ITEM OUTC$PID C(02,54,03);
  547. ITEM OUTC$UBL C(03,42,01);
  548. ITEM OUTC$UBZ C(04,06,02);
  549. ITEM OUTC$DBZ C(04,42,04);
  550. ITEM OUTC$DND C(05,36,03);
  551. ITEM OUTC$ACL C(07,18,02);
  552. END
  553.  
  554. ARRAY OUTC$LN3 [0:0] S(13); # OUTCALL LINE THREE #
  555. BEGIN
  556. ITEM OUTC$FL3 C(00,00,130) = [" "];
  557. ITEM OUTC$UDT C(02,00,100);
  558. END
  559.  
  560. ARRAY OUTPT$BUFFER [0:0] S(14); # OUTPUT WORKING BUFFER #
  561. BEGIN
  562. ITEM OUTLNUM C(00,06,05);# LINE NUMBER OF SOURCE #
  563. ITEM OUTELINE C(00,48,03);# SET TO -***- IF ERROR EXISTS #
  564. ITEM OUTDLINE C(01,30,01);# SET TO -D- IF DEFINE EXIST #
  565. ITEM OUTBUFF1 C(00,00,135);
  566. END
  567.  
  568. ARRAY SOURCE$HDR [0:0] S(2);
  569. BEGIN
  570. ITEM SRC$LN$HDR C(00,00,20) = ["0 LINE ERR DEFINE "];
  571. END
  572.  
  573. ARRAY SUP$HDR [0:0] S(3); # HEADER FOR SUPLINK SUMMARY #
  574. BEGIN
  575. ITEM SUP$1 C(00,00,26) = ["0 SUPLINK LLNAME"];
  576. END
  577.  
  578. ARRAY SUP$LN [0:0] S(3); # SUPLINK LINE #
  579. BEGIN
  580. ITEM SLK$FIL1 C(00,00,30) = [" "];
  581. ITEM SLK$NAM C(02,00,07);
  582. END
  583.  
  584. ARRAY TER$HDR1 [0:0] S(11); # HEADER FOR TERMINAL SUMMARY #
  585. BEGIN
  586. ITEM TER$1 C(00,00,110) =
  587. ["0 TERMINAL STIP/ TC CSET TSPEED CA RIC
  588. CO BCF MREC W CTYP NCIR NEN EOF COLLECT"];
  589. END
  590.  
  591. ARRAY TER$HDR2 [0:0] S(3); # HEADER FOR TERMINAL SUMMARY #
  592. BEGIN
  593. ITEM TER$2 C(00,00,30) = [" PAD "];
  594. END
  595.  
  596. ARRAY TER$LN1 [0:0] S(11); # TERMINAL LINE #
  597. BEGIN
  598. ITEM TER$FIL C(00,00,110) = [" "];
  599. ITEM TER$STIP C(02,00,05);
  600. ITEM TER$TC C(02,42,05);
  601. ITEM TER$CSET C(03,24,07);
  602. ITEM TER$TSP C(04,24,05);
  603. ITEM TER$CA C(05,06,02);
  604. ITEM TER$RIC C(05,30,03);
  605. ITEM TER$CO C(06,00,03);
  606. ITEM TER$BCF C(06,30,03);
  607. ITEM TER$MREC C(07,06,01);
  608. ITEM TER$W C(07,36,01);
  609. ITEM TER$CTYP C(07,54,03);
  610. ITEM TER$NCIR C(08,30,03);
  611. ITEM TER$NEN C(09,06,03);
  612. ITEM TER$EOF C(09,36,03);
  613. ITEM TER$CLCT C(10,00,03);
  614. END
  615.  
  616. ARRAY TER$LN2 [0:0] S(13); # TERMINAL LINE #
  617. BEGIN
  618. ITEM TER$FIL2 C(00,00,130) = [" "];
  619. ITEM TER$PAD C(02,00,110);
  620. END
  621.  
  622. ARRAY TIMELST [0:0] S(6); # TIME AND DATE STATEMENT #
  623. BEGIN
  624. ITEM HD$LINE C(00,00,60) =
  625. ["- VALID CREATED "];
  626. ITEM HD$TYP C(02,36,03);
  627. ITEM HD$TIME C(04,06,10);
  628. ITEM HD$DATE C(05,06,10);
  629. END
  630.  
  631. ARRAY TIP$HDR [0:0] S(4); # HEADER FOR TIPTYPE SUMMARY #
  632. BEGIN
  633. ITEM TIP$1 C(00,00,36)=["0 TIPTYPES USED FOR THIS NPU"];
  634. END
  635.  
  636. ARRAY TIP$LN [0:9] S(1); # TIPTYPE LINE #
  637. BEGIN
  638. ITEM TIP$FILL C(00,06,99) = [" "];
  639. ITEM TIPS C(00,00,10);
  640. ITEM TIPS$CRRT C(00,00,01) = ["0"]; # CARRIAGE CONTROL #
  641. END
  642.  
  643. ARRAY TIPMP [0:0] S(1);
  644. ITEM TIPMAP = [0];
  645.  
  646. ARRAY TRK$HDR [0:0] S(9); # HEADER FOR TRUNK SUMMARY #
  647. BEGIN
  648. ITEM TRK$1 C(00,00,90) =
  649. ["0 TRUNK NAME N1 N2 P1 P2 NOLOA
  650. D1 NOLOAD2 STATUS FRAME "];
  651. END
  652.  
  653. ARRAY TRK$LN [0:0] S(9); # TRUNK LINE #
  654. BEGIN
  655. ITEM TRK$FIL C(00,00,90) = [" "];
  656. ITEM TRK$NAM C(02,00,07);
  657. ITEM TRK$N1 C(02,54,07);
  658. ITEM TRK$N2 C(03,48,07);
  659. ITEM TRK$P1 C(04,42,02);
  660. ITEM TRK$P2 C(05,06,02);
  661. ITEM TRK$NOLO1 C(05,48,03);
  662. ITEM TRK$NOLO2 C(06,42,03);
  663. ITEM TRK$STA C(07,30,04);
  664. ITEM TRK$FRAME C(08,18,04); # FRAME SIZE CODE #
  665. END
  666.  
  667. ARRAY UNODE$LN [0:0] S(11); # UNUSED NODES #
  668. BEGIN
  669. ITEM UNODE$FIL1 C(00,00,110) = [" "];
  670. ITEM NODNUMS C(01,00,98);
  671. ITEM UNODE$CRRT C(00,00,01) = ["0"]; # CARRIAGE CONTROL #
  672. END
  673.  
  674. ARRAY USER$HDR [0:0] S(9); # HEADER FOR USER SUMMARY #
  675. BEGIN
  676. ITEM USER$1 C(00,00,88) =
  677. ["0 USER NAME FAMILY F-STATUS USER
  678. U-STATUS APPL A-STATUS"];
  679. END
  680.  
  681. ARRAY USER$LN [0:0] S(9); # USER LINE #
  682. BEGIN
  683. ITEM USER$FIL C(00,00,90) = [" "];
  684. ITEM USER$NAM C(02,00,07);
  685. ITEM USER$FAM C(03,00,07);
  686. ITEM USER$FST C(04,12,03);
  687. ITEM USER$USER C(05,00,07);
  688. ITEM USER$UST C(06,12,03);
  689. ITEM USER$APPL C(07,00,07);
  690. ITEM USER$AST C(08,12,03);
  691. END
  692.  
  693. ARRAY USEDN$HDR [0:0] S(3); # UNUSED NODE HEADER #
  694. BEGIN
  695. ITEM USEDNOD C(00,00,27) = ["0 UNUSED NODE NUMBERS"];
  696. END
  697. CONTROL EJECT;
  698. FUNC DC$FRAME (PFRAM) U;
  699. BEGIN
  700. #
  701. * FUNCTION DC$FRAME
  702. * ENTRY CONDITION : FRAME SIZE
  703. * EXIT CONDITION : CODE REPRESENTING THE FRAME SIZE
  704. * CODE DELIVERED BY FUNCTION CAN BE 0,1, OR 2.
  705. #
  706. DEF F500 # 500 #; # FRAME SIZE 500#
  707. DEF F256 # 256 #; # FRAME SIZE 256#
  708. DEF F1050 # 1050 #; # FRAME SIZE 1050#
  709. DEF FRAME0 # 0 # ; # FRAME SIZE 0 #
  710. DEF FRAME1 # 1 # ; # FRAME SIZE 1 #
  711. DEF FRAME2 # 2 # ; # FRAME SIZE 2 #
  712. ITEM PFRAM ; # FRAME SIZE#
  713.  
  714. ITEM FCODE ; # FRAME CODE#
  715. IF PFRAM EQ FRAME0
  716. THEN
  717. BEGIN
  718. FCODE = F256;
  719. END
  720. ELSE
  721. BEGIN
  722. IF PFRAM EQ FRAME1
  723. THEN
  724. BEGIN
  725. FCODE = F500;
  726. END
  727. ELSE
  728. BEGIN
  729. FCODE = F1050; # FRAME SIZE 1050 #
  730. END
  731. END
  732. DC$FRAME = FCODE ; # RETURN RESULT #
  733. END # END OF DC$FRAME#
  734. CONTROL EJECT;
  735. PROC APPLST;
  736. BEGIN
  737. *IF,DEF,IMS
  738. #
  739. ** APPLST - APPL LISTER
  740. *
  741. * S.M. ILMBERGER
  742. *
  743. * PRINTS TO OUTPUT FILE INFO FROM APPL TABLE
  744. *
  745. * PROC APPLST
  746. *
  747. * ENTRY NONE
  748. *
  749. * EXIT NONE
  750. *
  751. * MESSAGES ABORT FROM APPLST - READ ERROR
  752. *
  753. * METHOD
  754. *
  755. * IF AT LEAST ONE ENTRY EXISTS IN APPL$TABLE
  756. * WRITES APPL HEADER OT OUTPUT FILE
  757. * FOR EACH ENTRY IN APPL$TABLE
  758. * FORMAT AND WRITE APPL LINE TO OUTPUT FILE
  759. * IF NO ENTRIES IN APPL$TABLE
  760. * READ -EOR-
  761. * END
  762. #
  763. *ENDIF
  764.  
  765. ITEM I; # LOOP COUNTER #
  766. ITEM CTEMP C(10); # CHARACTER TEMPORARY #
  767. CONTROL EJECT;
  768. # #
  769. # CODE BEGINS HERE #
  770. # #
  771. IF ATWC[ENTRY1] GR 1
  772. THEN # AT LEAST ONE ENTRY EXISTS #
  773. BEGIN
  774. PGLST(LN2); # COUNT LINES TO BE PRINTED #
  775. WRITEH(OUTFET,APPL$HDR,11); # WRITE APPL HEADER #
  776. READW(LCFFET,APPL$TABLE,ATENTSZ,LCF$STAT);# READ 1ST TAB ENTRY #
  777. IF LCF$STAT NQ TRNS$OK # CK STATUS OF READ #
  778. THEN
  779. ERRMSG(ERMSG2,"APPLST"); # PRINT ERROR MESSAGE #
  780. FOR I=0 WHILE LCF$STAT EQ TRNS$OK
  781. DO
  782. BEGIN # SET UP APPL LINE FROM INFO #
  783. APPL$NAM[0] = ATNAME[I]; # IN APPL$TABL #
  784. IF NOT ATPRIV[I]
  785. THEN
  786. APPL$PRI[0] = "NO";
  787. ELSE
  788. APPL$PRI[0] = "YES";
  789. IF NOT ATUID[I]
  790. THEN
  791. APPL$UID[0] = "NO";
  792. ELSE
  793. APPL$UID[0] = "YES";
  794. IF NOT ATSTAT[I]
  795. THEN
  796. APPL$STA[0] = "EN";
  797. ELSE
  798. APPL$STA[0] = "DI";
  799. IF NOT ATRS[I] # IF RS SET #
  800. THEN
  801. BEGIN
  802. APPL$RS[0] = "NO"; # SET TO NO IF RS NOT SET #
  803. END
  804. ELSE
  805. BEGIN
  806. APPL$RS[0] = "YES"; # SET TO YES OTHERWISE #
  807. END
  808. IF NOT ATKDSP[I]
  809. THEN
  810. APPL$KDP[0] = "NO";
  811. ELSE
  812. APPL$KDP[0] = "YES";
  813. IF NOT ATXFR[I]
  814. THEN
  815. APPL$XFR[0] = "NO";
  816. ELSE
  817. APPL$XFR[0] = "YES";
  818. IF NOT ATPRU[I]
  819. THEN
  820. APPL$PRU[0] = "NO";
  821. ELSE
  822. APPL$PRU[0] = "YES";
  823. CTEMP = XCDD(ATMAXC[I]); # CONVERT TO DISPLAY CODE #
  824. APPL$MAXC[0] = C<8,2>CTEMP; # ASSIGN TO MAXC ENTRY #
  825. PGLST(LN1);
  826. WRITEH(OUTFET,APPL$LN,11); # WRITE APPLICATION LINE #
  827. APPL$FIL[0] = " ";
  828. READW(LCFFET,APPL$TABLE,ATENTSZ,LCF$STAT);
  829. END
  830.  
  831. END
  832.  
  833. ELSE
  834. BEGIN # APPL TABLE HAS NO ENTRIES #
  835. READW(LCFFET,APPL$TABLE,1,LCF$STAT); # READ -EOR- #
  836. IF LCF$STAT NQ LOC(ATWORD[0]) # MAKE SURE -EOR- WAS READ #
  837. THEN # EOR NOT READ #
  838. ERRMSG(ERMSG2,"APPLST");
  839. END # ELSE #
  840.  
  841. RETURN;
  842. END # APPLST PROC #
  843. CONTROL EJECT;
  844. PROC CPLLST;
  845. BEGIN
  846. *IF,DEF,IMS
  847. #
  848. ** CPLLST - COUPLER LISTER.
  849. *
  850. * S.M. ILMBERGER 81/10/27
  851. *
  852. * PRINTS COUPLER INFO FROM PLINK$XREF TABLE
  853. *
  854. * PROC CPLLST
  855. *
  856. * ENTRY NONE
  857. *
  858. * EXIT NONE
  859. *
  860. * MESSAGES NONE
  861. *
  862. * METHOD
  863. *
  864. * FOR EACH COUPLER ENTRY IN PLINK$XREF TABLE
  865. * IF THE CURRENT NPU NODE-ID MATCHES ENTRY NODE-ID
  866. * WRITE COUPLER HEADER TO OUTPUT FILE
  867. * FORMAT AND WRITE COUPLER LINE TO OUTPUT FILE
  868. * CALL LLKLST
  869. * END
  870. #
  871. *ENDIF
  872.  
  873. DEF COUPLER # 0 #; # LINK TYPE IS 0 IF LINK IS COUPLER #
  874. DEF PRIM # 0 #; # PRIMARY COUPLER #
  875.  
  876. ITEM I; # LOOP COUNTER #
  877. CONTROL EJECT;
  878. # #
  879. # CODE BEGINS HERE #
  880. # #
  881. FOR I=ENTRY1 STEP 1 UNTIL (PLWC[ENTRY0]-1)/PLENTSZ
  882. DO
  883. BEGIN # SEARCH PHYSICAL LINK TABLE #
  884. IF PLTYPE[I] EQ COUPLER # IF ENTRY IS COUPLER AND NPU NODE #
  885. AND PLNID1[I] EQ NODE$ID # ID MATCHES #
  886. THEN
  887. BEGIN # SET UP COUPLER LINE FOR OUTPUT #
  888. CPL$NAM[0] = PLNAME[I];
  889. TEMP1 = PLHNID[I]; # CONVERT NODE NUMBER TO DISPLAY CODE #
  890. TEMP2 = XCDD(TEMP1);
  891. CPL$NOD[0] = C<8,2>TEMP2;
  892. CPL$HNA[0] = PLHNAME[I];
  893. IF PLLOC[I] EQ PRIM
  894. THEN
  895. CPL$LOC[0] = "PRIMARY";
  896. ELSE
  897. CPL$LOC[0] = "SECOND";
  898. CPL$ID = PLHNID[I];
  899. PGLST(LN3);
  900. WRITEH(OUTFET,CPL$HDR,6);
  901. WRITEH(OUTFET,CPL$LN,6);
  902. CPL$FILL[0] = " ";
  903. WORD = (PLHNID[I] - 1) / 60; # COMPUTE WORD AND #
  904. BIT = (PLHNID[I] - 1) - (60 * WORD);# BIT TO REFER TO#
  905. B<BIT,1>NODEMAP[WORD] = 1;
  906. LLKLST;
  907. END
  908.  
  909. END # I LOOP #
  910.  
  911. RETURN;
  912. END # CPLLST PROC #
  913. CONTROL EJECT;
  914. PROC DEFLST;
  915. BEGIN
  916. *IF,DEF,IMS
  917. #
  918. ** DEFLST - DEFINE LISTER
  919. *
  920. * S.M. ILMBERGER 81/10/27
  921. *
  922. * PRINTS DEFINES FROM DEFINE$TABLE
  923. *
  924. * PROC DEFLST
  925. *
  926. * ENTRY NONE
  927. *
  928. * EXIT NONE
  929. *
  930. * MESSAGES NONE
  931. *
  932. * METHOD
  933. *
  934. * CALLS PGLST TO PRINT PAGE HEADER
  935. * IF DEFINE$TABLE EMPTY
  936. * WRITE NO DEFINES ON OUTPUT FILE
  937. * IF DEFINE$TABLE NOT EMPTY
  938. * WRITE DEFINE HEADER TO OUTPUT FILE
  939. * FOR EACH ENTRY IN DEFINE TABLE
  940. * FORMAT AND WRITE DEFINE LINE TO OUTPUT FILE
  941. * END
  942. #
  943. *ENDIF
  944.  
  945. ITEM DONE B; # TRUE IF ALL DEFINES PROCESSED #
  946. ITEM I; # LOOP COUNTER #
  947. ITEM J; # LOOP COUNTER #
  948. ITEM K; # LOOP COUNTER #
  949. ITEM L; # LOOP COUNTER #
  950. CONTROL EJECT;
  951. # #
  952. # CODE BEGINS HERE #
  953. # #
  954. LST$TYP[0] = " DEFINES LIST ";
  955. PGLST(NEWPAGE);
  956. IF DTWC[0] LQ 1 # NO DEFINES COMMANDS #
  957. THEN
  958. BEGIN
  959. PGLST(LN2);
  960. WRITEH(OUTFET,NO$DEF,6); # PRINT MESSAGE NO DEFINES #
  961. END
  962.  
  963. ELSE
  964. BEGIN # DEFINE COMMANDS EXIST #
  965. PGLST(LN2);
  966. WRITEH(OUTFET,DEF$HDR,4); # PRINT DEFINE LINE #
  967. DONE = FALSE;
  968. J = 1;
  969. FOR I=1 WHILE NOT DONE
  970. DO
  971. BEGIN # FORMAT DEFINE LINE #
  972. DEF$LAB[0] = DEFNAME[J];
  973. IF DEFWCNT[J] LQ 11
  974. THEN # DEFINE STRING LESS THAN 10 WORDS LONG #
  975. BEGIN
  976. FOR K=0 STEP 1 UNTIL DEFWCNT[J]-1
  977. DO
  978. DEF$STR[K] = DEFSTRNG[J+K+1];
  979. PGLST(LN1);
  980. WRITEH(OUTFET,DEF$L,12); # WRITE DEFINE LINE #
  981. DEF$TOTAL[0] = " ";
  982. END
  983.  
  984. ELSE
  985. BEGIN # DEFINE CONTENTS WILL NOT FIT ON ONE LINE#
  986. FOR K=0 STEP 1 UNTIL 9
  987. DO
  988. DEF$STR[K] = DEFSTRNG[J+K+1]; # FILL FIRST LINE #
  989. PGLST(LN1);
  990. WRITEH(OUTFET,DEF$L,12);
  991. DEF$TOTAL[0] = " ";
  992. FOR K=10 STEP 10 UNTIL DEFWCNT[J]
  993. DO
  994. BEGIN
  995. DEF$STR[0] = " ";
  996. FOR L=0 STEP 1 WHILE L LQ 9
  997. AND L+K LQ DEFWCNT[J]-1
  998. DO
  999. DEF$STR[L] = DEFSTRNG[J+K+L+1];
  1000. PGLST(LN1);
  1001. WRITEH(OUTFET,DEF$L,12); # WRITE DEFINE LINE #
  1002. DEF$TOTAL[0] = " ";
  1003. END
  1004.  
  1005. END
  1006.  
  1007. J = DEFWCNT[J] + J + 1;
  1008. IF J GR DTWC[ENTRY0]
  1009. THEN
  1010. DONE = TRUE;
  1011. END # I LOOP #
  1012.  
  1013. END
  1014.  
  1015. RETURN;
  1016. END # DEFLST PROC #
  1017. CONTROL EJECT;
  1018. PROC DEVLST(TRMWORD);
  1019. BEGIN
  1020. *IF,DEF,IMS
  1021. #
  1022. ** DEVLST - DEVICE LISTER
  1023. *
  1024. * S.M. ILMBERGER 81/10/27
  1025. *
  1026. * PRINTS DEVICE INFO FROM LINE$RECORD
  1027. *
  1028. * PROC DEVLST(TRMWORD)
  1029. *
  1030. * ENTRY TRMWORD - INDEX OF FIRST WORD OF TERMINAL
  1031. * ENTRY IN LINE$RECORD
  1032. *
  1033. * EXIT NONE
  1034. *
  1035. * MESSGES
  1036. * ABORT FROM DEVLST -FN VAL NOT DEVIC FN
  1037. *
  1038. * METHOD
  1039. *
  1040. * IF AT LEAST ONE DEVICE ENTRY EXISTS FOR THIS TERMINAL
  1041. * WRITE DEVICE HEADERS TO OUTPUT FILE
  1042. * FOR EACH DEVICE ENTRY ON THE TERMINAL
  1043. * SET DEVICE INFO FROM TERMINAL AND DEVICE ENTRY ITEMS
  1044. * FOR EACH FNFV PAIR IN DEVICE ENTRY
  1045. * SAVE EACH FN-VAL IN CORRESPONDING FV-VAL POSITION OF
  1046. * DEVICE OUTPUT LINE
  1047. * WRITE DEVICE LINES TO OUTPUT FILE
  1048. * END
  1049. *
  1050. #
  1051. *ENDIF
  1052.  
  1053. ITEM TRMWORD I; # FIRST WORD OF TERMINAL ENTRY #
  1054.  
  1055. DEF DT$CP # 3 #; # DEVICE TYPE FOR CP #
  1056. DEF DT$CR # 1 #; # DEVICE TYPE FOR CR #
  1057. DEF DT$AP # 6 #; # DEVICE TYPE FOR AP #
  1058. DEF DT$CON # 0 #; # DEVICE TYPE FOR CON #
  1059. DEF DT$LP # 2 #; # DEVICE TYPE FOR LP #
  1060. DEF DT$PL # 4 #; # DEVICE TYPE FOR PL #
  1061. DEF EIGHT # 8 #; # LENGTH OF DEVICE LIST #
  1062. DEF TWELVE # 12 #; # LENGTH OF NEW DEVICE LIST #
  1063. DEF FOUR # 4 #; # NUMBER OF PARITIES #
  1064. DEF MAXFNDEV # 148 #; # MAX DEVICE FN VALUE #
  1065. DEF MXEBR # 3 #; # MAXIMUM NUMBER OF EBR/ELR VALUES - 1 #
  1066. DEF PRU$SIZE # 640 #; # MULTIPLE TO CONVERT DBZ #
  1067. DEF SDT$12 # 12 #; # BEGINNING USER VALUE OF SDT #
  1068. DEF SDT$15 # 15 #; # ENDING USER VALUE OF SDT #
  1069. DEF SUBT$3780 # 2 #; # 3780 SUB-TIPTYPE NUMBER #
  1070. DEF THREE # 3 #; # NUMBER OF OUTPUT DEVICES AND #
  1071. # SUB-DEVICE TYPES FOR LP DEV-TYPE #
  1072. DEF TT$BSC # 5 #; # TIPTYPE NUMBER FOR BSC #
  1073. DEF TT$HASP # 3 #; # TIPTYPE NUMBER FOR HASP #
  1074. DEF TT$MODE4 # 2 #; # TIPTYPE NUMBER FOR MODE4 #
  1075. DEF TT$12 # 12 #; # TIPTYPE NUMBER FOR TT12 #
  1076. DEF TT$3270 # 15 #; # TIPTYPE NUMBER FOR 3270 #
  1077. DEF TWO # 2 #; # NUMBER OF ENTRIES IN TABLE #
  1078.  
  1079. ITEM I; # LOOP COUNTER #
  1080. ITEM J; # LOOP COUNTER #
  1081. ITEM LENGTH I; # LENGTH OF ROOT NAME FOR DEVICE #
  1082. ITEM TEMPDLC I=0; # TEMP STORAGE FOR DLC VALUE #
  1083. ITEM TEMPXBZ I=0; # TEMP STORAGE FOR XBZ VALUE #
  1084. ITEM DEVWORD; # WORD COUNT FOR TABLE #
  1085.  
  1086. ARRAY TEMP$DBZ [0:0] S(1);
  1087. BEGIN
  1088. ITEM TEMPDBZ1 I(00,44,08); # MSB OF DBZ #
  1089. ITEM TEMPDBZ2 I(00,52,08); # LSB OF DBZ #
  1090. ITEM TEMPDBZ3 I(00,44,16); # MSB AND LSB OF DBZ #
  1091. ITEM TEMPDBZ I(00,00,60) = [0];
  1092. END
  1093.  
  1094. ARRAY DEV$TYPES [0:TWELVE] S(1);
  1095. ITEM DEV$TYP C(00,00,04)=[" CON"," CR"," LP"," CP"," PL",
  1096. " "," AP"," "," "," "," ",
  1097. " ", "DT12"];
  1098. ARRAY FV$EBRS [0:MXEBR] S(1);
  1099. ITEM FV$EBR C(00,00,10) = ["NO","CR","LF","CL"];
  1100.  
  1101. ARRAY FV$ELOS [0:TWO] S(1);
  1102. ITEM FV$ELO C(00,00,10) = [" ","EL","EB"];
  1103.  
  1104. ARRAY FV$INS [0:TWO] S(1);
  1105. ITEM FV$IN C(00,00,02) = ["KB","PT","BK"];
  1106.  
  1107. ARRAY FV$OPS [0:THREE] S(1);
  1108. ITEM FV$OP C(00,00,02) = ["PR","DI","PT"];
  1109.  
  1110. ARRAY FV$PAS [0:FOUR] S(1);
  1111. ITEM FV$PA C(00,00,01) = ["Z","O","E","N","I"];
  1112.  
  1113. ARRAY SDT$CRS [0:TWO] S(1);
  1114. ITEM SDT$CR C(00,00,02) = ["29","26"];
  1115.  
  1116. ARRAY SDT$USR [SDT$12:SDT$15] S(1);
  1117. ITEM SDT$USER C(00,00,05) = ["SDT12","SDT13","SDT14","SDT15"];
  1118.  
  1119. ARRAY SDT$LPS [0:THREE] S(1);
  1120. ITEM SDT$LP C(00,00,02) = ["A6","B6","A9"];
  1121.  
  1122. ARRAY SDT$PLS [0:TWO] S(1);
  1123. ITEM SDT$PL C(00,00,04) = ["6BIT","8BIT"];
  1124.  
  1125. ARRAY Y$N$S [0:TWO] S(1);
  1126. ITEM Y$N C(00,00,03) = ["NO","YES"];
  1127.  
  1128. SWITCH FN$VAL
  1129. ERR ,# 0 # ERR ,# 1 # ERR ,# 2 # ERR ,# 3 #
  1130. ERR ,# 4 # ERR ,# 5 # ERR ,# 6 # ERR ,# 7 #
  1131. ERR ,# 8 # ERR ,# 9 # ERR ,# 10 # ERR ,# 11 #
  1132. ERR ,# 12 # ERR ,# 13 # ERR ,# 14 # ERR ,# 15 #
  1133. ERR ,# 16 # ERR ,# 17 # TST ,# 18 # ERR ,# 19 #
  1134. HN ,# 20 # ERR ,# 21 # AUTOCON,# 22 # PRI ,# 23 #
  1135. UBL ,# 24 # UBZ ,# 25 # ABL ,# 26 # DBL ,# 27 #
  1136. DBZ$MSB,# 28 # DBZ$LSB,# 29 # XBZ$MSB,# 30 # XBZ$LSB,# 31 #
  1137. LK ,# 32 # ERR ,# 33 # TST ,# 34 # PW ,# 35 #
  1138. PL ,# 36 # PG ,# 37 # CN ,# 38 # BS ,# 39 #
  1139. CT ,# 40 # AB ,# 41 # B1 ,# 42 # B2 ,# 43 #
  1140. CI ,# 44 # LI ,# 45 # ERR ,# 46 # ERR ,# 47 #
  1141. SE ,# 48 # EP ,# 49 # PA ,# 50 # BR ,# 51 #
  1142. TST ,# 52 # IN ,# 53 # OP ,# 54 # FA ,# 55 #
  1143. ERR ,# 56 # DLC$MSB,# 57 # DLC$LSB,# 58 # DLX ,# 59 #
  1144. DLTO ,# 60 # ELX ,# 61 # ELO ,# 62 # ELR ,# 63 #
  1145. EBX ,# 64 # EBO ,# 65 # EBR ,# 66 # IC ,# 67 #
  1146. OC ,# 68 # XLY ,# 69 # ERR ,# 70 # CP ,# 71 #
  1147. TST ,# 72 # TST ,# 73 # TST ,# 74 # TST ,# 75 #
  1148. SDT ,# 76 # TST ,# 77 # TST ,# 78 # TST ,# 79 #
  1149. DO1 ,# 80 # ERR ,# 81 # ERR ,# 82 # ERR ,# 83 #
  1150. ERR ,# 84 # ERR ,# 85 # ERR ,# 86 # ERR ,# 87 #
  1151. TST ,# 88 # ERR ,# 89 # TST ,# 90 # TST ,# 91 #
  1152. TST ,# 92 # TST ,# 93 # TST ,# 94 # TST ,# 95 #
  1153. TST ,# 96 # TST ,# 97 # TST ,# 98 # TST ,# 99 #
  1154. ERR ,#100 # ERR ,#101 # MC ,#102 # ERR ,#103 #
  1155. ERR ,#104 # ERR ,#105 # ERR ,#106 # ERR ,#107 #
  1156. ERR ,#108 # ERR ,#109 # ERR ,#110 # TST ,#111 #
  1157. ERR ,#112 # TST ,#113 # TST ,#114 # TST ,#115 #
  1158. TST ,#116 # TST ,#117 # TST ,#118 # TST ,#119 #
  1159. TST ,#120 # TST ,#121 # TST ,#122 # TST ,#123 #
  1160. TST ,#124 # TST ,#125 # TST ,#126 # TST ,#127 #
  1161. TST ,#128 # TST ,#129 # TST ,#130 # TST ,#131 #
  1162. TST ,#132 # TST ,#133 # TST ,#134 # TST ,#135 #
  1163. TST ,#136 # TST ,#137 # TST ,#138 # TST ,#139 #
  1164. TST ,#140 # TST ,#141 # TST ,#142 # TST ,#143 #
  1165. TST ,#144 # RTS ,#145 # TST ,#146 # MCI ,#147 #
  1166. MLI ;#148 #
  1167. CONTROL EJECT;
  1168. # #
  1169. # CODE BEGINS HERE #
  1170. # #
  1171. IF TEWC[TRMWORD] GR 2
  1172. THEN # AT LEAST 1 DEVICE ENTRY EXISTS #
  1173. BEGIN
  1174. PGLST(LN3);
  1175. WRITEH(OUTFET,DEV$HDR1,13); # WRITE DEVICE HEADERS #
  1176. WRITEH(OUTFET,DEV$HDR2,13);
  1177. WRITEH(OUTFET,DEV$HDR3,13);
  1178. END
  1179.  
  1180. FOR DEVWORD=TRMWORD+2 WHILE DEVWORD-TRMWORD+1 LQ TEWC[TRMWORD]
  1181. DO # STEP THRU DEVICE ENTRY IN LINE RECORD #
  1182. BEGIN
  1183. IF LINREC$GC EQ 0 # NOT A GROUP STATEMENT #
  1184. THEN
  1185. BEGIN
  1186. DEV$NAM[0] = DENAME[DEVWORD+1]; # SET DEVICE NAME #
  1187. END
  1188. ELSE # DEVICE IS PART OF GROUP STATEMENT #
  1189. BEGIN
  1190. LENGTH = 0;
  1191. FOR I=0 STEP 1 UNTIL 6 # FIND LENGTH OF ROOT NAME #
  1192. DO
  1193. BEGIN
  1194. IF C<I,1>DENAME[DEVWORD+1] NQ " " # NAME IS LEFT JUSTIFIED #
  1195. THEN
  1196. BEGIN
  1197. LENGTH = LENGTH + 1;
  1198. END
  1199. END
  1200. TEMP2 = XCHD(PORTNUM);
  1201. C<0,LENGTH>DEV$NAM[0] = DENAME[DEVWORD+1];
  1202. IF C<8,1>TEMP2 EQ " "
  1203. THEN
  1204. C<8,1>TEMP2 = "0";
  1205. C<LENGTH,2>DEV$NAM[0] = C<8,2>TEMP2;
  1206. END
  1207. DEV$DT[0] = DEV$TYP[DEDT[DEVWORD+2]]; # SET DEVICE TYPE #
  1208. DEV$PRI[0] = "NO";
  1209. DEV$ACON[0] = "NO";
  1210. WORD = DEVWORD + 2;
  1211. BIT = 24;
  1212. FOR J=1 STEP 1 UNTIL DEFNFV[DEVWORD+1]
  1213. DO
  1214. BEGIN # GET NEXT FN-FV PAIR FROM DEVICE ENTRY OF#
  1215. IF BIT+16 LQ 60 # LINE RECORD #
  1216. THEN # WHOLE FNFV PAIR FITS IN THIS WORD #
  1217. BEGIN
  1218. FNFV$ENT[0] = B<BIT,16>LRWORD[WORD];
  1219. IF BIT+16 LS 60
  1220. THEN
  1221. BIT = BIT + 16;
  1222. ELSE
  1223. BEGIN # BIT +16 = 60 #
  1224. BIT = 0;
  1225. WORD = WORD + 1;
  1226. END
  1227.  
  1228. END
  1229.  
  1230. ELSE # FN-FV PAIR OVERLAPS NEXT WORD #
  1231. BEGIN # BIT + 16 GR 60 #
  1232. B<0,60-BIT>FNFV$ENT[0] = B<BIT,60-BIT>LRWORD[WORD];
  1233. B<60-BIT,BIT+16-60>FNFV$ENT[0] =
  1234. B<0,BIT+16-60>LRWORD[WORD+1];
  1235. WORD = WORD + 1;
  1236. BIT = BIT + 16 - 60;
  1237. END
  1238.  
  1239. IF FN$ENT[0] GR MAXFNDEV
  1240. THEN # FN VALUE TO LARGE #
  1241. ERRMSG(ERMSG5,"DEVLST");
  1242.  
  1243. GOTO FN$VAL[FN$ENT[0]]; # SAVE INFO IN OUTPU DEVICE LINE FOR#
  1244. # EACH PARAMETER SPECIFIED ON INPUT LINE #
  1245. ERR:
  1246. ERRMSG(ERMSG5,"DEVLST");
  1247.  
  1248. TST:
  1249. TEST J;
  1250.  
  1251. DBL: # FNFV PAIR IS DBL-SET INFO IN DEVICE LINE#
  1252. TEMP1 = FV$ENT[0];
  1253. TEMP2 = XCDD(TEMP1); # CONVERT TO DISPLAY #
  1254. DEV$DBL[0] = C<9,1>TEMP2;
  1255. TEST J;
  1256.  
  1257. PW: # SET PAGE WIDTH #
  1258. TEMP1 = FV$ENT[0];
  1259. TEMP2 = XCDD(TEMP1); # CONVERT PW VALUE TO DISPLAY CODE #
  1260. DEV$PW[0] = C<7,3>TEMP2;
  1261. TEST J;
  1262.  
  1263. PL:
  1264. TEMP1 = FV$ENT[0];
  1265. TEMP2 = XCDD(TEMP1); # CONVERT PL VALUE TO DISPLAY CODE #
  1266. DEV$PL[0] = C<7,3>TEMP2;
  1267. TEST J;
  1268.  
  1269. CN:
  1270. TEMP1 = FV$ENT[0];
  1271. TEMP2 = XCHD(TEMP1); # CONVERT CN VALUE TO DISPLAY CODE #
  1272. DEV$CN[0] = C<8,2>TEMP2;
  1273. TEST J;
  1274.  
  1275. BS:
  1276. TEMP1 = FV$ENT[0];
  1277. TEMP2 = XCHD(TEMP1); # CONVERT BS VALUE TO DISPLAY CODE #
  1278. DEV$BS[0] = C<8,2>TEMP2;
  1279. TEST J;
  1280.  
  1281. CT:
  1282. TEMP1 = FV$ENT[0];
  1283. TEMP2 = XCHD(TEMP1); # CONVERT CT VALUE TO DISPLAY CODE #
  1284. DEV$CT[0] = C<8,2>TEMP2;
  1285. TEST J;
  1286.  
  1287. CI:
  1288. TEMP1 = FV$ENT[0];
  1289. TEMP2 = XCDD(TEMP1); # CONVERT CI VALUE TO DISPLAY CODE #
  1290. DEV$CI[0] = C<8,2>TEMP2;
  1291. TEST J;
  1292.  
  1293. LI:
  1294. TEMP1 = FV$ENT[0];
  1295. TEMP2 = XCDD(TEMP1); # CONVERT LI VALUE TO DISPLAY CODE #
  1296. DEV$LI[0] = C<8,2>TEMP2;
  1297. TEST J;
  1298.  
  1299. SE: # SET SI VALUE TO YES OR NO #
  1300. DEV$SE[0] = Y$N[FV$ENT[0]];
  1301. TEST J;
  1302.  
  1303. CP: # SET CP VALUE TO YES OR NO #
  1304. DEV$CP[0] = Y$N[FV$ENT[0]];
  1305. TEST J;
  1306.  
  1307. ELX:
  1308. TEMP1 = FV$ENT[0];
  1309. TEMP2 = XCHD(TEMP1); # CONVERT ELX VALUE TO DISPLY CODE #
  1310. DEV$ELX[0] = C<8,2>TEMP2;
  1311. TEST J;
  1312.  
  1313. ELO:
  1314. DEV$ELO[0] = FV$ELO[FV$ENT[0]];
  1315. TEST J;
  1316.  
  1317. ELR:
  1318. DEV$ELR[0] = FV$EBR[FV$ENT[0]];
  1319. TEST J;
  1320.  
  1321. EBX:
  1322. TEMP1 = FV$ENT[0];
  1323. TEMP2 = XCHD(TEMP1); # CONVERT EBX VALUE TO DISPLY CODE #
  1324. DEV$EBX[0] = C<8,2>TEMP2;
  1325. TEST J;
  1326.  
  1327. EBO:
  1328. DEV$EBO[0] = FV$ELO[FV$ENT[0]];
  1329. TEST J;
  1330.  
  1331. EBR:
  1332. DEV$EBR[0] = FV$EBR[FV$ENT[0]];
  1333. TEST J;
  1334.  
  1335. FA:
  1336. DEV$FA[0] = Y$N[FV$ENT[0]];
  1337. TEST J;
  1338.  
  1339. IC:
  1340. DEV$IC[0] = Y$N[FV$ENT[0]];
  1341. TEST J;
  1342.  
  1343. OC:
  1344. DEV$OC[0] = Y$N[FV$ENT[0]];
  1345. TEST J;
  1346.  
  1347. RTS: DEV$RTS[0] = Y$N[FV$ENT[0]];
  1348. TEST J;
  1349. MCI:
  1350. TEMP1 = FV$ENT[0];
  1351. TEMP2 = XCDD(TEMP1); # CONVERT TO DISPLAY #
  1352. DEV$MCI[0] = C<7,3>TEMP2;
  1353. TEST J;
  1354.  
  1355. MLI:
  1356. TEMP1 = FV$ENT[0];
  1357. TEMP2 = XCDD(TEMP1); # CONVERT TO DISPLAY #
  1358. DEV$MLI[0] = C<7,3>TEMP2;
  1359. TEST J;
  1360.  
  1361. LK:
  1362. DEV$LK[0] = Y$N[FV$ENT[0]];
  1363. TEST J;
  1364.  
  1365. DLC$MSB: # SAVE FIRST HALF OF DLC #
  1366. B<44,8>TEMPDLC = FV$ENT[0];
  1367. TEST J;
  1368.  
  1369. DLC$LSB: # SECOND HALF OF DLC #
  1370. B<52,8>TEMPDLC = FV$ENT[0];
  1371. TEMP2 = XCDD(TEMPDLC);
  1372. DEV$DLC[0] = C<6,4>TEMP2;
  1373. TEST J;
  1374.  
  1375. DLX:
  1376. TEMP1 = FV$ENT[0];
  1377. TEMP2 = XCHD(TEMP1);
  1378. DEV$DLX[0] = C<8,2>TEMP2; # STORE DLX VALUE IN DEV OUTPUT LIN#
  1379. TEST J;
  1380.  
  1381. DLTO:
  1382. DEV$DLTO[0] = Y$N[FV$ENT[0]]; # SAVE DLTO VAL IN DEV OUTPUT #
  1383. TEST J;
  1384.  
  1385. IN:
  1386. DEV$IN[0] = FV$IN[FV$ENT[0]];
  1387. TEST J;
  1388.  
  1389. OP:
  1390. DEV$OP[0] = FV$OP[FV$ENT[0]];
  1391. TEST J;
  1392.  
  1393. EP:
  1394. DEV$EP[0] = Y$N[FV$ENT[0]];
  1395. TEST J;
  1396.  
  1397. PG:
  1398. DEV$PG[0] = Y$N[FV$ENT[0]];
  1399. TEST J;
  1400.  
  1401. PA:
  1402. DEV$PA[0] = FV$PA[FV$ENT[0]];
  1403. TEST J;
  1404.  
  1405. AB:
  1406. TEMP1 = FV$ENT[0];
  1407. TEMP2 = XCHD(TEMP1);
  1408. DEV$AB[0] = C<8,2>TEMP2;
  1409. TEST J;
  1410.  
  1411. B1:
  1412. TEMP1 = FV$ENT[0];
  1413. TEMP2 = XCHD(TEMP1);
  1414. DEV$B1[0] = C<8,2>TEMP2;
  1415. TEST J;
  1416.  
  1417. B2:
  1418. TEMP1 = FV$ENT[0];
  1419. TEMP2 = XCHD(TEMP1);
  1420. DEV$B2[0] = C<8,2>TEMP2;
  1421. TEST J;
  1422.  
  1423. HN:
  1424. TEMP1 = FV$ENT[0];
  1425. TEMP2 = XCDD(TEMP1);
  1426. DEV$HN[0] = C<8,2>TEMP2;
  1427. TEST J;
  1428.  
  1429.  
  1430. AUTOCON:
  1431. DEV$ACON[0] = Y$N[FV$ENT[0]];
  1432. TEST J;
  1433.  
  1434. XBZ$MSB:
  1435. B<44,8>TEMPXBZ = FV$ENT[0];
  1436. TEST J;
  1437.  
  1438. XBZ$LSB:
  1439. B<52,8>TEMPXBZ = FV$ENT[0];
  1440. TEMP2 = XCDD(TEMPXBZ);
  1441. DEV$XBZ[0] = C<6,4>TEMP2;
  1442. TEST J;
  1443.  
  1444. SDT:
  1445. IF FV$ENT[0] GQ SDT$12 # IF USER VALUE IS USED #
  1446. THEN
  1447. BEGIN
  1448. DEV$SDT[0] = SDT$USER[FV$ENT[0]]; # SET USER VALUE #
  1449. END
  1450. ELSE
  1451. BEGIN
  1452. IF DEDT[DEVWORD+2] EQ DT$LP # IF PRINTER DEVICE #
  1453. THEN
  1454. BEGIN
  1455. DEV$SDT[0] = SDT$LP[FV$ENT[0]];
  1456. END # SET PRINTER VALUE #
  1457. ELSE
  1458. BEGIN
  1459. IF DEDT[DEVWORD+2] EQ DT$CR # IF CARD READER DEVICE #
  1460. THEN
  1461. BEGIN
  1462. DEV$SDT[0] = SDT$CR[FV$ENT[0]]; # SET CR VALUE #
  1463. END
  1464. ELSE
  1465. BEGIN
  1466. IF DEDT[DEVWORD+2] EQ DT$PL # IF PLOTTER DEVICE #
  1467. THEN
  1468. BEGIN
  1469. DEV$SDT[0] = SDT$PL[FV$ENT[0]];
  1470. END
  1471. END
  1472. END
  1473. END
  1474. TEST J;
  1475.  
  1476.  
  1477. UBZ:
  1478. IF C<0,2>LN$TIPT[0] NQ "TT" # IF NOT USER-DEFN TIPTYP #
  1479. THEN
  1480. BEGIN
  1481. TEMP1 = FV$ENT[0];
  1482. IF DEV$DT[0] EQ DEV$TYP[DT$CON] # IF ACTIVE DEVICE TYPE #
  1483. THEN
  1484. TEMP2 = XCDD(TEMP1*UBZ$CON); # ACTIVE DEVICE MULTIPLIER #
  1485. ELSE
  1486. TEMP2 = XCDD(TEMP1*PRU$SZ); # PASSIVE DEVICE MULTIPLIER #
  1487. END
  1488. ELSE
  1489. BEGIN # USER DEFINED TIPTYPE #
  1490. TEMP2 = XCDD(FV$ENT[0]);
  1491. END
  1492. DEV$UBZ[0] = C<6,4>TEMP2;
  1493. TEST J;
  1494.  
  1495. DBZ$MSB:
  1496. IF C<0,2>LN$TIPT[0] EQ "TT" OR
  1497. C<0,2>DEV$DT[0] EQ "DT" OR
  1498. DEV$DT[0] EQ DEV$TYP[DT$CON] OR
  1499. DEV$DT[0] EQ DEV$TYP[DT$AP]
  1500. THEN
  1501. BEGIN
  1502. TEMPDBZ1[0] = FV$ENT[0];
  1503. END
  1504. TEST J;
  1505.  
  1506. DBZ$LSB:
  1507. IF C<0,2>LN$TIPT[0] EQ "TT" OR
  1508. C<0,2>DEV$DT[0] EQ "DT" OR
  1509. DEV$DT[0] EQ DEV$TYP[DT$CON] OR
  1510. DEV$DT[0] EQ DEV$TYP[DT$AP]
  1511. THEN
  1512. BEGIN
  1513. TEMPDBZ2[0] = FV$ENT[0];
  1514. END
  1515. ELSE
  1516. BEGIN
  1517. TEMPDBZ3[0] = PRU$SIZE*FV$ENT[0];
  1518. END
  1519. TEMP2 = XCDD(TEMPDBZ[0]);
  1520. DEV$DBZ[0] = C<6,4>TEMP2;
  1521. TEMPDBZ[0] = 0;
  1522. TEST J;
  1523.  
  1524. ABL:
  1525. TEMP1 = FV$ENT[0];
  1526. TEMP2 = XCDD(TEMP1);
  1527. DEV$ABL[0] = C<9,1>TEMP2;
  1528. TEST J;
  1529.  
  1530. DO1:
  1531. TEMP1 = FV$ENT[0];
  1532. TEMP2 = XCDD(TEMP1);
  1533. DEV$DO[0] = C<9,1>TEMP2;
  1534. TEST J;
  1535.  
  1536. BR:
  1537. DEV$BR[0] = Y$N[FV$ENT[0]];
  1538. TEST J;
  1539.  
  1540. UBL:
  1541. TEMP1 = FV$ENT[0];
  1542. TEMP2 = XCDD(TEMP1);
  1543. DEV$UBL[0] = C<8,2>TEMP2;
  1544. TEST J;
  1545.  
  1546. PRI:
  1547. DEV$PRI[0] = Y$N[FV$ENT[0]];
  1548. TEST J;
  1549.  
  1550. XLY:
  1551. TEMP2 = XCHD(FV$ENT[0]);
  1552. DEV$XLY[0] = C<8,2>TEMP2;
  1553. TEST J;
  1554.  
  1555. MC:
  1556. TEMP2 = XCHD(FV$ENT[0]);
  1557. DEV$MC[0] = C<8,2>TEMP2;
  1558.  
  1559. END # J LOOP #
  1560.  
  1561. IF TETP[TRMWORD+1] EQ TT$MODE4 # IF TIPTYPE = MODE4 #
  1562. OR (TETP[TRMWORD+1] GQ TT$12 AND TETP[TRMWORD+1] LQ TT$3270)
  1563. THEN # OR USER TIPTYPES #
  1564. BEGIN
  1565. TEMP1 = DEA2[DEVWORD+2];
  1566. TEMP2 = XCHD(TEMP1);
  1567. DEV$TA[0] = C<8,2>TEMP2; # SET TERMINAL ADDRESS IN DEV OUTPT#
  1568. END # LINE #
  1569.  
  1570. IF TETP[TRMWORD+1] EQ TT$HASP # IF TIPTYPE = HASP #
  1571. THEN
  1572. BEGIN
  1573. TEMP1 = DEA2[DEVWORD+2];
  1574. TEMP2 = XCDD(TEMP1);
  1575. DEV$STR[0] = C<9,1>TEMP2; # SET STREAM VAL IN DEV OUTPUT #
  1576. END # LINE #
  1577.  
  1578. IF TETP[TRMWORD+1] EQ TT$BSC # IF TIPTYPE IS BSC AND SUBTIP IS #
  1579. THEN # 3780 AND DEVICE TYPE IS CP THEN #
  1580. BEGIN # SET TERMINAL ADDRESS #
  1581. IF TESTIP[TRMWORD+1] EQ SUBT$3780
  1582. AND DEDT[DEVWORD+2] EQ DT$CP
  1583. THEN
  1584. BEGIN
  1585. TEMP1 = DEA2[DEVWORD+2];
  1586. TEMP2 = XCDD(TEMP1);
  1587. DEV$TA[0] = C<8,2>TEMP2;
  1588. END
  1589.  
  1590. END
  1591.  
  1592. IF DEST[DEVWORD+2] # SET DEVICE STATUS #
  1593. THEN
  1594. DEV$STAT[0] = "DI";
  1595. ELSE
  1596. DEV$STAT[0] = "EN";
  1597. DEVWORD = DEVWORD + DEWC[DEVWORD];
  1598. PGLST(LN4);
  1599. WRITEH(OUTFET,DEV$LN1,13); # WRITE DEVICE LINES TO OUTPUT FILE#
  1600. WRITEH(OUTFET,DEV$LN2,13);
  1601. WRITEH(OUTFET,DEV$LN3,13);
  1602. DEV1$FIL[0] = " ";
  1603. DEV2$FIL[0] = " ";
  1604. DEV3$FIL = " ";
  1605. END # DEVWORD LOOP #
  1606.  
  1607. RETURN;
  1608. END # DEVLST PROC #
  1609. CONTROL EJECT;
  1610. PROC ERRLST;
  1611. BEGIN
  1612. *IF,DEF,IMS
  1613. #
  1614. ** ERRLST - ERROR LISTER
  1615. *
  1616. * S.M. ILMBERGER 81/10/28
  1617. *
  1618. * PRODUCES ERROR LISTING
  1619. *
  1620. * PROC ERRLST
  1621. *
  1622. * ENTRY NONE
  1623. *
  1624. * EXIT NONE
  1625. *
  1626. * MESSAGE NONE
  1627. *
  1628. * METHOD
  1629. *
  1630. * SET UP ERROR-2-FET
  1631. * FILL ERR-2-BUFFER
  1632. * SET UP ERROR-1-FET
  1633. * FILL ERR-1-BUFFER
  1634. * UNTIL ALL OF ERR-1-BUFFER AND ERR-2-BUFFER ARE DONE
  1635. * GET THE ERROR WITH THE LOWEST LINE NUMBER FROM
  1636. * ERROR-1-BUFFER OR ERR-2-BUFFER
  1637. * FORMAT ERROR-LINE
  1638. * WRITE ERROR-LINE TO OUTPUT FILE
  1639. * READ NEXT ERROR
  1640. * END
  1641. #
  1642. *ENDIF
  1643.  
  1644. DEF NONE # -1 #; # VALUE OF LINE NUMBER FOR THE CASE WHERE
  1645.   THERE IS NO LINE NUMBER BINDING #
  1646. DEF NONE$WRD # " NONE" #; # WORD OUTPUT FOR THE NO LINE NUMBER
  1647.   BINDING CASE. #
  1648. ITEM E1DONE B; # SET IF ALL OF ERROR-FILE-1 IS PROCESSED #
  1649. ITEM E2DONE B; # SET IF ALL OF ERROR-FILE-2 IS PROCESSED #
  1650. ITEM ER1$STAT; # STATUS OF A READ #
  1651. ITEM ER2$STAT; # STATUS OF A READ #
  1652. ITEM I; # LOOP COUNTER #
  1653.  
  1654. ARRAY ERR$LINE [0:0] S(11);
  1655. BEGIN
  1656. ITEM E$LINE I(00,06,30);
  1657. ITEM E$NUM C(00,54,03); # ERROR NUMBER #
  1658. ITEM E$TYPE C(01,54,01); # TYPE OF ERROR "F" OR "W" #
  1659. ITEM E$DETL C(02,30,11); # ERROR DETAIL WORD #
  1660. ITEM E$MSG C(03,54,71); # ERROR MESSAGE #
  1661. ITEM E$FIL C(00,00,110) = [" "];
  1662. END
  1663.  
  1664. ARRAY ERR$TAB1 [0:0] S(2);
  1665. BEGIN
  1666. ITEM E1$CODE I(00,00,12); # ERROR CODE #
  1667. ITEM E1$LINE I(00,12,18); # LINE NUMBER #
  1668. ITEM E1$CWRD C(01,00,10); # CLARIFIER WORD #
  1669. END
  1670.  
  1671. ARRAY ERR$TAB2 [0:0] S(2);
  1672. BEGIN
  1673. ITEM E2$CODE I(00,00,12); # ERROR CODE #
  1674. ITEM E2$LINE I(00,12,18); # LINE NUMBER #
  1675. ITEM E2$CWRD C(01,00,10); # CLARIFIER WORD #
  1676. END
  1677. CONTROL EJECT;
  1678. # #
  1679. # CODE BEGINS HERE #
  1680. # #
  1681. LST$TYP[0] = " ERROR LISTING ";
  1682. PGLST(NEWPAGE);
  1683. E2FIRST[0] = LOC(E2WBWORD[0]);
  1684. E2OUT[0] = LOC(E2WBWORD[0]); # SET UP PASS 2 ERROR FILE #
  1685. E2IN[0] = LOC(E2WBWORD[0]);
  1686. E2LIMIT[0] = LOC(E2WBWORD[0]) + PRULNGTH + 1;
  1687. REWIND(ERR2FET);
  1688. READ(ERR2FET);
  1689. RECALL(ERR2FET);
  1690.  
  1691. E1FIRST[0] = LOC(E1WBWORD[0]); # SET UP PASS 1 ERROR FILE #
  1692. E1OUT[0] = LOC(E1WBWORD[0]);
  1693. E1IN[0] = LOC(E1WBWORD[0]);
  1694. E1LIMIT[0] = LOC(E1WBWORD[0]) + PRULNGTH + 1;
  1695. REWIND(ERR1FET);
  1696. READ(ERR1FET);
  1697. RECALL(ERR1FET);
  1698.  
  1699. PGLST(LN3);
  1700. WRITEH(OUTFET,ERR$HDR,5); # WRITE ERROR HEADER #
  1701. E1DONE = FALSE;
  1702. E2DONE = FALSE;
  1703. READW(ERR1FET,ERR$TAB1,2,ER1$STAT);# READ PASS 1 AND 2 ERR FILES #
  1704. READW(ERR2FET,ERR$TAB2,2,ER2$STAT);
  1705. IF ER1$STAT NQ TRNS$OK OR E1$LINE[0] EQ 0
  1706. THEN # CK IF ERROR FILE-1 EMPTY #
  1707. E1DONE = TRUE;
  1708. IF ER2$STAT NQ TRNS$OK OR E2$LINE[0] EQ 0
  1709. THEN # CK IF ERROR FILE-2 EMPTY #
  1710. E2DONE = TRUE;
  1711. FOR I=0 WHILE (NOT (E1DONE) OR NOT (E2DONE))
  1712. DO # PRINT ERROR INFO UNTIL BOTH ERROR FILE-1 AND ERROR #
  1713. BEGIN # FILE-2 ARE DONE #
  1714. IF (NOT E1DONE AND NOT E2DONE)
  1715. THEN # ERROR FILE 1 AND 2 ARE NOT DONE #
  1716. BEGIN
  1717. IF E1$LINE[0] LQ E2$LINE[0]
  1718. THEN
  1719. GOTO E$1; # GET NEXT ERROR FROM ERROR FILE-1 #
  1720. ELSE
  1721. GOTO E$2; # GET NEXT ERROR FROM ERROR FILE-1 #
  1722. END
  1723.  
  1724. ELSE
  1725. BEGIN
  1726. IF (E1DONE AND NOT E2DONE)
  1727. THEN # ERROR FILE 1 IS DONE BUT NOT ERROR FILE 2 #
  1728. GOTO E$2;
  1729. ELSE
  1730. BEGIN
  1731. IF (NOT E1DONE AND E2DONE)
  1732. THEN # ERROR FILE 2 IS DONE BUT NOT ERROR FILE 1 #
  1733. GOTO E$1;
  1734. END
  1735.  
  1736. END
  1737.  
  1738. TEST I;
  1739.  
  1740. E$1:
  1741. TEMP1 = E1$LINE[0]; # SET UP AND WRITE ERROR MESSAGE#
  1742. TEMP2 = XCDD(TEMP1); # FROM PASS 1 ERROR FILE #
  1743. E$LINE[0] = C<5,5>TEMP2;
  1744. TEMP1 = E1$CODE[0];
  1745. TEMP2 = XCDD(TEMP1);
  1746. E$NUM[0] = C<7,3>TEMP2;
  1747. E$DETL[0] = E1$CWRD[0];
  1748. E$TYPE[0] = EMTTYPE[E1$CODE[0]];
  1749. E$MSG[0] = EMTMSG[E1$CODE[0]];
  1750. PGLST(LN1);
  1751. WRITEH(OUTFET,ERR$LINE,11);
  1752. E$FIL[0] = " ";
  1753. READW(ERR1FET,ERR$TAB1,2,ER1$STAT);
  1754. IF ER1$STAT NQ TRNS$OK OR E1$LINE[0] EQ 0
  1755. THEN
  1756. E1DONE = TRUE;
  1757. TEST I;
  1758. E$2:
  1759. IF E2$LINE[0] EQ NONE # IF NO LINE NUMBER BINDING #
  1760. THEN
  1761. BEGIN
  1762. E$LINE[0] = NONE$WRD; # ASSIGN NONE TO LINE NUMBER #
  1763. END
  1764. ELSE
  1765. BEGIN
  1766. TEMP1 = E2$LINE[0]; # SET UP AND WRITE ERROR MESSAGE#
  1767. TEMP2 = XCDD(TEMP1); # FROM PASS 2 ERROR FILE #
  1768. E$LINE[0] = C<5,5>TEMP2;
  1769. END
  1770. TEMP1 = E2$CODE[0];
  1771. TEMP2 = XCDD(TEMP1);
  1772. E$NUM[0] = C<7,3>TEMP2;
  1773. E$DETL[0] = E2$CWRD[0];
  1774. E$TYPE[0] = EMT2TYPE[E2$CODE[0]];
  1775. E$MSG[0] = EMT2MSG[E2$CODE[0]];
  1776. PGLST(LN1);
  1777. WRITEH(OUTFET,ERR$LINE,11);
  1778. E$FIL[0] = " ";
  1779. READW(ERR2FET,ERR$TAB2,2,ER2$STAT);
  1780. IF ER2$STAT NQ TRNS$OK OR E2$LINE[0] EQ 0
  1781. THEN
  1782. E2DONE = TRUE;
  1783. TEST I;
  1784. END # I LOOP #
  1785.  
  1786. RETURN;
  1787. END # ERRLST PROC #
  1788. CONTROL EJECT;
  1789. PROC ERRMSG(ENUM,EPRC);
  1790. BEGIN
  1791. *IF,DEF,IMS
  1792. #
  1793. ** ERRMSG - PRINT ERROR MESSAGE
  1794. *
  1795. * S.M. ILMBERGER 81/10/29
  1796. *
  1797. * WRITE DAYFILE ERROR MESSAGE
  1798. *
  1799. * PROC ERRMSG(ENUM,EPRC)
  1800. *
  1801. * ENTRY ENUM - SPECIFIES ERROR MESSAGE
  1802. * EPRC - PROC NAME ERROR OCCURED IN
  1803. *
  1804. * EXIT NONE
  1805. *
  1806. * MESSAGES
  1807. * ABORT FROM XXXXXXX - NO SUCH RECORD TYPE
  1808. * ABORT FROM XXXXXXX - READ ERROR
  1809. * ABORT FROM XXXXXXX - BAD NCF FILE RECORD
  1810. * ABORT FROM XXXXXXX - INVALID RECORD TYPE
  1811. * ABORT FROM XXXXXXX - FN VAL NOT DEVIC FN
  1812. * ABORT FROM XXXXXXX - CAN'T READ LIN RECDS
  1813. * ABORT FROM XXXXXXX - CAN'T READ NCF RECDS
  1814. * ABORT FROM XXXXXXX - FN VAL NOT LINE FN
  1815. * ABORT FROM XXXXXXX - FN VAL NOT TERM FN
  1816. *
  1817. * METHOD
  1818. *
  1819. * PUT PROC NAME IN ERROR MESSAGE
  1820. * ISSUE DAYFILE ERROR MESSAGE
  1821. * ABORT
  1822. * END
  1823. *
  1824. #
  1825. *ENDIF
  1826.  
  1827. ITEM ENUM I; # ERROR NUMBER #
  1828. ITEM EPRC C(8); # PROC ERROR OCCURED IN #
  1829. # #
  1830. # CODE BEGINS HERE #
  1831. # #
  1832. EMPROC[ENUM] = EPRC;
  1833. MESSAGE(EM$ENT[ENUM],0); # WRITE ERROR MESSAGE IN DAYFILE #
  1834. ABORT;
  1835. RETURN;
  1836. END # ERRMSG PROC #
  1837. CONTROL EJECT;
  1838. PROC EXSLST;
  1839. BEGIN
  1840. *IF,DEF,IMS
  1841. #
  1842. ** EXSLST - EXPANDED SOURCE LISTER
  1843. *
  1844. * S.M. ILMBERGER 81/10/28
  1845. *
  1846. * PRODUCES EXPANDED SOURCE LISTING
  1847. *
  1848. * PROC EXSLST
  1849. *
  1850. * ENTRY NONE
  1851. *
  1852. * EXIT NONE
  1853. *
  1854. * MESSAGE NONE
  1855. *
  1856. * METHOD
  1857. *
  1858. * SET UP ERROR-2-FET
  1859. * FILL ERROR-2-BUFFER
  1860. * SET UP SECONDARY-INPUT-FET
  1861. * FILL SEC-INP-BUFFER
  1862. * SET UP EXPANDED-SECONDARY-INPUT-FET
  1863. * FILL EXP-SEC-INP-BUFFER
  1864. * WRITE SOURCE HEADER TO OUTPUT FILE
  1865. * FOR EACH LINE IN SEC-INP-BUFFER
  1866. * IF SEC-INP-LINE CONTAINS A DEFINE
  1867. * REPLACE IT WITH EXP-SEC-INP-LINE
  1868. * READ THE NEXT EXP-SEC-INP-LINE
  1869. * IF SEC-INP-LINE NUMBER MATCHES NEXT ERROR-LINE NUMBER
  1870. * FLAG SEC-INP-LINE WITH ERROR FLAG
  1871. * READ NEXT ERROR-LINE FROM ERROR-2-FET
  1872. * WRITE SEC-INP-LINE TO OUTPUT FILE
  1873. * READ NEXT SEC-INP-LINE
  1874. * END
  1875. *
  1876. #
  1877. *ENDIF
  1878.  
  1879. ITEM DEFDONE B; # SET IF ALL DEFINES PROCESSED #
  1880. ITEM ESI$STAT I; # STATUS OF READ ON ESI$BUFFER #
  1881. ITEM ER2DONE B; # SET IF ALL PASS 2 ERRORS PROCESSED #
  1882. ITEM ER$STAT; # STATUS OF A READ #
  1883. ITEM I; # LOOP COUNTER #
  1884. ITEM J; # LOOP COUNTER #
  1885. ITEM LONG$DEF B; # TRUE IF DEFINE MADE ESIBUFF LONGER #
  1886. # THAN 140 CHARACTERS #
  1887.  
  1888. ARRAY ERR2 [0:0] S(2);
  1889. BEGIN
  1890. ITEM E2$CD U(00,00,12);# ERROR CODE #
  1891. ITEM E2$LN U(00,12,18); # LINE NUMBER #
  1892. ITEM E2$CW C(01,00,10);# CLARIFIER WORD #
  1893. END
  1894. CONTROL EJECT;
  1895. # #
  1896. # CODE BEGINS HERE #
  1897. # #
  1898. LST$TYP[0] = "EXPANDED SOURCE";
  1899. PGLST(NEWPAGE);
  1900.  
  1901. E2FIRST[0] = LOC(E2WBWORD[0]); # SET UP PASS 2 ERROR FILE #
  1902. E2OUT[0] = LOC(E2WBWORD[0]);
  1903. E2IN[0] = LOC(E2WBWORD[0]);
  1904. E2LIMIT[0] = LOC(E2WBWORD[0]) + PRULNGTH + 1;
  1905. REWIND(ERR2FET);
  1906. READ(ERR2FET); # FILL CIO BUFFER #
  1907. RECALL(ERR2FET);
  1908.  
  1909. SECFIRST[0] = LOC(SECWORD[0]); # SET UP SECONDARY INPUT FILE #
  1910. SECIN[0] = LOC(SECWORD[0]);
  1911. SECOUT[0] = LOC (SECWORD[0]);
  1912. SECLIMIT[0] = LOC(SECWORD[0]) + PRULNGTH + 1;
  1913. REWIND(SECFET);
  1914. READ(SECFET); # FILL CIO BUFFER #
  1915. RECALL(SECFET);
  1916.  
  1917. ESIFIRST[0] = LOC(ESIWORD[0]); # SET UP EXPANDED SECONDARY INPUT #
  1918. ESIIN[0] = LOC(ESIWORD[0]); # FILE #
  1919. ESIOUT[0] = LOC(ESIWORD[0]);
  1920. ESILIMIT[0] = LOC(ESIWORD[0]) + PRULNGTH + 1;
  1921. REWIND(ESIFET);
  1922. READ(ESIFET); # FILL CIO BUFFER #
  1923. RECALL(ESIFET);
  1924.  
  1925. PGLST(LN3);
  1926. WRITEH(OUTFET,SOURCE$HDR,2);
  1927.  
  1928. DEFDONE = FALSE;
  1929. ER2DONE = FALSE;
  1930. READW(ERR2FET,ERR2,2,ER$STAT); # READ ERROR 2 FILE #
  1931. IF ER$STAT NQ TRNS$OK OR E2$LN[0] EQ 0
  1932. THEN
  1933. ER2DONE = FALSE;
  1934. READH(ESIFET,ESI$BUFFER,14,ESI$STAT);# READ EXP-SECND INPUT FILE #
  1935. READH(SECFET,OUTPT$BUFFER,14,STMT$STAT);# READ SECOND INPUT FILE #
  1936. FOR I=0 WHILE STMT$STAT EQ TRNS$OK
  1937. DO
  1938. BEGIN
  1939. LONG$DEF = FALSE;
  1940. IF OUTDLINE[0] EQ "D"
  1941. THEN
  1942. BEGIN
  1943. OUTBUFF1[0] = ESIBUFF[0];
  1944. READH(ESIFET,ESI$BUFFER,14,ESI$STAT);
  1945. IF ESI$DEF[0] NQ "D"
  1946. THEN
  1947. LONG$DEF = TRUE;
  1948. END
  1949.  
  1950. IF NOT ER2DONE
  1951. THEN
  1952. BEGIN
  1953. TEMP1 = E2$LN[0];
  1954. TEMP2 = XCDD(TEMP1);
  1955. IF C<5,5>TEMP2 EQ OUTLNUM[0]
  1956. THEN
  1957. BEGIN
  1958. OUTELINE[0] = "***";
  1959. READW(ERR2FET,ERR2,2,ER$STAT);
  1960. IF ER$STAT NQ TRNS$OK OR E2$LN[0] EQ 0
  1961. THEN
  1962. ER2DONE = TRUE;
  1963. TEMP1 = E2$LN[0];
  1964. TEMP2 = XCDD(TEMP1);
  1965. IF OUTLNUM[0] EQ C<5,5>TEMP2 # SEE IF 2 OR MORE ERRORS #
  1966. THEN # ON SAME LINE #
  1967. BEGIN
  1968. FOR J=0 WHILE (OUTLNUM[0] EQ C<5,5>TEMP2 AND
  1969. NOT ER2DONE)
  1970. DO
  1971. BEGIN # SKIP ERRORS WITH DUPLICATE LINE NUMBERS #
  1972. READW(ERR2FET,ERR2,2,ER$STAT);
  1973. IF ER$STAT NQ TRNS$OK OR E2$LN[0] EQ 0
  1974. THEN
  1975. ER2DONE = TRUE;
  1976. TEMP1 = E2$LN[0];
  1977. TEMP2 = XCDD(TEMP1);
  1978. END
  1979.  
  1980. END
  1981.  
  1982. END
  1983.  
  1984. END
  1985.  
  1986. PGLST(LN1);
  1987. WRITEH(OUTFET,OUTPT$BUFFER,14);
  1988. OUTBUFF1[0] = " ";
  1989. IF LONG$DEF # DEFINE STRING MADE EXPANDED SOURCE #
  1990. # LINE LONGER THAN ONE LINE #
  1991. THEN # PRINT REST OF LINE #
  1992. BEGIN
  1993. FOR I=0 WHILE ESI$DEF[0] NQ "D"
  1994. AND ESI$STAT EQ TRNS$OK
  1995. DO
  1996. BEGIN
  1997. PGLST(LN1);
  1998. OUTBUFF1[0] = ESIBUFF[0];
  1999. WRITEH(OUTFET,OUTPT$BUFFER,14);
  2000. OUTBUFF1[0] = " ";
  2001. READH(ESIFET,ESI$BUFFER,14,ESI$STAT);
  2002. END
  2003.  
  2004. LONG$DEF = FALSE;
  2005. END
  2006.  
  2007. READH(SECFET,OUTPT$BUFFER,11,STMT$STAT);
  2008. END # I LOOP #
  2009.  
  2010. RETURN;
  2011. END # EXSLST PROC #
  2012. CONTROL EJECT;
  2013. PROC HDRLST; # PRINT HEADER INFO FOR LCF AND NCF #
  2014. BEGIN
  2015. *IF,DEF,IMS
  2016. #
  2017. ** HDRLST - HEADER INFO LISTER
  2018. *
  2019. * S.M. ILMBERGER 81/10/28
  2020. *
  2021. * PRINT HEADER INFO FOR LCF AND NCF
  2022. *
  2023. * PROC HDRLST
  2024. *
  2025. * ENTRY NONE
  2026. *
  2027. * EXIT NONE
  2028. *
  2029. * MESSAGE NONE
  2030. *
  2031. * METHOD
  2032. *
  2033. * EJECT PAGE
  2034. * WRITE PAGE HEADER TO OUTPUT FILE
  2035. * WRITE TIME FILE WAS CREATED TO OUTPUT FILE
  2036. * WRITE FILE NAME TO OUTPUT FILE
  2037. * END
  2038. *
  2039. #
  2040. *ENDIF
  2041. # #
  2042. # CODE BEGINS HERE #
  2043. # #
  2044. PGLST(NEWPAGE);
  2045. PGLST(LN5);
  2046. WRITEH(OUTFET,TIMELST,6);
  2047. WRITEH(OUTFET,FH$NAM$LST,4);
  2048. RETURN;
  2049. END # HDRLST PROC #
  2050. CONTROL EJECT;
  2051. PROC INLST;
  2052. BEGIN
  2053. *IF,DEF,IMS
  2054. #
  2055. ** INLST - INCALL INFO LISTER
  2056. *
  2057. * S.M. ILMBERGER 81/10/28
  2058. *
  2059. * WRITES TO OUTPUT FILE INFO FROM INCALL TABLE
  2060. *
  2061. * PROC INLST
  2062. *
  2063. * ENTRY NONE
  2064. *
  2065. * EXIT NONE
  2066. *
  2067. * MESSAGES
  2068. * ABORT FROM INLST - READ ERROR
  2069. *
  2070. * METHOD
  2071. *
  2072. * IF AT LEAST ONE ENTRY EXISTS IN INCALL$TABLE
  2073. * WRITE INCALL HEADER TO OUTPUT FILE
  2074. * FOR EACH ENTRY IN INCALL$TABLE
  2075. * FORMAT INCALL LINE
  2076. * WRITE INCALL LINE TO OUTPUT FILE
  2077. * IF NO ENTRIES IN INCALL$TABLE
  2078. * READ -EOR-
  2079. * END
  2080. *
  2081. #
  2082. *ENDIF
  2083.  
  2084. DEF NAME$SIZE # 7 #; # SIZE FOR FAM AND USER NAME #
  2085. DEF UBZMUL # 100 #; # MULTIPLE OF 100 WHICH WITH UBZ WAS #
  2086. # ENCODED #
  2087. DEF ZERO # O"33" #; # VALUE OF DISPLAY CODE ZERO #
  2088. ITEM INDEX ; # LOOP INDEX #
  2089. ITEM I; # LOOP COUNTER #
  2090. ITEM CTEMP C(10); # CHARACTER TEMPORARY #
  2091. ITEM ITEMP; # INTEGER TEMPORARY #
  2092. ITEM ITEMP2; # INTEGER TEMPORARY #
  2093. ITEM ITEMP3; # INTEGER TEMPORARY #
  2094. ITEM DTEMP; # INTEGER TEMPORARY #
  2095. ARRAY FACTEMP [0:0] S(1); # FAC TEMPORARY #
  2096. BEGIN
  2097. ITEM FACT1 U(00,12,08); # FIRST TWO FAC DIGITS #
  2098. ITEM FACT2 U(00,20,40); # LAST 10 FAC DIGITS #
  2099. ITEM FACT12 U(00,12,48); # ENTIRE WORD OF FAC #
  2100. END
  2101. ITEM J; # INTEGER TEMPORARY #
  2102. CONTROL EJECT;
  2103. # #
  2104. # CODE BEGINS HERE #
  2105. # #
  2106. IF IBRWC[ENTRY1] GR 1
  2107. THEN # AT LEAST ONE ENTRY EXISTS IN INCALL$TAB #
  2108. BEGIN
  2109. PGLST(LN3); # COUNT LINES TO BE PRINTED #
  2110. WRITEH(OUTFET,INC$HDR1,13); # WRITE INCALL HEADER #
  2111. WRITEH(OUTFET,INC$HDR2,13);
  2112. READW(LCFFET,INCALL$TABLE,1,LCF$STAT);
  2113. # READ FIRST WORD OF ENTRY #
  2114. IF LCF$STAT NQ TRNS$OK
  2115. THEN
  2116. ERRMSG(ERMSG2,"INLST");
  2117. FOR I=ENTRY0 WHILE LCF$STAT EQ TRNS$OK
  2118. DO # UNTIL -EOR- IS READ #
  2119. BEGIN
  2120. INCALL$EC = IBWC[ENTRY0]; # SAVE ENTRY WORD COUNT #
  2121. IF IB$LENG LS INCALL$EC-1
  2122. THEN # NOT ENOUGH SPACE IN INCALL$TABL #
  2123. BEGIN # ALLOCATE MORE SPACE #
  2124. SSTATS(P<INCALL$TABLE>,INCALL$EC-1-IB$LENG);
  2125. END
  2126.  
  2127. READW(LCFFET,INCALL$TABLE,INCALL$EC-1,LCF$STAT);
  2128. # READ REST OF INCALL ENTRY #
  2129. IF LCF$STAT NQ TRNS$OK
  2130. THEN
  2131. ERRMSG(ERMSG2,"INLST");
  2132. INC$CRRT[0] = "0"; # SET LINE FOR DOUBLE SPACE #
  2133. INC$FAM[0] = IBFAM[4]; # SET UP INCALL LINE INFO #
  2134. INC$USER[0] = IBUSER[5];
  2135. FOR INDEX=0 STEP 1 UNTIL NAME$SIZE-1
  2136. DO
  2137. BEGIN
  2138. IF C<INDEX,1>INC$FAM[0] EQ 0 # IF ZERO FILLED #
  2139. THEN
  2140. BEGIN
  2141. C<INDEX,1>INC$FAM[0] = " "; # BLANK FILLED #
  2142. END
  2143. IF C<INDEX,1>INC$USER[0] EQ 0 # IF ZERO FILLED #
  2144. THEN
  2145. BEGIN
  2146. C<INDEX,1>INC$USER[0] = " ";
  2147. END
  2148. END
  2149. IF NOT IBPRI[1]
  2150. THEN
  2151. INC$PRI[0] = "NO";
  2152. ELSE
  2153. INC$PRI[0] = "YES";
  2154. TEMP2 = XCDD(IBDBL[1]);
  2155. INC$DBL[0] = C<9,1>TEMP2;
  2156. TEMP2 = XCDD(IBABL[1]);
  2157. INC$ABL[0] = C<9,1>TEMP2;
  2158. TEMP2 = XCDD(IBDBZ[1]);
  2159. INC$DBZ[0] = C<6,4>TEMP2;
  2160. TEMP2 = XCDD(IBSNODE[2]);
  2161. INC$SND[0] = C<7,3>TEMP2;
  2162. TEMP2 = XCHD(IBSHOST[3]); #CONVERT TO DISPLAY CODE #
  2163. INC$SHT[0] = C<4,6>TEMP2 ; #ASSIGN TO PROPER FIELD #
  2164. IF IBCOLCT[2] # IF COLLECT FLAG SET #
  2165. THEN
  2166. BEGIN
  2167. INC$COLLECT[0] = "YES";
  2168. END
  2169. ELSE
  2170. BEGIN
  2171. INC$COLLECT[0] = "NO";
  2172. END
  2173. TEMP2 = XCHD(IBPORT[1]);
  2174. INC$PORT[0] = C<8,2>TEMP2;
  2175. ITEMP2 = 1;
  2176. FOR ITEMP = 1 STEP 1 UNTIL IBDPLR[2]
  2177. DO
  2178. BEGIN
  2179. ITEMP2 = ITEMP2*2; # GET ACTUAL VALUE OF DPLR #
  2180. END
  2181. TEMP2 = XCDD(ITEMP2); # GET DISPLAY CODE OF DPLR #
  2182. INC$DPLR[0] = C<6,4>TEMP2;
  2183. IF IBDTEL[2] EQ 0 # IF DTEA IS NOT SPECIFIED #
  2184. THEN
  2185. BEGIN
  2186. INC$DTEA[0] = "**NONE**";
  2187. END
  2188. ELSE
  2189. BEGIN
  2190. DTEMP = 15 - IBDTEL[2];
  2191. FOR J = 0 STEP 1 UNTIL IBDTEL[2] -1 # CONVERT BCD DIGIT #
  2192. DO
  2193. BEGIN
  2194. C<DTEMP + J,1>INC$DTEA[0] = B<J*4,4>IBDTEA[6] + ZERO;
  2195. END
  2196. END
  2197. PGLST(LN2);
  2198. WRITEH(OUTFET,INC$LN,13); # WRITE INCALL LINE TO OUTPUT BUF #
  2199. INC$FIL[0] = " ";
  2200. ITEMP = 0; # ITEMP SET TO 0 #
  2201. FOR J=0 STEP 8 UNTIL 48
  2202.  
  2203. DO # FOR EACH CHAR OF ANAME VALUE #
  2204. BEGIN
  2205. C<9,1>CTEMP = SSDCAD(B<J,8>IBRANAME[0]);
  2206. C<ITEMP,1>INC$ANAM[0] = C<9,1>CTEMP;
  2207. # CONVERTS INTO HEX VALUE #
  2208. ITEMP = ITEMP + 1;
  2209. END
  2210. TEMP2 = XCDD(IBUBL[1]);
  2211. INC$UBL[0] = C<9,1>TEMP2;
  2212. TEMP2 = XCDD(IBUBZ[1]);
  2213. INC$UBZ[0] = C<8,2>TEMP2;
  2214. TEMP2 = XCDD(IBDNODE[2]);
  2215. INC$DND[0] = C<8,2>TEMP2;
  2216. TEMP2 = XCDD(IBWS[2]);
  2217. INC$WS[0] = C<9,1>TEMP2;
  2218. IF IBFSTSL[2] # IF FAST SELECT FLAG SET #
  2219. THEN
  2220. BEGIN
  2221. INC$FSEL[0] = "YES";
  2222. END
  2223. ELSE
  2224. BEGIN
  2225. INC$FSEL[0] = "NO";
  2226. END
  2227. ITEMP2 = 1;
  2228. FOR ITEMP = 1 STEP 1 UNTIL IBDPLS[2]
  2229. DO
  2230. BEGIN
  2231. ITEMP2 = ITEMP2*2; # GET ACTUAL VALUE OF DPLS #
  2232. END
  2233. TEMP2 = XCDD(ITEMP2); # GET DISPLAY CODE OF DPLS #
  2234. INC$DPLS[0] = C<6,4>TEMP2;
  2235. TEMP2 = XCDD(IBWR[2]); # CONVERT WR TO DISPLAY CODE #
  2236. INC$WR[0] = C<7,3>TEMP2;
  2237. PGLST(LN1);
  2238. WRITEH(OUTFET,INC$LN2,13); # WRITE LINE TO OUTPUT FILE #
  2239. INC$FIL2 = " ";
  2240. PGLST(LN1);
  2241. WRITEH(OUTFET,INC$HDR3,3); # WRITE FACILITIES HEADER #
  2242. IF IBFACNUM[5] EQ 0
  2243. THEN # IF NO FACILITY CODES #
  2244. BEGIN
  2245. INC$FIL[0] = " ** NONE **";
  2246. PGLST(LN1);
  2247. WRITEH(OUTFET,INC$LN,13);
  2248. INC$FIL[0] = " ";
  2249. END
  2250. FOR TEMP1=7 WHILE TEMP1 LS IBFACNUM[5]+7
  2251. DO # FOR EACH FACILITY CODE #
  2252. BEGIN
  2253. FOR ITEMP3=20 STEP 13 WHILE TEMP1 LS IBFACNUM[5]+ 7 AND
  2254. ITEMP3 LS 120
  2255. DO # FILL LINE UNTIL FULL #
  2256. BEGIN
  2257. FACT12[0] = B<0,IBFACL[TEMP1]*4>IBFAC[TEMP1];
  2258. IF IBFACL[TEMP1] GR 10
  2259. THEN
  2260. BEGIN
  2261. CTEMP = XCHD(FACT1[0]);
  2262. C<ITEMP3,2>INC$FIL[0] = C<08,02>CTEMP;
  2263. END
  2264. C<ITEMP3+2,10>INC$FIL[0] = XCHD(FACT2[0]);
  2265. TEMP1 = TEMP1 + 1;
  2266. END
  2267. PGLST(LN1); # INCREMENT LINE COUNT #
  2268. WRITEH(OUTFET,INC$LN,13); # WRITE LINE TO OUTPUT FILE #
  2269. INC$FIL[0] = " "; # CLEAR LINE IMAGE BUFFER #
  2270. END
  2271. READW(LCFFET,INCALL$TABLE,1,LCF$STAT);
  2272. # READ FIRST WORD OF NEXT ENTRY #
  2273. END # I LOOP #
  2274.  
  2275. END
  2276.  
  2277. ELSE # NO ENTRIES EXIST IN INCALL$TABLE #
  2278. BEGIN
  2279. READW(LCFFET,INCALL$TABLE,1,LCF$STAT); # READ -EOR- #
  2280. IF LCF$STAT NQ LOC(IBWORD[0]) # CK STATUS OF READ #
  2281. THEN
  2282. ERRMSG(ERMSG2,"INLST");
  2283. END # ELSE #
  2284.  
  2285. RETURN;
  2286. END # INLST PROC #
  2287. CONTROL EJECT;
  2288. PROC LCFLST;
  2289. BEGIN
  2290. *IF,DEF,IMS
  2291. #
  2292. ** LCFLST - LCF LISTER
  2293. *
  2294. * S.M. ILMBERGER 81/10/28
  2295. *
  2296. * SUPERVISE LCF INFO LISTING
  2297. *
  2298. * PROC LCFLST
  2299. *
  2300. * ENTRY NONE
  2301. *
  2302. * EXIT NONE
  2303. *
  2304. * MESSAGES
  2305. * ABORT FROM LCFLST - READ ERROR
  2306. * ABORT FROM LCFLST - INVALID RECORD TYPE
  2307. * ERROR IN LCF-SUMMARY LISTING SUPRESSED
  2308. *
  2309. * METHOD
  2310. *
  2311. * SET UP LCF-FET
  2312. * READ PRFX$TABLE INTO BUFFER
  2313. * IF LCF IS VALID
  2314. * SET UP HEADER INFO
  2315. * PRINT LCF HEADER LINES
  2316. * FOR EACH RECORD IN LCF FILE
  2317. * READ RECORD INTO BUFFER
  2318. * CALL APPROPRIATE PROC TO PROCESS EACH RECORD
  2319. * END
  2320. *
  2321. #
  2322. *ENDIF
  2323.  
  2324. DEF NUM$LCF$REC # 4 #; # NUMBER OF LCF RECORDS #
  2325. DEF PRF$7700L # 17 #; # PREFIX TABLE LENGTH #
  2326.  
  2327. ITEM I; # LOOP COUNTER #
  2328.  
  2329. SWITCH BLK$TYP APPL$R,
  2330. USER$R,
  2331. OUTCALL$R,
  2332. INCALL$R;
  2333. CONTROL EJECT;
  2334. # #
  2335. # CODE BEGINS HERE #
  2336. # #
  2337. LST$TYP[0] = " LCF SUMMARY ";
  2338.  
  2339. LCFFIRST[0] = LOC(LCRBUFF[0]);# PT FET AT WORKING STORAGE BUFFER #
  2340. LCFIN[0] = LOC(LCRBUFF[0]);
  2341. LCFOUT[0] = LOC(LCRBUFF[0]);
  2342. LCFLIMIT[0] = LOC(LCRBUFF[0]) + PRULNGTH + 1;
  2343.  
  2344. REWIND(LCFFET);
  2345. READ(LCFFET); # FILL CIO BUFFER WITH FILE HEADER RECORD #
  2346. RECALL(LCFFET);
  2347. READW(LCFFET,PRFX$TABLE,18,LCF$STAT); # READ RECORD INTO BUFF #
  2348. NET$NAME[0] = PT$FNAME[0]; # SAVE FILE NAME #
  2349. SKIPEI(LCFFET); # POSITION POINTER TO LAST RECORD #
  2350. SKIPB(LCFFET,2);
  2351. READ(LCFFET); # FILL CIO BUFFER W/PRFX$TABLE #
  2352. RECALL(LCFFET);
  2353.  
  2354. READW(LCFFET,PRFX$TABLE,18,LCF$STAT); # READ PREFIX TABLE #
  2355. IF B<0,30>VEWORD0[0] NQ "VALID" OR
  2356. LCF$STAT NQ LOC(VEWORD1[0]) + 1
  2357. THEN
  2358. BEGIN
  2359. MESSAGE(EM$ENT[ERMSG9],0); # NOT VALID LCF FILE #
  2360. ABRTFLG = TRUE; # SET ABORT FLAG #
  2361. END
  2362. ELSE
  2363. BEGIN # VALID LCF FILE #
  2364. C<0,8>HD$TIME[0] = C<0,8>PT$TIME[0]; # SET UP TIME AND DATE TO #
  2365. C<0,8>HD$DATE[0] = C<0,8>PT$DATE[0]; # BE PRINTED #
  2366. TITLE[0] = PT$TITLE[0]; # SET TITLE AND LCF NAME #
  2367. HD$TYP[0] = "LCF";
  2368. NAM$TYP[0] = "LCF";
  2369. HDRLST; # PRINT HEADER INFO #
  2370.  
  2371. REWIND(LCFFET);
  2372. READ(LCFFET);
  2373. RECALL(LCFFET);
  2374. READW(LCFFET,PRFX$TABLE,18,LCF$STAT);
  2375.  
  2376. FOR I=0 STEP 1 UNTIL NUM$LCF$REC-1
  2377. DO
  2378. BEGIN
  2379.  
  2380. READ(LCFFET); # FILL CIO BUFFER WITH NEXT RECORD #
  2381. RECALL(LCFFET);
  2382.  
  2383. GOTO BLK$TYP[I];
  2384.  
  2385. APPL$R:
  2386.  
  2387. SSTATS(P<APPL$TABLE>,2);
  2388. READW(LCFFET,APPL$TABLE,2,LCF$STAT); # READ APPL$TAB HEADER #
  2389. IF LCF$STAT NQ TRNS$OK # CK STATUS OF READ #
  2390. THEN
  2391. ERRMSG(ERMSG2,"LCFLST"); # PRINT READ ERROR MESSAGE - ABORT#
  2392. IF AT$IDENT[0] NQ "APPL"
  2393. THEN
  2394. ERRMSG(ERMSG4,"LCFLST"); # PRINT INVALID RECORD MSG #
  2395. APPLST;
  2396. SSTATS(P<APPL$TABLE>,-1*AT$LENG); # RELEASE TABLE SPACE #
  2397. TEST I;
  2398.  
  2399. USER$R:
  2400.  
  2401. SSTATS(P<USER$TABLE>,UTENTSZ);
  2402. READW(LCFFET,USER$TABLE,2,LCF$STAT); # READ TABLE HEADER #
  2403. IF LCF$STAT NQ TRNS$OK # CK STATUS OF READ #
  2404. THEN
  2405. ERRMSG(ERMSG2,"LCFLST"); # PRINT READ-ERROR MSG - ABORT #
  2406. IF UT$IDENT[0] NQ "USER"
  2407. THEN
  2408. ERRMSG(ERMSG4,"LCFLST");# PRINT INVALID RECORD MESSAGE-ABRT#
  2409. USERLST;
  2410. SSTATS(P<USER$TABLE>,-1*UT$LENG);
  2411. TEST I;
  2412.  
  2413. OUTCALL$R:
  2414.  
  2415. SSTATS(P<OUTCALL$TABL>,2);
  2416. READW(LCFFET,OUTCALL$TABL,2,LCF$STAT); # READ TABLE HEADER #
  2417. IF LCF$STAT NQ TRNS$OK # CK STATUS OF READ #
  2418. THEN
  2419. ERRMSG(ERMSG2,"LCFLST"); # PRINT READ ERROR MESSAGE - ABORT#
  2420. IF OB$IDENT[0] NQ "OUTCALL"
  2421. THEN
  2422. ERRMSG(ERMSG4,"LCFLST");# PRINT INVALID RECORD MESSAGE #
  2423. OUTLST;
  2424. SSTATS(P<OUTCALL$TABL>,-1*OB$LENG);
  2425. TEST I;
  2426.  
  2427. INCALL$R:
  2428.  
  2429. SSTATS(P<INCALL$TABLE>,2);
  2430. READW(LCFFET,INCALL$TABLE,2,LCF$STAT); # RD INCALL TAB HEADER#
  2431. IF LCF$STAT NQ TRNS$OK
  2432. THEN
  2433. ERRMSG(ERMSG2,"LCFLST"); # PRINT READ ERROR MESSAGE - ABORT#
  2434. IF IB$IDENT[0] NQ "INCALL"
  2435. THEN
  2436. ERRMSG(ERMSG4,"LCFLST"); # PRINT MESSAGE - ABORT #
  2437. INLST; # LISTS INCALL STATEMENTS #
  2438. SSTATS(P<INCALL$TABLE>,-1*IB$LENG);
  2439. # RELEASE INCALL$TABLE SPACE #
  2440. TEST I;
  2441. END # I LOOP #
  2442.  
  2443. END # VALID LCF #
  2444.  
  2445. RETURN;
  2446. END # LCFLST PROC #
  2447. CONTROL EJECT;
  2448. PROC LINLST;
  2449. BEGIN
  2450. *IF,DEF,IMS
  2451. #
  2452. ** LINLST - LINE LISTER
  2453. *
  2454. * S.M. ILMBERGER 81/10/28
  2455. *
  2456. * PRINT LINE INFO
  2457. *
  2458. * PROC LINLST
  2459. *
  2460. * ENTRY NONE
  2461. *
  2462. * EXIT NONE
  2463. *
  2464. * MESSAGES
  2465. * ABRT FROM LINLST - READ ERROR
  2466. * ABRT FROM LINLST - FN VAL NOT LINE FN
  2467. *
  2468. * METHOD
  2469. *
  2470. * LOCATE LIN$CON$REC TABLE IN NCB
  2471. * READ HEADER OF LIN$CON$REC TABLE
  2472. * READ ALL FNFV PAIRS INTO LIN$CON$REC TABLE
  2473. * USE PORTNUM FROM LIN$CON$REC AND NPU NODE TO SEARCH LIN$REC$INDX
  2474. * TABLE FOR RELATIVE PRU ADDR OF CORRESPONDING LINE$RECORD
  2475. * READ LINE$RECORD INTO BUFFER
  2476. * IF LINE IS NOT FROM A GROUP STATEMENT
  2477. * SET LINE NAME FROM LINE$RECORD
  2478. * IF LINE IS FROM GROUP STATEMENT
  2479. * SET LINE NAME FROM LINE$XREF TABLE
  2480. * SET LINE INFO FROM ITEMS IN LIN$CON$REC TABLE
  2481. * FOR EACH FNFV PAIR IN LIN$CON$REC TABLE
  2482. * SET ITEM IN "LINE" OUTPUT LINE
  2483. * WRITE LINE INFO TO OUTPUT FILE
  2484. * END
  2485. *
  2486. #
  2487. *ENDIF
  2488.  
  2489. DEF ASCII$C # O"103" #;# VALUE FOR ASCII C CHARACTER #
  2490. DEF LGUSERFN # 99 #; # LARGEST USER FN VALUE #
  2491. DEF MAXLNCR # 28 #; # MAX LIN$CON$REC TABLE ENTRY SIZE #
  2492. DEF MAX$LN$FN # 18 #; # MAXIMUM FN VALUE FOR LINE #
  2493. DEF SMUSERFN # 90 #; # SMALLEST USER FN VALUE #
  2494. DEF ZERO # O"33" #; # VALUE FOR DISPLAY CODE ZERO #
  2495. DEF HOSTSIZE # 4 #; # SIZE FOR HOST TABLE ENTRY #
  2496. DEF HOSTORD # 4 #; # HOST TABLE ORDINAL #
  2497. ITEM DFLTEMP U=0; # TEMP STORAGE FOR DFL VALUE #
  2498. ITEM FOUND B;
  2499. ITEM I; # LOOP COUNTER #
  2500. ITEM J; # LOOP COUNTER #
  2501. ITEM K; # LOOP COUNTER #
  2502. ITEM NCOUNT; # ENTRY COUNT TO SKIP INTERNAL TABLE #
  2503. ITEM TABCOUNT; # TABLE COUNT #
  2504. ITEM LCTENTRY; # LINE XREF ENTRY #
  2505. ITEM LINRD$STAT I; # STATUS OF READ #
  2506. ITEM LRIENT; # LINE REC INDEX ENTRY SIZE #
  2507. ITEM MATCH B; # SET IF NODE NUM AND PORT NUM MATCH ITEM #
  2508. ITEM NSVCTEMP U=0; # TEMP STORAGE FOR NSVC #
  2509. ITEM PVCTEMP U=0; # TEMP STORAGE FOR PVC #
  2510.  
  2511. ARRAY LTYPNAM [0:12] S(1);
  2512. ITEM LTYPS C(00,00,02) = [" ","S1","S2","S3"," "," ","A1",
  2513. "A2"," ","A6","H1","S4","H2"];
  2514.  
  2515. ARRAY LSPEEDNUM [0:11] S(1);
  2516. ITEM LSPEED1 C(00,00,05) = [" ","110","134","150","300","600",
  2517. "1200","2400","4800","9600","19200",
  2518. "38400"];
  2519.  
  2520. ARRAY PSNNAM [0:10] S(1);
  2521. ITEM PSNVAL C(00,00,07) = [" ","DATAPAC","TELENET","TRNSPAC",
  2522. "TYMNET","CDSN","UNINET","C120 ",
  2523. "PSN253","PSN254","PSN255"];
  2524.  
  2525. ARRAY TIPNAM [0:15] S(1);
  2526. ITEM TIPTYP C(00,00,05) = [" ","ASYNC","MODE4","HASP","X25",
  2527. "BSC"," "," "," "," "," "," ","TT12","TT13",
  2528. "TT14","3270"];
  2529.  
  2530. SWITCH FNTYP ERRTYP , # 0 #
  2531. AL , # 1 #
  2532. LSPEED , # 2 #
  2533. RCOUNT , # 3 #
  2534. FRAME , # 4 #
  2535. PVC$MSB, # 5 #
  2536. PVC$LSB, # 6 #
  2537. DCE , # 7 #
  2538. PSN , # 8 #
  2539. SVC$MSB, # 9 #
  2540. SVC$LSB, # 10 #
  2541. LCN , # 11 #
  2542. RTIME , # 12 #
  2543. DFL$MSB, # 13 #
  2544. DFL$LSB, # 14 #
  2545. ERRTYP , # 15 #
  2546. DTEA , # 16 #
  2547. IMDISC , # 17 #
  2548. RC ; # 18 #
  2549. CONTROL EJECT;
  2550. # #
  2551. # CODE BEGINS HERE #
  2552. # #
  2553. SSTATS(P<LIN$CON$REC>,MAXLNCR);
  2554. SSTATS(P<LINE$RECORD>,25);
  2555.  
  2556. NCBWD = 3;
  2557. NCBIT = 52;
  2558. TENTRY[0] = 0; # CLEAR ENTRY #
  2559. FOR I = 1 STEP 1 UNTIL 3
  2560. DO
  2561. BEGIN # SKIP NCB CHECKSUM AND NPU INFO #
  2562. SERMSGX;
  2563. NCBW;
  2564. END
  2565. FOR TABCOUNT = 1 STEP 1 UNTIL 5
  2566. DO
  2567. BEGIN
  2568. NCOUNT = ENTCNT[0]; # GET ENTRY COUNT #
  2569. SERMSGX; # SKIP TABLE ID HEADER #
  2570. NCBW;
  2571. IF NCOUNT NQ 0
  2572. THEN # NOT EMPTY TABLE #
  2573. BEGIN
  2574. IF TABCOUNT EQ HOSTORD # IF HOST TABLE MET #
  2575. THEN
  2576. BEGIN
  2577. NCOUNT = NCOUNT*HOSTSIZE; # ENTRY SIZE IS 4 WORDS #
  2578. END
  2579. FOR I = 1 STEP 1 UNTIL NCOUNT
  2580. DO
  2581. BEGIN
  2582. SERMSGX; # SKIP SERVICE MESSAGE #
  2583. NCBW;
  2584. END
  2585. END
  2586. END
  2587. ENTRY$CNT = ENTCNT[ENTRY0]; # SAVE ENTRY COUNT OF LIN$CON$REC TAB#
  2588. LCWC[ENTRY0] = ENTRY$CNT;
  2589. FOR K=ENTRY$CNT STEP -1 WHILE K NQ 0
  2590. DO
  2591. BEGIN
  2592. FOR I=1 STEP 1 UNTIL 3
  2593. DO # GET HEADER WORDS OF LIN$CON$REC TABLE #
  2594. BEGIN
  2595. SERMSGX; # CK IF XING A SERVICE MSG BOUNDARY #
  2596. NCBW; # GET NEXT 16 BIT NCB WORD #
  2597. B<44,16>LCWORD[I] = TENTRY[ENTRY0];
  2598. END
  2599.  
  2600. FNFV$CNT = LCFNFV[ENTRY3]; # SAVE FNFV COUNT FOR THIS ENTRY #
  2601. IF FNFV$CNT NQ 0
  2602. THEN # AT LEAST ONE FNFV PAIR EXISTS #
  2603. BEGIN
  2604. FOR J=1 STEP 1 UNTIL FNFV$CNT
  2605. DO
  2606. BEGIN
  2607. SERMSGX; # CK IF XING A SERVICE MSG BOUNDARY #
  2608. NCBW; # GET NEXT 16 BITS FROM NCB #
  2609. B<44,16>LCWORD[J+3] = TENTRY[0];
  2610. END
  2611.  
  2612. END
  2613.  
  2614. PORTNUM = LCPORT[ENTRY1];
  2615. FOUND = FALSE;
  2616. FOR I=ENTRY2 STEP LIENTSZ WHILE NOT FOUND
  2617. AND I LQ LIWC[ENTRY1]
  2618. DO
  2619. BEGIN
  2620. IF LINID[I] EQ NODE$ID
  2621. AND (LIPORT[I] EQ PORTNUM # SEARCH LINE RECORD INDEX FOR #
  2622. OR (PORTNUM GQ LIPORT[I] # MATCHING NPU NODE ID AND PORT #
  2623. AND PORTNUM LQ LIPORT[I]+LIGC[I]) )
  2624. THEN
  2625. BEGIN
  2626. FOUND = TRUE;
  2627. LRIENT = I; # IF MATCH FOUND SAVE ENTRY NUMBER TO #
  2628. END # REFERENCE RELATIVE PRU ADDRESS #
  2629.  
  2630. END
  2631.  
  2632. IF FOUND
  2633. THEN
  2634. BEGIN
  2635. NCFFIRST[0] = LOC(LINEWORD[0]);# POINT FET AT WORKING STORAGE#
  2636. NCFIN[0] = LOC(LINEWORD[0]); # BUFFER #
  2637. NCFOUT[0] = LOC(LINEWORD[0]);
  2638. NCFLIMIT[0] = LOC(LINEWORD[0]) + PRULNGTH + 1;
  2639. NCFRR[0] = LIRPA[LRIENT];
  2640. READ(NCFFET); # FILL CIO BUFFER #
  2641. RECALL(NCFFET);
  2642. READW(NCFFET,LINE$RECORD,2,LINRD$STAT); # READ THE LINE REC #
  2643. # POINTED TO BY THE RELATIVE PRU ADDRESS #
  2644. IF LINRD$STAT NQ TRNS$OK
  2645. THEN
  2646. ERRMSG(ERMSG2,"LINLST"); # PRINT READ ERRMSG - ABORT #
  2647. LINREC$WC = LRWC[ENTRY1]; # SET LINE RECORD WORD COUNT #
  2648. LINREC$GC = LRGC[ENTRY1]; # SET LINE RECORD GROUP COUNT #
  2649. IF LINREC$WC GR LR$LENG
  2650. THEN
  2651. SSTATS(P<LINE$RECORD>,LINREC$WC-LR$LENG);
  2652. READW(NCFFET,LINE$RECORD,LINREC$WC-1,LINRD$STAT);
  2653. IF LINRD$STAT NQ TRNS$OK # CK STATUS OF READ #
  2654. THEN
  2655. ERRMSG(ERMSG2,"LINLST"); # PRINT READ ERR MSG - ABORT #
  2656. IF LINREC$GC EQ 0
  2657. THEN # NOT A GROUP STATEMENT #
  2658. LN$NAM[0] = LRNAME[ENTRY0];
  2659. ELSE # GROUP STATEMENT #
  2660. BEGIN
  2661. LCTENTRY = 0;
  2662. MATCH = FALSE;
  2663. FOR J=ENTRY2 STEP LCTENTSZ WHILE J LQ LCTWC[ENTRY1]
  2664. AND NOT MATCH # SEARCH LINE XREF TAB FOR THE #
  2665. DO # NPU NODE ID AND PORT NUMBER #
  2666. BEGIN # THAT MATCH #
  2667. IF LCTNID[J] EQ NODE$ID AND
  2668. LCTPORT[J] EQ PORTNUM
  2669. THEN
  2670. BEGIN
  2671. MATCH = TRUE;
  2672. LCTENTRY = J;
  2673. END
  2674.  
  2675. END
  2676.  
  2677. IF LCTENTRY NQ 0
  2678. THEN
  2679. LN$NAM[0] = LCTNAME[LCTENTRY]; # SET LINE NAME FROM LINE-#
  2680. END # XREF TABLE #
  2681.  
  2682. TEMP1 = LCPORT[ENTRY1];
  2683. TEMP2 = XCHD(TEMP1);
  2684. LN$PORT[0] = C<8,2>TEMP2; # SAVE PORT NUM IN OUTPUT LINE #
  2685. LN$LTY[0] = LTYPS[LCLTYPE[ENTRY2]];
  2686. IF LC$ARSPEED[ENTRY2] # LC$ARSPEED IS SET #
  2687. THEN
  2688. BEGIN
  2689. LN$ARSPEED[0] = "YES"; # SET ARSPEED FLAG TO TRUE #
  2690. END
  2691. ELSE
  2692. BEGIN
  2693. LN$ARSPEED[0] = "NO"; # ELSE SET ARSPEED FLAG TO FALSE #
  2694. END
  2695.  
  2696. IF LCTTYP$A[ENTRY2] # CK IF AUTO PARAM SET #
  2697. THEN
  2698. BEGIN
  2699. IF LC$SRANGE[ENTRY2] # IF HIGH SPEED LINE #
  2700. THEN
  2701. BEGIN
  2702. LN$XAUTO[0] = "YES"; # XAUTO = YES #
  2703. LN$AUTO[0] = "NO"; # AUTO = NO #
  2704. END
  2705. ELSE # MUST BE AUTO ONLY #
  2706. BEGIN
  2707. LN$XAUTO[0] = "NO";
  2708. LN$AUTO[0] = "YES"; # AUTO = YES #
  2709. END
  2710. END
  2711. ELSE # NEITHER AUTO NOR XAUTO #
  2712. BEGIN
  2713. LN$XAUTO[0] = "NO";
  2714. LN$AUTO[0] = "NO";
  2715. END
  2716. LN$TIPT[0] = TIPTYP[B<1,4>LCTTYP[ENTRY2]]; # SET TIPTYPE #
  2717. IF LCTTYP$IP[ENTRY2] GQ 12 # SAVE TIPTYPE USED IN TIPMAP #
  2718. THEN
  2719. B<LCTTYP$IP[ENTRY2]-5,1>TIPMAP[0] = 1;
  2720. ELSE
  2721. B<LCTTYP$IP[ENTRY2],1>TIPMAP[0] = 1;
  2722. IF LCST[ENTRY3] EQ 01 # CHECK LINE STATUS #
  2723. THEN # LINE IS DISABLED #
  2724. LN$DI[0] = "YES";
  2725. ELSE # LINE IS ENABLED #
  2726. LN$DI[0] = "NO";
  2727. FOR J=ENTRY4 STEP LCTENTSZ UNTIL FNFV$CNT + 3
  2728. DO
  2729. BEGIN
  2730. IF LCFN[J] GR MAX$LN$FN # CHECK FOR FN'S LARGER THAN MAX #
  2731. THEN
  2732. BEGIN
  2733. IF LCFN[J] LS SMUSERFN OR # CK FOR USER FN'S AND SKIP #
  2734. LCFN[J] GR LGUSERFN
  2735. THEN
  2736. ERRMSG(ERMSG8,"LINLST");
  2737. END
  2738.  
  2739. ELSE
  2740. BEGIN
  2741. GOTO FNTYP[LCFN[J]];
  2742.  
  2743. ERRTYP:
  2744. ERRMSG(ERMSG8,"LINLST");
  2745.  
  2746. AL: # SET AL VALUE IN OUTPUT LINE #
  2747. TEMP1 = B<5,3>LCFV[J];
  2748. TEMP2 = XCDD(TEMP1);
  2749. LN$SL[0] = C<8,2>TEMP2;
  2750. TEST J;
  2751.  
  2752. LSPEED: # SET LSPEED VALUE IN OUTPUT LINE #
  2753. LN$LSPE[0] = LSPEED1[LCFV[J]];
  2754. TEST J;
  2755.  
  2756. RCOUNT: # SET RCOUNT VALUE IN OUTPUT LINE #
  2757. TEMP1 = LCFV[J];
  2758. TEMP2 = XCDD(TEMP1);
  2759. LN$RCNT[0] = C<8,2>TEMP2;
  2760. TEST J;
  2761.  
  2762. FRAME: # SET FRAME VALUE IN OUTPUT LINE #
  2763. TEMP1 = LCFV[J];
  2764. TEMP2 = XCDD(TEMP1);
  2765. LN$FRAM[0] = C<7,3>TEMP2;
  2766. TEST J;
  2767.  
  2768. IMDISC: # SET IMMEDIATE DISCONNECT INDICATOR #
  2769. IF LCFV[J] EQ 1
  2770. THEN
  2771. BEGIN
  2772. LN$IMD[0] = "YES";
  2773. END
  2774. TEST J;
  2775. RC: # DISPLAY RECONNECT INDICATOR #
  2776. IF LCFV[J] EQ 1
  2777. THEN
  2778. BEGIN
  2779. LN$RC[0] = "YES";
  2780. END
  2781. ELSE
  2782. BEGIN
  2783. LN$RC[0] = "NO";
  2784. END
  2785. TEST J;
  2786. LCN: # SET LOGICAL CHANNEL NUMBER #
  2787. TEMP2 = XCDD(LCFV[J]);
  2788. LN$LCN[0] = C<7,3>TEMP2;
  2789. TEST J;
  2790.  
  2791. PVC$MSB: # SAVE FIRST HALF OF PVC VALUE #
  2792. B<48,4>PVCTEMP = LCFV[J];
  2793. TEST J;
  2794.  
  2795. PVC$LSB: # SAVE SECOND HALF OF PVC AND SET IN OUTPT#
  2796. B<52,8>PVCTEMP = LCFV[J];
  2797. TEMP2 = XCDD(PVCTEMP);
  2798. LN$NPVC[0] = C<6,4>TEMP2;
  2799. TEST J;
  2800.  
  2801. DCE: # SET DCE VALUE #
  2802. IF LCFV[J] EQ 1
  2803. THEN
  2804. LN$DCE[0] = "DCE";
  2805. TEST J;
  2806.  
  2807. PSN: # SET PSN VALUE IN OUTPUT LINE #
  2808. IF LCFV[J] GR 250
  2809. THEN
  2810. LN$PSN[0] = PSNVAL[LCFV[J] - 246];
  2811. ELSE
  2812. LN$PSN[0] = PSNVAL[LCFV[J]];
  2813. TEST J;
  2814.  
  2815. SVC$MSB: # SAVE 1ST HALF OF SVC #
  2816. B<48,4>NSVCTEMP = LCFV[J];
  2817. TEST J;
  2818.  
  2819. SVC$LSB: # SAVE 2ND HALF OF SVC AND SET IN OUTPUT #
  2820. B<52,8>NSVCTEMP = LCFV[J];
  2821. TEMP2 = XCDD(NSVCTEMP);
  2822. LN$NSVC[0] = C<7,3>TEMP2;
  2823. TEST J;
  2824.  
  2825. RTIME: # SET RTIME VALUE IN OUTPUT LINE #
  2826. TEMP1 = LCFV[J];
  2827. TEMP2 = XCDD(TEMP1);
  2828. LN$RTIME[0] = C<5,5>TEMP2;
  2829. TEST J;
  2830.  
  2831. DFL$MSB: # SAVE 1ST HALF OF DFL #
  2832. B<44,8>DFLTEMP = LCFV[J];
  2833. TEST J;
  2834.  
  2835. DFL$LSB: # SAVE 2ND HALF OF DFL AND SET DFL VALUE #
  2836. B<52,8>DFLTEMP = LCFV[J];
  2837. TEMP2 = XCDD(DFLTEMP);
  2838. LN$DFL[0] = C<5,5>TEMP2;
  2839. TEST J;
  2840.  
  2841. DTEA: # SET DTEA VALUE IN OUTPUT LINE #
  2842. TEMP2 = B<0,4>LCFV[J] + ZERO; # CONVERT 1ST SEMI-OCTET #
  2843. C<1,1>TEMP2 = B<4,4>LCFV[J] + ZERO; # CONVERT 2ND #
  2844. LN$DTEA[0] = TEMP2;
  2845.  
  2846. END
  2847. END # J LOOP #
  2848.  
  2849. PGLST(LN6);
  2850. WRITEH(OUTFET,LIN$HDR,11); # WRITE LINE HEADER AND LINE #
  2851. WRITEH(OUTFET,LIN$HDR2,11);
  2852. WRITEH(OUTFET,LIN$LN,11);
  2853. WRITEH(OUTFET,LIN$LN2,11);
  2854. TRMLST;
  2855. LN$FIL[0] = " ";
  2856. LN$FL2[0] = " ";
  2857. LN$IMD[0] = "NO";
  2858. LN$LCN[0] = "0";
  2859. END # FOUND #
  2860.  
  2861. END # K LOOP #
  2862.  
  2863. SSTATS(P<LINE$RECORD>,-1*LR$LENG);
  2864. SSTATS(P<LIN$CON$REC>,-1*LC$LENG);
  2865. RETURN;
  2866. END # LINLST PROC #
  2867. CONTROL EJECT;
  2868. PROC LLKLST;
  2869. BEGIN
  2870. *IF,DEF,IMS
  2871. #
  2872. ** LLKLST - LOGICAL LINK LISTER
  2873. *
  2874. * S.M. ILMBERGER 81/10/28
  2875. *
  2876. * LIST LOGICAL LINK INFO
  2877. *
  2878. * PROC LLKLST
  2879. *
  2880. * ENTRY NONE
  2881. *
  2882. * EXIT NONE
  2883. *
  2884. * MESSAGES NONE
  2885. *
  2886. * METHOD
  2887. *
  2888. * FOR EACH ENTRY IN LOGLINK$XREF TABLE
  2889. * IF THE LINK IS CONNECTED TO THE CURRENT COUPLER
  2890. * PUT LOGLINK NAME IN LOGLINK LINE
  2891. * IF LOGLINK IS HOST TO NPU
  2892. * SEARCH NPUXREF TABLE FOR NCNAME VALUE
  2893. * IF LOGLINK IS HOST TO HOST
  2894. * SEARCH PLINK$XREF FOR NCNAME VALUE
  2895. * SET LOGLINK STATUS
  2896. * WRITE LOGLINK HEADER TO OUTPUT FILE
  2897. * WRITE LOGLINK LINE TO OUTPUT FILE
  2898. * END
  2899. *
  2900. #
  2901. *ENDIF
  2902.  
  2903. DEF CPL$TYPE # 0 #; # CODE FOR PLTYPE = COUPLER #
  2904.  
  2905. ITEM FOUNDNCNAME B; # TRUE IF NCNAME VALUE WAS FOUND #
  2906. ITEM I; # LOOP COUNTER #
  2907. ITEM J; # LOOP COUNTER #
  2908. ITEM LLKCNT I; # NUMBER OF LIGLINKS TO THIS COUPLER #
  2909. CONTROL EJECT;
  2910. # #
  2911. # CODE BEGINS HERE #
  2912. # #
  2913. LLKCNT = 0;
  2914. FOR I=ENTRY1 STEP 1 UNTIL (LLWC[ENTRY0]-1)/LLENTSZ
  2915. DO
  2916. BEGIN
  2917. IF CPL$ID EQ LLHNID1[I]
  2918. THEN
  2919. BEGIN
  2920. LLKCNT = LLKCNT + 1;
  2921. LLK$NAM[0] = LLNAME[I];
  2922. FOUNDNCNAME = FALSE;
  2923. IF LLHNID2[I] EQ LLNID2[I]
  2924. THEN # LOGICAL LINK IS HOST TO NPU #
  2925. BEGIN # SEARCH NPUXREF TABLE FOR NCNAME VALUE #
  2926. FOR J=ENTRY1 STEP 1 WHILE J LQ (NPWC[ENTRY0]-1)/NPENTSZ
  2927. AND NOT FOUNDNCNAME
  2928. DO
  2929. BEGIN
  2930. IF NPNID[J] EQ LLHNID2[I]
  2931. THEN
  2932. BEGIN
  2933. FOUNDNCNAME = TRUE;
  2934. LLK$NCN[0] = NPNAME[J]; # SAVE NCNAME #
  2935. END
  2936.  
  2937. END # J LOOP #
  2938.  
  2939. END
  2940.  
  2941. ELSE # LOGICAL LINK IS HOST TO HOST #
  2942. BEGIN # SEARCH PLINK XREF TABLE FOR NCNAME VALUE#
  2943. FOR J=ENTRY1 STEP 1 WHILE J LQ (PLWC[ENTRY0]-1)/PLENTSZ
  2944. AND NOT FOUNDNCNAME
  2945. DO
  2946. BEGIN
  2947. IF PLTYPE[J] EQ CPL$TYPE
  2948. AND PLHNID[J] EQ LLHNID2[I]
  2949. THEN
  2950. BEGIN
  2951. FOUNDNCNAME = TRUE;
  2952. LLK$NCN[0] = PLNAME[J];
  2953. END
  2954.  
  2955. END # J LOOP #
  2956.  
  2957. END # ELSE #
  2958.  
  2959. IF LLST[I] # SET LOGLINK STATUS #
  2960. THEN
  2961. LLK$STA[0] = "DI";
  2962. ELSE
  2963. LLK$STA[0] = "EN";
  2964. IF LLKCNT EQ 1
  2965. THEN # FIRST LOGLINK ON THIS NPU #
  2966. BEGIN
  2967. PGLST(LN3);
  2968. WRITEH(OUTFET,LLK$HDR,5); # PRINT LOGICAL LINK HEADER #
  2969. WRITEH(OUTFET,LLK$LN,5); # PRINT LOGLINK LINE #
  2970. END
  2971.  
  2972. ELSE
  2973. BEGIN # NOT FIRST LOGLINK ON THIS NPU #
  2974. PGLST(LN1);
  2975. WRITEH(OUTFET,LLK$LN,5); # PRINT LOGLINK LINE #
  2976. END
  2977.  
  2978. LLK$FILL[0] = " ";
  2979. END
  2980.  
  2981. END # I LOOP #
  2982.  
  2983. RETURN;
  2984. END # LLKLST PROC #
  2985. CONTROL EJECT;
  2986. PROC NCBW; # GETS ONE 16 BIT ENTRY FROM THE NCB #
  2987. BEGIN
  2988. *IF,DEF,IMS
  2989. #
  2990. ** NCBW - NCB WORD
  2991. *
  2992. * S.M. ILMBERGER 81/10/28
  2993. *
  2994. * GET, ONE 16 BIT ENTRY FROM NCB
  2995. *
  2996. * PROC NCBW
  2997. *
  2998. * ENTRY NONE
  2999. *
  3000. * EXIT NONE
  3001. *
  3002. * MESSAGES NONE
  3003. *
  3004. * METHOD
  3005. *
  3006. * IF BIT COUNT+16 <= 60
  3007. * GET NEXT 16 BITS STARTING AT BIT COUNT
  3008. * ADD 16 TO BIT COUNT
  3009. * IF BIT COUNT+16 > 60
  3010. * GET NEXT BITS STARTING AT BIT COUNT
  3011. * GET REST OF BITS FROM NEXT WORD
  3012. * INCREMENT WORD COUNT
  3013. * CHANGE BIT COUNT
  3014. * END
  3015. *
  3016. #
  3017. *ENDIF
  3018. # #
  3019. # CODE BEGINS HERE #
  3020. # #
  3021. IF NCBIT + 16 LQ 60
  3022. THEN # NEXT 16 BIT ENTRY IN SAME WORD #
  3023. BEGIN
  3024. TENTRY[0] = B<NCBIT,16>NCBWORD[NCBWD];
  3025. IF NCBIT + 16 LS 60
  3026. THEN # INCREMENT BIT COUNT #
  3027. NCBIT = NCBIT + 16;
  3028. ELSE # CHANGE BIT COUNT AND WORD COUNT #
  3029. BEGIN
  3030. NCBIT = 0;
  3031. NCBWD = NCBWD + 1;
  3032. END
  3033.  
  3034. END
  3035.  
  3036. ELSE
  3037. BEGIN # NEXT 16 BIT ENTRY OVERLAPS WORD #
  3038. B<0,60-NCBIT>TENTRY[0] =
  3039. B<NCBIT,60-NCBIT>NCBWORD[NCBWD];
  3040. B<60-NCBIT,NCBIT+16-60>TENTRY[0] =
  3041. B<0,NCBIT+16-60>NCBWORD[NCBWD+1];
  3042. NCBWD = NCBWD +1;
  3043. NCBIT = NCBIT + 16 - 60;
  3044. END
  3045.  
  3046. END # NCBW PROC #
  3047. CONTROL EJECT;
  3048. PROC NCFLST;
  3049. BEGIN
  3050. *IF,DEF,IMS
  3051. #
  3052. ** NCFLST - NCF LISTER
  3053. *
  3054. * S.M. ILMBERGER 81/10/28
  3055. *
  3056. * LIST ALL INFO CONTAINED IN THE NCF
  3057. *
  3058. * PROC NCFLST
  3059. *
  3060. * ENTRY NONE
  3061. *
  3062. * EXIT NONE
  3063. *
  3064. * MESSAGES
  3065. * ABRT FROM NCFLST - NO SUCH RECORD TYPE
  3066. * ABRT FROM NCFLST - READ ERROR
  3067. * ERROR IN NCFLST-SUMMARY LISTING SUPPRESSED
  3068. * ABRT FROM NCFLST - BAD NCF FILE RECORD
  3069. *
  3070. * METHOD
  3071. *
  3072. * SET UP NCF FET
  3073. * FILL CIO BUFFER
  3074. * READ THE RFX$TABLE INTO BUFFER
  3075. * SET UP HEADER INFO
  3076. * READ NCF$INDEX RECORD
  3077. * FOR EACH ENTRY IN NCF$INDEX
  3078. * READ RECORD INTO CORRESPONDING TABLE
  3079. * PRINT NCF HEADER
  3080. * CALL NPULST TO PRINT EACH NPU
  3081. * CALL NODLST TO PRINT NODE INFO
  3082. * END
  3083. *
  3084. #
  3085. *ENDIF
  3086.  
  3087. DEF PRF$7700L # 17 #; # PREFIX TABLE LENGTH #
  3088. DEF PRUPLS1 # O"101" #;# PRU LENGTH IS 65 #
  3089. DEF SIZERECTYPE # 8 #; # NUMBER OF DEFFERENT KINDS OF RECORDS #
  3090.  
  3091. ITEM I; # LOOP COUNTER #
  3092. ITEM J; # LOOP COUNTER #
  3093. ITEM MATCH B;
  3094.  
  3095. ARRAY NCRWB [0:0] S(65); # NETWORK CONFIGURATION FILE BUFFER #
  3096. BEGIN
  3097. ITEM NCRBUFF (00,00,60);
  3098. END
  3099.  
  3100. ARRAY RECNUM [SIZERECTYPE];
  3101. BEGIN
  3102. ITEM TABTYPE U(00,00,12) = [
  3103. ,
  3104. O"7700",
  3105. O"1603",
  3106. O"1630",
  3107. O"2010",
  3108. O"1414",
  3109. O"1430",
  3110. O"0430",
  3111. O"1411"];
  3112. END
  3113.  
  3114. SWITCH REC$TYP ERR$T,
  3115. HDR$REC,
  3116. NCB$REC,
  3117. NPU$XRF,
  3118. PL$XREF,
  3119. LLK$XREF,
  3120. LN$XREF,
  3121. DEV$XREF,
  3122. LN$REC$IDX;
  3123. CONTROL EJECT;
  3124. # #
  3125. # CODE BEGINS HERE #
  3126. # #
  3127. LST$TYP[0] = " NCF SUMMARY ";
  3128. NCFFIRST[0] = LOC(NCRBUFF[0]);# POINT FET AT WORKING STORAGE BUFF#
  3129. NCFIN[0] = LOC(NCRBUFF[0]);
  3130. NCFOUT[0] = LOC(NCRBUFF[0]);
  3131. NCFLIMIT[0] = LOC(NCRBUFF[0]) + PRUPLS1;
  3132. SKIPEI(NCFFET);
  3133. SKIPB(NCFFET,2);
  3134. READ(NCFFET); # FILL CIO BUFFER #
  3135. RECALL(NCFFET);
  3136. READW(NCFFET,PRFX$TABLE,15,STMT$STAT); # READ PREFIX TABLE #
  3137. SSTATS(P<NCF$INDEX>,2); # ALLOCATE SPACE #
  3138. READW(NCFFET,NCF$INDEX,2,STMT$STAT); # READ NCF$INDEX #
  3139. IF STMT$STAT EQ TRNS$OK
  3140. THEN # IF READ WAS O.K. #
  3141. BEGIN
  3142. C<0,8>HD$TIME[0] = C<0,8>PT$TIME[0];# SAVE TIME AND DATE #
  3143. C<0,8>HD$DATE[0] = C<0,8>PT$DATE[0];
  3144. TITLE[0] = PT$TITLE[0]; # SAVE TITLE #
  3145. NET$NAME[0] = PT$FNAME[0]; # SAVE NCF NAME #
  3146. NCF$IDX$EC = (NCFWC[ENTRY0]-1)/NCFENTSZ;
  3147. IF NCF$NAM[ENTRY0] NQ "NCF"
  3148. THEN # IF THIS IS NOT IDENTIFIED AS -NCF- #
  3149. BEGIN
  3150. STMT$STAT = TRNS$OK + 1; # SET ERROR STATUS #
  3151. END
  3152. END
  3153. IF NOT NCFGOOD[ENTRY0] OR
  3154. STMT$STAT NQ TRNS$OK
  3155. THEN # NCF FILE NOT GOOD #
  3156. BEGIN
  3157. MESSAGE(EM$ENT[ERMSG11],0); # SEND MESSAGE TO DAYFILE #
  3158. ABRTFLG = TRUE; # SET ABORT FLAG #
  3159. END
  3160. ELSE
  3161. BEGIN # GOOD NCF FILE #
  3162. SSTATS(P<NCF$INDEX>,NCFWC[ENTRY0]);
  3163. READW(NCFFET,NCF$INDEX,NCFWC[ENTRY0]-1,STMT$STAT);
  3164. # READ REST OF NCF$INDEX #
  3165. IF STMT$STAT NQ TRNS$OK
  3166. THEN # CK READ STATUS #
  3167. ERRMSG(ERMSG2,"NCFLST");
  3168.  
  3169. FOR I=ENTRY0 STEP 1 UNTIL NCF$IDX$EC-1 # FOR EACH ENTRY #
  3170. DO # IN NCF$INDEX READ RECORD INTO TABLE #
  3171. BEGIN # I LOOP #
  3172. MATCH = FALSE;
  3173. FOR J=0 STEP 1 WHILE NOT MATCH
  3174. AND J LQ SIZERECTYPE
  3175. DO
  3176. BEGIN # J LOOP #
  3177. IF TABTYPE[J] EQ NCFRT[I]
  3178. THEN
  3179. MATCH = TRUE;
  3180. IF MATCH
  3181. THEN
  3182. BEGIN # MATCH FOUND #
  3183. GOTO REC$TYP[J];
  3184.  
  3185. HDR$REC:
  3186. TEST I;
  3187.  
  3188. NPU$XRF:
  3189. READREC(P<NPU$XREF>,I);
  3190. TEST I;
  3191.  
  3192. PL$XREF:
  3193. READREC(P<PLINK$XREF>,I);
  3194. TEST I;
  3195.  
  3196. LLK$XREF:
  3197. READREC(P<LOGLINK$XREF>,I);
  3198. TEST I;
  3199.  
  3200. LN$XREF:
  3201. READREC(P<LINE$XREF>,I);
  3202. TEST I;
  3203.  
  3204. DEV$XREF:
  3205. TEST I;
  3206.  
  3207. LN$REC$IDX:
  3208. READREC(P<LIN$REC$INDX>,I);
  3209. TEST I;
  3210.  
  3211. NCB$REC: # SKIP NCB RECORDS #
  3212. TEST I;
  3213.  
  3214. ERR$T:
  3215. ERRMSG(ERMSG3,"NCFLST");
  3216.  
  3217. END # MATCH #
  3218.  
  3219. END # J LOOP #
  3220.  
  3221. ERRMSG(ERMSG1,"NCFLST");
  3222. END # I LOOP #
  3223.  
  3224. HD$TYP[0] = "NCF";
  3225. NAM$TYP[0] = "NCF";
  3226. HDRLST; # PRINT NAME OF NCF AND TIME CREATED #
  3227. NPULST; # PRINT NPU INFORMATION #
  3228. NODLST; # PRINT NODE NUMBERS USED #
  3229. SSTATS(P<NCF$INDEX>,-1*NCF$LENG); # RELEASE ALL TABLE SPACE #
  3230. SSTATS(P<NCB$BUFFER>,-1*NCB$LENG);
  3231. SSTATS(P<NPU$XREF>,-1*NP$LENG);
  3232. SSTATS(P<PLINK$XREF>,-1*PL$LENG);
  3233. SSTATS(P<LOGLINK$XREF>,-1*LL$LENG);
  3234. SSTATS(P<LINE$XREF>,-1*LCT$LENG);
  3235. SSTATS(P<LIN$REC$INDX>,-1*LI$LENG);
  3236. SSTATS(P<SUP$TABLE>,-1*ST$LENG);
  3237. END # GOOD NCF FILE #
  3238.  
  3239. RETURN;
  3240. END # NCFLST PROC #
  3241. CONTROL EJECT;
  3242. PROC NODLST;
  3243. BEGIN
  3244. *IF,DEF,IMS
  3245. #
  3246. ** NODLST - NODE INFO LISTER
  3247. *
  3248. * S.M. ILMBERGER 81/10/28
  3249. *
  3250. * LIST ALL THE UNUSED NODE NUMBERS
  3251. *
  3252. * PROC NODLST
  3253. *
  3254. * ENTRY NONE
  3255. *
  3256. * EXIT NONE
  3257. *
  3258. * MESSAGE NONE
  3259. *
  3260. * METHOD
  3261. *
  3262. * PRINT THE LARGEST NODE NUMBER USED FROM NODMAP
  3263. * PRINTS ALL UNUSED NODE NUMBERS FROM UNSET BITS IN NODMAP
  3264. * END
  3265. *
  3266. #
  3267. *ENDIF
  3268.  
  3269. DEF ENDOFLN # 98 #;
  3270. DEF LGNOD # 255 #; # LARGEST NODE NUMBER POSSIBLE #
  3271. DEF SMNOD # 1 #; # SMALLEST NODE NUMBER POSSIBLE #
  3272.  
  3273. ITEM CHACNT; # CHARACTER COUNT #
  3274. ITEM I; # LOOP COUNTER #
  3275. ITEM MAXNODE1 I; # MAXIMUN NODE NUMBER #
  3276. ITEM UNUSEDNODE B; # SET IF NOT ALL NODES USED #
  3277. CONTROL EJECT;
  3278. # #
  3279. # CODE BEGINS HERE #
  3280. # #
  3281. MAXNOD[0] = 0;
  3282. NODNUMS[0] = " ";
  3283. MAXNODE1 = 0;
  3284. FOR I=LGNOD STEP -1 WHILE MAXNODE1 EQ 0
  3285. AND I GQ SMNOD
  3286. DO
  3287. BEGIN # FIND LARGEST NODE NUMBER USED #
  3288. WORD = (I - 1) / 60; # COMPUTE WORD AND #
  3289. BIT = (I - 1) - (60 * WORD); # BIT TO REFER TO #
  3290. IF B<BIT,1>NODEMAP[WORD] EQ 1
  3291. THEN # FOR EACH NODE NUMBER USED #
  3292. BEGIN
  3293. MAXNODE1 = I;
  3294. TEMP1 = I;
  3295. TEMP2 = XCDD(TEMP1);
  3296. MAXNOD[0] = C<7,3>TEMP2; # PUT NODE NUMBER IN OUTPUT LINE #
  3297. END
  3298.  
  3299. END
  3300.  
  3301. IF MAXNODE1 GR 0
  3302. THEN # AT LEAST 1 NODE NUMBER WAS USED #
  3303. BEGIN
  3304. PGLST(LN4);
  3305. WRITEH(OUTFET,MAXN$HDR,4); # WRITE MAX NODE NUM USED TO OUTPUT #
  3306. WRITEH(OUTFET,MAXN$LN,2);
  3307. CHACNT = 0;
  3308. PGLST(LN4);
  3309. WRITEH(OUTFET,USEDN$HDR,3);
  3310. UNUSEDNODE = FALSE;
  3311. FOR I=SMNOD STEP 1 UNTIL MAXNODE1
  3312. DO
  3313. BEGIN # SEARCH FOR UNUSED NODE NUMBERS #
  3314. WORD = (I - 1) / 60; # COMPUTE WORD AND #
  3315. BIT = (I - 1) - (60 * WORD); # BIT TO REFER TO #
  3316. IF B<BIT,1>NODEMAP[WORD] EQ 0 # FIND UNUSED NODE NUMBERS LESS#
  3317. THEN # THEN THE MAX NODE NUMBER #
  3318. BEGIN
  3319. UNUSEDNODE = TRUE;
  3320. TEMP1 = I;
  3321. TEMP2 = XCDD(TEMP1);
  3322. C<CHACNT,3>NODNUMS[0] = C<7,3>TEMP2;
  3323. CHACNT = CHACNT + 5;
  3324. IF CHACNT GQ ENDOFLN # MORE THAN 1 LINE OF UNUSED NODE NO#
  3325. THEN
  3326. BEGIN
  3327. CHACNT = 0;
  3328. WRITEH(OUTFET,UNODE$LN,11);# WRITE UNUSED NODE NUMBERS TO#
  3329. NODNUMS[0] = " "; # OUTPUT FILE #
  3330. PGLST(LN1);
  3331. END
  3332.  
  3333. END
  3334.  
  3335. END
  3336.  
  3337. IF CHACNT NQ 0
  3338. THEN
  3339. BEGIN
  3340. WRITEH(OUTFET,UNODE$LN,11);
  3341. UNODE$FIL1[0] = " ";
  3342. END
  3343.  
  3344. IF NOT UNUSEDNODE # ALL NODE NUMBERS LS THAN THE MAX #
  3345. THEN # NODE WERE USED #
  3346. BEGIN
  3347. MAXNODE[0] = MAXNOD[0];
  3348. WRITEH(OUTFET,ALLNODS,6);
  3349. END
  3350.  
  3351. END
  3352.  
  3353. RETURN;
  3354. END # NODELST PROC #
  3355. CONTROL EJECT;
  3356. PROC NPULST;
  3357. BEGIN
  3358. *IF,DEF,IMS
  3359. #
  3360. ** NPULST - NPU LISTER
  3361. *
  3362. * S.M. ILMBERGER 81/10/29
  3363. *
  3364. * LIST NPU INFO
  3365. *
  3366. * PROC NPULST
  3367. *
  3368. * ENTRY NONE
  3369. *
  3370. * EXIT NONE
  3371. *
  3372. * MESSAGES NONE
  3373. *
  3374. * METHOD
  3375. *
  3376. * FOR EACH ENTRY IN NPU$XREF TABLE
  3377. * FORMAT NPU OUTPUT LINE
  3378. * PRINT NPU HEADER
  3379. * PRINT NPU LINE
  3380. * GET RELATIVE PRU ADDRESS OF NCB THAT MATCHES CURRENT NPU
  3381. * READ IN NCB RECORD
  3382. * CALL SUPLST, TRKLST, CPLLST, LINLST AND TIPLST
  3383. * TO PRINT RESPECTIVE INFO
  3384. * END
  3385. *
  3386. #
  3387. *ENDIF
  3388.  
  3389. ITEM FOUND B; # FOUND RIGHT NCB RECORD #
  3390. ITEM I; # LOOP COUNTER #
  3391. ITEM INDX; # TEMP STORAGE FOR INDEX #
  3392. ITEM J; # LOOP COUNTER #
  3393. CONTROL EJECT;
  3394. # #
  3395. # CODE BEGINS HERE #
  3396. # #
  3397. FOR I=ENTRY1 STEP 1 UNTIL (NPWC[ENTRY0]-1)/NPENTSZ
  3398. DO # FOR EACH ENTRY IN NPU XREF TABLE #
  3399. BEGIN
  3400. NPU$NAM[0] = NPNAME[I]; # SET NPU NAME IN NPU OUTPUT LINE #
  3401. TEMP1 = NPNID[I];
  3402. TEMP2 = XCDD(TEMP1);
  3403. NPU$NOD[0] = C<7,3>TEMP2; # SET NPU NODE ID IN NPU OUTPUT LINE#
  3404. NODE$ID = NPNID[I]; # SAVE NPU NODE ID #
  3405. NPU$VAR[0] = NPVARNT[I]; # SET NPU VARIANT IN NPU OUTPUT LINE #
  3406. IF NPOPGO[I] # SET OPGO FLAG IN NPU OUTPUT LINE #
  3407. THEN
  3408. NPU$OP[0] = "YES";
  3409. ELSE
  3410. NPU$OP[0] = "NO";
  3411. IF NPDMP[I]
  3412. THEN #SET DMP FLAG IN OUTPUT LINE #
  3413. NPU$DMP[0] = "YES";
  3414. ELSE
  3415. NPU$DMP[0] = "NO";
  3416. PGLST(LN3);
  3417. WRITEH(OUTFET,NPU$HDR,7); # WRITE NPU HEADER AND NPU OUTPUT #
  3418. WRITEH(OUTFET,NPU$LN,7); # LINE TO OUTPUT FILE #
  3419. FIL1[0] = " ";
  3420. FOUND = FALSE;
  3421. FOR J=ENTRY0 STEP 1 WHILE J LQ NCF$IDX$EC-1
  3422. AND NOT FOUND # SEARCH NCF$INDEX FOR RELATIVE PRU #
  3423. DO # ADDRESS OF NCB THAT MATCHES THE #
  3424. BEGIN # CURRENT NPU #
  3425. IF NCFNID[J] EQ NODE$ID
  3426. THEN
  3427. BEGIN
  3428. FOUND = TRUE;
  3429. INDX = J;
  3430. END
  3431.  
  3432. END # J LOOP #
  3433.  
  3434. IF FOUND
  3435. THEN
  3436. BEGIN
  3437. READREC(P<NCB$BUFFER>,INDX); # READ CORRECT NCB RECORD #
  3438. SUPLST; # CALL SUPLINK LISTING PROC #
  3439. TRKLST; # CALL TRUNK LISTING PROC #
  3440. CPLLST; # CALL COUPLER LISTING PROC #
  3441. LINLST; # CALL LINE LISTING PROC #
  3442. TIPLST; # CALL TIPTYPE LISTING PROC #
  3443. WORD = (NPNID[I]-1)/60; # COMPUTE WORD AND #
  3444. BIT = (NPNID[I]-1) - (60 * WORD); # BIT TO REFER TO #
  3445. B<BIT,1>NODEMAP[WORD] = 1;
  3446. END # FOUND #
  3447.  
  3448. END # I LOOP #
  3449.  
  3450. RETURN;
  3451. END # NPULST PROC #
  3452. CONTROL EJECT;
  3453. PROC OUTLST;
  3454. BEGIN
  3455. *IF,DEF,IMS
  3456. #
  3457. ** OUTLST - OUTCALL LISTER
  3458. *
  3459. * S.M. ILMBERGER 81/10/29
  3460. *
  3461. * LIST OUTCALL INFO
  3462. *
  3463. * PROC OUTLST
  3464. *
  3465. * ENTRY NONE
  3466. *
  3467. * EXIT NONE
  3468. *
  3469. * MESSAGES
  3470. * ABRT FROM OUTLST - READ ERROR
  3471. *
  3472. * METHOD
  3473. *
  3474. * IF AT LEAST ONE ENTRY EXISTS IN OUTCALL$TABLE
  3475. * WRITE OUTCALL HEADER TO OUTPUT FILE
  3476. * FOR EACH ENTRY IN OUTCALL$TABLE
  3477. * FORMAT OUTCALL LINE
  3478. * WRITE OUTCALL LINE TO OUTPUT FILE
  3479. * IF NO ENTRIES EXIST IN INCALL$TABLE
  3480. * READ -EOR-
  3481. * END
  3482. *
  3483. #
  3484. *ENDIF
  3485.  
  3486. DEF ZERO # O"33" #; # DISPLAY CODE VALUE FOR ZERO #
  3487. DEF UBZMUL # 100 #; # MULTIPLE OF 100 WITH WHICH UBZ WAS #
  3488. # ENCODED #
  3489.  
  3490. ITEM I; # LOOP COUNTER #
  3491. ITEM ITEMP; # INTEGER TEMPORARY #
  3492. ITEM ITEMP2; # INTEGER TEMPORARY #
  3493. ITEM ITEMP3; # INTEGER TEMPORARY #
  3494. ITEM CTEMP; # CHARACTER TEMPORARY #
  3495. ITEM DTEMP; # INTEGER TEMPORARY #
  3496. ARRAY FACTEMP [0:0] S(1); # FAC TEMPORARY #
  3497. BEGIN
  3498. ITEM FACT1 U(00,12,08); # FIRST TWO FAC DIGITS #
  3499. ITEM FACT2 U(00,20,40); # LAST 10 FAC DIGITS #
  3500. ITEM FACT12 U(00,12,48); # ENTIRE WORD OF FAC #
  3501. END
  3502. ITEM J; # INTEGER TEMPORARY #
  3503.  
  3504. ARRAY DTEA$TEMP [0:0] S(1); # DTEA TEMPORARY #
  3505. BEGIN
  3506. ITEM DTEA1 U(00,00,52);
  3507. ITEM DTEA2 U(00,52,08);
  3508. ITEM DTEA I(00,00,60);
  3509. END
  3510.  
  3511. CONTROL EJECT;
  3512. PROC PRHEX(POS);
  3513. #
  3514. * PROCEDURE PRHEX
  3515. * IT CONVERTS EACH EVERY 4 BIT FROM UDATA FIELD
  3516. * AND PACKS IT INTO THE OUTPUT LINE FOR UDATA.
  3517. *
  3518. * ENTRY CONDITION :
  3519. * POS = OFFSET WITHIN THE OUTCALL PACKET.
  3520. * EXIT CONDITION :
  3521. * POS UNCHANGED.
  3522. *
  3523. *
  3524. #
  3525.  
  3526.  
  3527. BEGIN
  3528. DEF SIXTY # 60 #; # CONSTANT 60 #
  3529. ITEM POS ; # OFFSET WITH OUTCALL #
  3530. ITEM WORDC ; # LOCAL WORD COUNT #
  3531. ITEM INDIX, J ; # INDEXES #
  3532. ITEM BITC ; # BIT COUNT #
  3533.  
  3534. ITEM CTEMP C(10); # CHARACTER TEMPORARY #
  3535.  
  3536. WORDC = POS; # SAVE OFFSET #
  3537. BITC = 32; # SET BIT TO POINT TO #
  3538. # FIRST BIT OF UDATA #
  3539. PGLST(LN1); # CONDITIONAL NEW PAGE HEADING #
  3540. WRITEH(OUTFET,OUTC$21,3);
  3541. J = 0; # INDEX FOR AN OUTPUT LINE OF UDATA #
  3542. OUTC$FL3[0] = " ";
  3543.  
  3544. FOR INDIX = 0 STEP 1 UNTIL OBUDL[2]-1
  3545. DO
  3546. BEGIN
  3547. # FOR THE WHOLE LENGTH #
  3548. # OF UDL #
  3549. IF BITC EQ SIXTY # IF END OF WORD REACHED#
  3550. THEN
  3551. BEGIN
  3552. BITC = 0; # BIT COUNT RESET TO 0 #
  3553. WORDC = WORDC + 1; # BUMP WORD COUNT #
  3554. END
  3555. CTEMP = XCHD(B<BITC,4>OBUDATA[WORDC]);
  3556. # EXTRACT 4 BITS EACH #
  3557. # TIME #
  3558. C<J,1>OUTC$UDT[0] = C<9,1>CTEMP; # PUT INTO UDATA LINE #
  3559. BITC = BITC + 4; # GET THE NEXT 4 BITS #
  3560. J = J + 1; # INCR. OUTPUT LINE INDX#
  3561. IF J GQ 100
  3562. THEN # PRINT LINE OF UDATA IF BUFFER IS FULL #
  3563. BEGIN
  3564. PGLST(LN1); # NEW PAGE HEADING IF NEEDED #
  3565. WRITEH(OUTFET,OUTC$LN3,13);
  3566. J = 0; # RESET OUTPUT LINE INDEX FOR UDATA #
  3567. OUTC$FL3[0] = " "; # CLEAR LINE BUFFER #
  3568. END
  3569. END # END OF DO LOOP #
  3570. IF J GR 0
  3571. THEN
  3572. BEGIN # LAST LINE OF UDATA #
  3573. PGLST(LN1); # NEW PAGE HEADING IF NEEDED #
  3574. WRITEH(OUTFET,OUTC$LN3,13);
  3575. END
  3576. END # END OF PROC PRHEX #
  3577.  
  3578. CONTROL EJECT;
  3579.  
  3580. # #
  3581. # CODE BEGINS HERE #
  3582. # #
  3583.  
  3584. IF OBRWC[ENTRY1] GR 1
  3585. THEN # AT LEAST 1 ENTRY EXISTS IN OUTCALL$TABL #
  3586. BEGIN
  3587. PGLST(LN3);
  3588. WRITEH(OUTFET,OUT$HDR1,11);
  3589. WRITEH(OUTFET,OUT$HDR2,9);
  3590. READW(LCFFET,OUTCALL$TABL,1,LCF$STAT);
  3591. # READ FIRST WORD OF OUTCALL$TABLE ENTRY #
  3592. IF LCF$STAT NQ TRNS$OK
  3593. THEN
  3594. ERRMSG(ERMSG2,"OUTLST"); # PRINT READ ERROR MSG - ABORT #
  3595. FOR I=ENTRY0 WHILE LCF$STAT EQ TRNS$OK
  3596. DO
  3597. BEGIN
  3598. OUTCALL$EC = OBWC[ENTRY0]; # SAVE ENTRY WORD COUNT #
  3599. IF OB$LENG LS OUTCALL$EC-1
  3600. THEN # NOT ENOUGH SPACE IN OUTCALL$TABL FOR #
  3601. BEGIN # ENTRY - ALLOCATE MORE #
  3602. SSTATS(P<OUTCALL$TABL>,OUTCALL$EC-1-OB$LENG);
  3603. END
  3604.  
  3605. READW(LCFFET,OUTCALL$TABL,OUTCALL$EC-1,LCF$STAT);
  3606. # READ REST OF ENTRY #
  3607. IF LCF$STAT NQ TRNS$OK
  3608. THEN
  3609. ERRMSG(ERMSG2,"OUTLST"); # PRINT ERROR MSG - ABORT #
  3610. OUTC$CC1[0] = "0"; # SET LINE TO DOUBLE SPACE #
  3611. OUTC$NM1[0] = OBNAME1[I]; # SET NAME1 IN OUTCALL OUTPUT LINE#
  3612. IF NOT OBPRI[1] # SET PRIV FLAG IN OUTCALL LINE #
  3613. THEN
  3614. OUTC$PRI[0] = "NO";
  3615. ELSE
  3616. OUTC$PRI[0] = "YES";
  3617. IF OBPID[1] # IF PID SPECIFIED #
  3618. THEN
  3619. BEGIN
  3620. OUTC$PID[0] = OBNAME2[I]; # UPDATE PID NAME #
  3621. END
  3622. ELSE
  3623. BEGIN
  3624. OUTC$NM2[0] = OBNAME2[I];# SET NAME2 IN OUTCALL OUTPUT LINE#
  3625. END
  3626. TEMP2 = XCDD(OBDBL[1]);
  3627. OUTC$DBL[0] = C<9,1>TEMP2; # SET DBL IN OUTCALL OUTPUT LINE #
  3628. TEMP2 = XCDD(OBABL[1]);
  3629. OUTC$ABL[0] = C<9,1>TEMP2; # SET ABL IN OUTCALL OUTPUT LINE #
  3630. TEMP2 = XCDD(OBSNODE[2]);
  3631. OUTC$SND[0] = C<8,2>TEMP2; # SET SNODE IN OUTCALL OUTPUT LINE#
  3632. TEMP2 = XCDD(OBPORT[1]);
  3633. OUTC$PRT[0] = C<8,2>TEMP2; # SET PRT IN OUTCALL OUTPUT LINE#
  3634. ITEMP2 = 1;
  3635. FOR ITEMP = 1 STEP 1 UNTIL OBDPLS[2]
  3636. DO
  3637. BEGIN
  3638. ITEMP2 = ITEMP2*2; # GET ACTUAL VALUE OF DPLS #
  3639. END
  3640. TEMP2 = XCDD(ITEMP2); # GET DISPLAY CODE OF DPLS #
  3641. OUTC$DPS[0] = C<6,4>TEMP2;
  3642. TEMP2 = XCDD(OBWS[2]);
  3643. OUTC$WS[0] = C<9,1>TEMP2;
  3644. DTEA1[0] = OBDTEA1[3];
  3645. DTEA2[0] = OBDTEA2[4];
  3646. DTEMP = 15 - OBAL1[3];
  3647. FOR J=0 STEP 1 UNTIL OBAL1[3] - 1
  3648. DO # FOR EACH BCD NUMBER IN DTEA VALUE #
  3649. BEGIN # CONVERT NUMBER TO DISPLAY CODE #
  3650. C<DTEMP + J,1>OUTC$DTA[0] = B<J*4,4>DTEA + ZERO;
  3651. END
  3652. TEMP1 = 5 + OBFACNUM[2]; # POINT TO PRID /UDATA VALUE #
  3653. TEMP2 = XCHD(OBPRID[TEMP1]);
  3654. OUTC$PRD[0] = C<2,6>TEMP2; # SET PRID IN OUTPUT LINE #
  3655. PGLST(LN2);
  3656. WRITEH(OUTFET,OUTC$LN1,11); # WRITE OUTCALL LINE #
  3657. OUTC$FL1[0] = " ";
  3658. TEMP2 = XCDD(OBUBL[1]);
  3659. OUTC$UBL[0] = C<9,1>TEMP2;
  3660. TEMP2 = XCDD(OBUBZ[1]);
  3661. OUTC$UBZ[0] = C<8,2>TEMP2; # SET UBZ IN OUTCALL OUTPUT LINE#
  3662. TEMP2 = XCDD(OBDBZ[1]);
  3663. OUTC$DBZ[0] = C<6,4>TEMP2; # SET DBZ IN OUTCALL OUTPUT LINE#
  3664. TEMP2 = XCDD(OBDNODE[2]); # SET DNODE IN OUTPUT LINE #
  3665. OUTC$DND[0] = C<7,3>TEMP2; # SET DNODE IN OUTPUT LINE #
  3666. TEMP2 = XCDD(OBACC[2]);
  3667. OUTC$ACL[0] = C<8,2>TEMP2;
  3668. PGLST(LN1); # INCREMENT LINE COUNT #
  3669. WRITEH(OUTFET,OUTC$LN2,9); # WRITE LINE TO OUTPUT FILE #
  3670. IF OBUDL[2] EQ 0 # NONE SPECIFIED FOR USER DATA #
  3671. THEN
  3672. BEGIN
  3673. PGLST(LN1); # CHECK IF NEW PAGE NEEDED #
  3674. WRITEH(OUTFET,OUTC$21,3);
  3675. OUTC$FL1[0] = " ** NONE **";
  3676. PGLST(LN1);
  3677. WRITEH(OUTFET,OUTC$LN1,4);
  3678. OUTC$FL1[0] = " ";
  3679. END
  3680. ELSE
  3681. BEGIN
  3682. TEMP1 = 5 + OBFACNUM[2]; # POINT TO PRID /UDATA VALUE #
  3683. PRHEX(TEMP1) ; # GET HEX DATA FROM UDATA #
  3684. END
  3685. OUTC$FL2 = " ";
  3686. PGLST(LN1);
  3687. WRITEH(OUTFET,OUT$HDR3,3); # WRITE FACILITIES HEADER #
  3688. IF OBFACNUM[2] EQ 0
  3689. THEN # IF NO FACILITY CODES #
  3690. BEGIN
  3691. OUTC$FL1[0] = " ** NONE **";
  3692. PGLST(LN1);
  3693. WRITEH(OUTFET,OUTC$LN1,4);
  3694. OUTC$FL1[0] = " ";
  3695. END
  3696. OUTC$FL3[0] = " ";
  3697. FOR TEMP1=5 WHILE TEMP1 LS OBFACNUM[2]+5
  3698. DO # FOR EACH FACILITY CODE #
  3699. BEGIN
  3700. FOR ITEMP3=20 STEP 13 WHILE TEMP1 LS OBFACNUM[2]+5 AND
  3701. ITEMP3 LS 120
  3702. DO # FILL LINE UNTIL FULL #
  3703. BEGIN
  3704. FACT12[0] = B<0,OBFACL[TEMP1]*4>OBFAC[TEMP1];
  3705. IF OBFACL[TEMP1] GR 10
  3706. THEN
  3707. BEGIN
  3708. CTEMP = XCHD(FACT1[0]);
  3709. C<ITEMP3,2>OUTC$FL3[0] = C<8,2>CTEMP;
  3710. END
  3711. C<ITEMP3+2,10>OUTC$FL3[0] = XCHD(FACT2[0]);
  3712. TEMP1 = TEMP1 + 1;
  3713. END
  3714. PGLST(LN1); # INCREMENT LINE COUNT #
  3715. WRITEH(OUTFET,OUTC$LN3,13); # WRITE LINE TO OUTPUT FILE #
  3716. OUTC$FL3[0] = " "; # CLEAR LINE IMAGE BUFFER #
  3717. END
  3718. READW(LCFFET,OUTCALL$TABL,1,LCF$STAT);
  3719. # READ FIRST WORD OF NEXT ENTRY #
  3720. END # I LOOP #
  3721.  
  3722. END
  3723.  
  3724. ELSE # NO ENTRIES IN OUTCALL$TABL #
  3725. BEGIN
  3726. READW(LCFFET,OUTCALL$TABL,1,LCF$STAT); # READ -EOR- #
  3727. IF LCF$STAT NQ LOC(OBWORD[0]) # CK STATUS OF READ #
  3728. THEN
  3729. ERRMSG(ERMSG2,"OUTLST");
  3730. END
  3731.  
  3732. RETURN;
  3733. END # OUTLST PROC #
  3734. CONTROL EJECT;
  3735. PROC PGLST(NUMLN); # LISTS THE PAGE HEADER #
  3736. BEGIN
  3737. *IF,DEF,IMS
  3738. #
  3739. ** PGLST - PAGE HEADER LISTER
  3740. *
  3741. * S.M. ILMBERGER 81/10/29
  3742. *
  3743. * PRINTS PAGE HEADER IF NECESSARY
  3744. *
  3745. * PROC PGLST(NUMLN)
  3746. *
  3747. * ENTRY NUMLN - NUMBER OF LINES TO BE PRINTED
  3748. *
  3749. * EXIT NONE
  3750. *
  3751. * MESSAGES NONE
  3752. *
  3753. * METHOD
  3754. *
  3755. * IF A NEW PAGE IS REQUESTED
  3756. * PAGE EJECT AND PRINT PAGE HEADER
  3757. * CLEAR LINE COUNT
  3758. * ELSE
  3759. * IF NUMLINE+LINCOUNT > LENGTH OF PAGE
  3760. * PAGE EJECT AND PRINT PAGE HEADER
  3761. * CLEAR LINE COUNT
  3762. * ELSE
  3763. * ADD NUMLINES TO LINE-COUNT
  3764. * END
  3765. *
  3766. #
  3767. *ENDIF
  3768.  
  3769. ITEM NUMLN I; # NUMBER OF LINES TO BE PRINTED #
  3770.  
  3771. DEF PGLNGTH # 57 #; # NUMBER OF LINES ON PAGE #
  3772.  
  3773. ITEM LNCNT = 0; # LINE COUNT #
  3774. ITEM PGNM = 0; # INTEGER PAGE NUMBER #
  3775. # #
  3776. # CODE BEGINS HERE #
  3777. # #
  3778. IF NUMLN EQ NEWPAGE
  3779. THEN # FORCE A NEW PAGE #
  3780. BEGIN
  3781. PGNM = PGNM + 1;
  3782. TEMP2 = XCDD(PGNM);
  3783. PAGE$N[0] = C<5,5>TEMP2;
  3784. WRITEH(OUTFET,PG$HDR,13); # WRITE PAGE HEADER #
  3785. LNCNT = 1;
  3786. END
  3787.  
  3788. ELSE
  3789. BEGIN
  3790. IF LNCNT+NUMLN GR PGLNGTH
  3791. THEN # NEXT LINE WILL NOT FIT ON PAGE #
  3792. BEGIN # PAGE EJECT AND PRINT PAGE HEADER #
  3793. PGNM = PGNM + 1;
  3794. TEMP2 = XCDD(PGNM);
  3795. PAGE$N[0] = C<5,5>TEMP2;
  3796. WRITEH(OUTFET,PG$HDR,13);
  3797. WRITEH(OUTFET,BLNK$LN,1);
  3798. LNCNT = NUMLN + 2;
  3799. END
  3800.  
  3801. ELSE
  3802. BEGIN # NEXT LINE WILL FIT ON PAGE #
  3803. LNCNT = LNCNT + NUMLN; # INCREMENT LINE COUNT #
  3804. END
  3805.  
  3806. END
  3807.  
  3808. RETURN;
  3809. END # PGLST PROC #
  3810.  
  3811. CONTROL EJECT;
  3812. PROC RDNCB(ASCIILITERAL,NCB$TAB);
  3813. # READS TABLES FROM NCB #
  3814. BEGIN
  3815. *IF,DEF,IMS
  3816. #
  3817. ** RDNCB - READ NCB
  3818. *
  3819. * S.M. ILMBERGER 81/10/29
  3820. *
  3821. * LOCATE AND READ SUPERVISORY TABLE FROM NCB
  3822. *
  3823. * PROC RDNCB(ASCIILITERAL,NCB$TAB)
  3824. *
  3825. * ENTRY ASCIILITERAL - ASCII CHAR TO SEARCH NCB FOR
  3826. * NCB$TAB - ADDRESS OF TABLE TO PUT SUPERVISORY INFO IN
  3827. *
  3828. * EXIT NONE
  3829. *
  3830. * MESSAGES NONE
  3831. *
  3832. * METHOD
  3833. *
  3834. * SEARCH NCB UNTIL ASCIILITERAL TABLE HEADER IS FOUND
  3835. * FOR EACH ENTRY IN TABLE
  3836. * READ ENTRY INTO SUP$TABLE
  3837. * END
  3838. *
  3839. #
  3840. *ENDIF
  3841.  
  3842. ITEM ASCIILITERAL U;
  3843. ITEM NCB$TAB; # ADDRESS OF TABLE TO READ INTO #
  3844.  
  3845. ITEM I; # LOOP COUNTER #
  3846. ITEM J; # LOOP COUNTER #
  3847.  
  3848. ARRAY ENT [0:0] S(1);
  3849. BEGIN
  3850. ITEM ENTRYF U(00,44,08);
  3851. ITEM ENTCNT U(00,52,08);
  3852. ITEM TENTRY U(00,44,16);
  3853. END
  3854.  
  3855. BASED ARRAY NCBINFO [0:0] S(1);
  3856. BEGIN
  3857. ITEM NCBENT U(00,44,16);
  3858. END
  3859. CONTROL EJECT;
  3860. # #
  3861. # CODE BEGINS HERE #
  3862. # #
  3863. NCBWD = 3;
  3864. NCBIT = 52;
  3865. TENTRY[0] = 0;
  3866. FOR I=0 WHILE ENTRYF[ENTRY0] NQ ASCIILITERAL
  3867. DO
  3868. BEGIN # SEARCH NCB UNTIL "S" IS FOUND #
  3869. SERMSGX; # CK IF SERVICE MESSAGE BOUNDARY CROSSED #
  3870. IF NCBIT + 16 LQ 60
  3871. THEN
  3872. BEGIN
  3873. TENTRY[ENTRY0] = B<NCBIT,16>NCBWORD[NCBWD];
  3874. IF NCBIT + 16 LS 60
  3875. THEN
  3876. NCBIT = NCBIT + 16;
  3877. ELSE
  3878. BEGIN # NCBIT + 16 = 60 #
  3879. NCBIT = 0;
  3880. NCBWD = NCBWD + 1;
  3881. END
  3882.  
  3883. END
  3884.  
  3885. ELSE
  3886. BEGIN # NCBIT + 16 GR 60 #
  3887. B<0,60-NCBIT>TENTRY[ENTRY0] = B<NCBIT,60-NCBIT>NCBWORD[NCBWD];
  3888. B<60-NCBIT,NCBIT+16-60>TENTRY[ENTRY0] =
  3889. B<0,NCBIT+16-60>NCBWORD[NCBWD+1];
  3890. NCBWD = NCBWD + 1;
  3891. NCBIT = NCBIT + 16 - 60;
  3892. END
  3893.  
  3894. END
  3895.  
  3896. IF ENTCNT[ENTRY0]+1 GR ST$LENG
  3897. THEN
  3898. SSTATS(NCB$TAB,ENTCNT[ENTRY0]+1-ST$LENG);
  3899. P<NCBINFO> = NCB$TAB;
  3900. NCBENT[0] = TENTRY[ENTRY0];
  3901. FOR J=1 STEP 1 UNTIL ENTCNT[ENTRY0]
  3902. DO # READ REST OF SUPERVISORY TABLE #
  3903. BEGIN
  3904. SERMSGX; # CK IF SERVICE MESSAGE BOUNDARY CROSSED #
  3905. IF NCBIT + 16 LQ 60
  3906. THEN
  3907. BEGIN
  3908. NCBENT[J] = B<NCBIT,16>NCBWORD[NCBWD];
  3909. IF NCBIT + 16 LS 60
  3910. THEN
  3911. NCBIT = NCBIT + 16;
  3912. ELSE
  3913. BEGIN # NCBIT + 16 = 60 #
  3914. NCBIT = 0;
  3915. NCBWD = NCBWD + 1;
  3916. END
  3917.  
  3918. END
  3919.  
  3920. ELSE
  3921. BEGIN # NCBIT + 16 GR 60 #
  3922. B<0,60-NCBIT>NCBENT[J] =
  3923. B<NCBIT,60-NCBIT>NCBWORD[NCBWD];
  3924. B<60-NCBIT,NCBIT+16-60>NCBENT[J] =
  3925. B<0,NCBIT+16-60>NCBWORD[NCBWD+1];
  3926. NCBWD = NCBWD + 1;
  3927. NCBIT = NCBIT + 16 - 60;
  3928. END
  3929.  
  3930. END
  3931.  
  3932. RETURN;
  3933. END # RDNCB PROC #
  3934. CONTROL EJECT;
  3935. PROC READREC(POINTER,(INDEX));
  3936. BEGIN
  3937. *IF,DEF,IMS
  3938. #
  3939. ** READREC - READ RECOR
  3940. *
  3941. * S.M. ILMBERGER 81/10/29
  3942. *
  3943. * READ MCF FILE RECORDS
  3944. *
  3945. * PROC READREC(POINTER,(INDEX))
  3946. *
  3947. * ENTRY POINTER - ADDRESS OF TABLE TO READ INTO
  3948. * INDEX - INDEX OF NCF$INDEX TABLE ENTRY
  3949. *
  3950. * EXIT NONE
  3951. *
  3952. * MESSAGES
  3953. * ABRT FROM READREC - CAN'T READ NCF RECDS
  3954. *
  3955. * METHOD
  3956. *
  3957. * ALLOCATE TABLE SPACE
  3958. * POINT FET AT WORKING STARAGE BUFFER
  3959. * READ NCFFET RECORD INTO TABLE
  3960. * END
  3961. *
  3962. #
  3963. *ENDIF
  3964.  
  3965. ITEM POINTER U;
  3966. ITEM INDEX U;
  3967.  
  3968. DEF STAT$EOF # O"33" #; # STATUS'S FOR NCFFET READS #
  3969. DEF STAT$EOI # O"1033" # ;
  3970. DEF STAT$EOR # O"23" #;
  3971. DEF STAT$FUL # O"3" #;
  3972.  
  3973. ITEM SIZE I;
  3974.  
  3975. # #
  3976. # CODE BEGINS HERE #
  3977. # #
  3978. SIZE = ( (NCFRL[INDEX] + PRULNGTH - 1) / PRULNGTH + 1) * PRULNGTH;
  3979. SSTATS(POINTER,SIZE); # ALLOCATE TABLE SPACE #
  3980. NCFRR[0] = NCFRANINDX[INDEX];
  3981. NCFFIRST[0] = POINTER; # POINT FET AT WORKING STORAGE BUFFER #
  3982. NCFIN[0] = POINTER;
  3983. NCFOUT[0] = POINTER;
  3984. NCFLIMIT[0] = POINTER + SIZE + 1;
  3985. READ(NCFFET); # FILL CIO BUFFER #
  3986. RECALL(NCFFET);
  3987. IF NCFCODE[0] NQ STAT$EOR
  3988. THEN
  3989. ERRMSG(ERMSG7,"READREC");
  3990. RETURN;
  3991. END # READREC PROC #
  3992. CONTROL EJECT;
  3993. PROC SERMSGX; # CHECKS FOR SERVICE MESSAGE CROSSINE IN NCB #
  3994. BEGIN
  3995. *IF,DEF,IMS
  3996. #
  3997. ** SERMSGX - SERVICE MESSAGE CROSSING
  3998. *
  3999. * S.M. ILMBERGER 81/10/29
  4000. *
  4001. * CHECK IF SERVICE MESSAGE BOUNDARY IS CROSSED
  4002. *
  4003. * PROC SERMSGX
  4004. *
  4005. * ENTRY NONE
  4006. *
  4007. * EXIT NONE
  4008. *
  4009. * MESSAGES NONE
  4010. *
  4011. * METHOD
  4012. *
  4013. * IF A SERVICE MESSAGE BOUNDARY IS CROSSED
  4014. * SKIP THE NEXT SERVICE MESSAGE HEADER
  4015. * END
  4016. *
  4017. #
  4018. *ENDIF
  4019. # #
  4020. # CODE BEGINS HERE #
  4021. # #
  4022. IF (NCBWD / SERMSG) * SERMSG EQ NCBWD
  4023. AND NCBIT EQ 52
  4024. THEN # SERVICE MESSAGE IS CROSSED #
  4025. NCBWD = NCBWD + 3;
  4026. RETURN;
  4027. END # SERMSGX PROC #
  4028. CONTROL EJECT;
  4029. PROC SRCLST;
  4030. # THIS PROC LISTS THE INPUT SOURCE LINES #
  4031. BEGIN
  4032. *IF,DEF,IMS
  4033. #
  4034. ** SRCLST - SOURCE LISTER
  4035. *
  4036. * S.M.ILMBERGER81/10/29
  4037. *
  4038. * PRODUCE SOURCE LISTING
  4039. *
  4040. * PROC SRCLST
  4041. *
  4042. * ENTRY NONE
  4043. *
  4044. * EXIT NONE
  4045. *
  4046. * MESSAGES NONE
  4047. *
  4048. * METHOD
  4049. *
  4050. * SET UP ERROR-2-FET
  4051. * FILL ERROR-2-BUFFER
  4052. * SET UP SECONDARY-INPUT-FET
  4053. * FILL SEC-INP-BUFFER
  4054. * WRITE SOURCE HEADER TO OUTPUT FILE
  4055. * IF NO PASS-2 ERRORS EXIST
  4056. * FOR EACH LINE IN SEC-INP-BUFFER
  4057. * WRITE SEC-INP-LINE TO OUTPUT-FILE
  4058. * IF PASS-2 ERRORS EXIST
  4059. * FOR EACH LINE IN SEC-INP-BUFFER
  4060. * IF PASS-2 ERRORS IXIST FOR LINE NUMBER
  4061. * PLAG ERROR POSITION ON LINE
  4062. * WRITE SEC-INP-LINE TO OUTPUT FILE
  4063. * END
  4064. #
  4065. *ENDIF
  4066.  
  4067. ITEM ER2$STAT; # STATUS OF READ #
  4068. ITEM ERRDONE B; # ALL ERRORS PROCESSED WHEN SET #
  4069. ITEM I; # LOOP COUNTER #
  4070. ITEM J; # LOOP COUNTER #
  4071.  
  4072. ARRAY ERR2$LN [0:0] S(2);
  4073. BEGIN
  4074. ITEM ERR2$CODE I(00,00,12); # ERROR CODE #
  4075. ITEM ERR2$LIN I(00,12,18); # LINE NUMBER #
  4076. ITEM ERR2$CLWD C(01,00,10); # CLARIFIER WORD #
  4077. ITEM ERR2$WD1 U(00,00,60);
  4078. ITEM ERR2$WD2 U(01,00,60);
  4079. END
  4080. CONTROL EJECT;
  4081. # #
  4082. # CODE BEGINS HERE #
  4083. # #
  4084. LST$TYP[0] = "SOURCE LISTING ";
  4085. PGLST(NEWPAGE);
  4086.  
  4087. E2FIRST[0] = LOC(E2WBWORD[0]); # POINT FET AT ERROR-1 WORKING #
  4088. E2OUT[0] = LOC(E2WBWORD[0]); # STORAGE BUFFER #
  4089. E2IN[0] = LOC(E2WBWORD[0]);
  4090. E2LIMIT[0] = LOC(E2WBWORD[0]) + PRULNGTH + 1;
  4091. REWIND(ERR2FET);
  4092. READ(ERR2FET); # FILL CIO BUFFER #
  4093. RECALL(ERR2FET);
  4094.  
  4095. SECFIRST[0] = LOC(SECWORD[0]); # SET UP SECONDARY INPUT WORKING#
  4096. SECIN[0] = LOC(SECWORD[0]); # STORAGE BUFFER #
  4097. SECOUT[0] = LOC(SECWORD[0]);
  4098. SECLIMIT[0] = LOC(SECWORD[0]) + PRULNGTH + 1;
  4099. REWIND(SECFET);
  4100. READ(SECFET); # FILL CIO BUFFER #
  4101. RECALL(SECFET);
  4102.  
  4103. PGLST(LN3);
  4104. WRITEH(OUTFET,SOURCE$HDR,2);
  4105. READW(ERR2FET,ERR2$LN,2,ER2$STAT);
  4106. IF ER2$STAT NQ TRNS$OK # NO PASS2 ERRORS #
  4107. OR ERR2$LIN[0] EQ 0
  4108. THEN # NO PASS 2 ERRORS #
  4109. BEGIN
  4110. READH(SECFET,OUTPT$BUFFER,11,STMT$STAT);
  4111. FOR I=1 WHILE STMT$STAT EQ TRNS$OK
  4112. DO
  4113. BEGIN # READ SOURCE LISTING AND WRITE IT TO #
  4114. # OUTPUT BUFFER #
  4115. PGLST(LN1);
  4116. WRITEH(OUTFET,OUTPT$BUFFER,11);
  4117. OUTBUFF1[0] = " ";
  4118. READH(SECFET,OUTPT$BUFFER,11,STMT$STAT);
  4119. END
  4120.  
  4121. END
  4122.  
  4123. ELSE
  4124. BEGIN # PASS 2 ERRORS EXIST #
  4125. ERRDONE = FALSE;
  4126. READH(SECFET,OUTPT$BUFFER,11,STMT$STAT);
  4127. FOR I=0 WHILE STMT$STAT EQ TRNS$OK
  4128. DO
  4129. BEGIN # FOR ALL OF SECONDARY INPUT FIL#
  4130. IF NOT ERRDONE
  4131. THEN # CK FOR ERRORS #
  4132. BEGIN
  4133. TEMP1 = ERR2$LIN[0];
  4134. TEMP2 = XCDD(TEMP1);
  4135. IF OUTLNUM[0] EQ C<5,5>TEMP2
  4136. THEN
  4137. BEGIN
  4138. OUTELINE[0] = "***";
  4139. READW(ERR2FET,ERR2$LN,2,ER2$STAT);
  4140. IF ER2$STAT NQ TRNS$OK OR ERR2$LIN[0] EQ 0
  4141. THEN
  4142. ERRDONE = TRUE;
  4143. TEMP1 = ERR2$LIN[0];
  4144. TEMP2 = XCDD(TEMP1);
  4145. IF OUTLNUM[0] EQ C<5,5>TEMP2 # SEE IF 2 OR MORE ERRORS #
  4146. THEN # ON SAME LINE #
  4147. BEGIN
  4148. FOR J=0 WHILE (OUTLNUM[0] EQ C<5,5>TEMP2
  4149. AND ERR2$LIN[0] NQ 0)
  4150. DO
  4151. BEGIN # SKIP ERRORS WITH DUPLICATE LINE NUMBERS #
  4152. READW(ERR2FET,ERR2$LN,2,ER2$STAT);
  4153. IF ER2$STAT NQ TRNS$OK OR ERR2$LIN[0] EQ 0
  4154. THEN
  4155. ERRDONE = TRUE;
  4156. TEMP1 = ERR2$LIN[0];
  4157. TEMP2 = XCDD(TEMP1);
  4158. END
  4159.  
  4160. END
  4161.  
  4162. END
  4163.  
  4164. END
  4165.  
  4166. PGLST(LN1);
  4167. WRITEH(OUTFET,OUTPT$BUFFER,11); # WRITE SECONDARY INPUT LINE #
  4168. OUTBUFF1[0] = " "; # TO OUTPUT BUFFER #
  4169. READH(SECFET,OUTPT$BUFFER,11,STMT$STAT);
  4170. END # I LOOP #
  4171.  
  4172. END # ELSE #
  4173.  
  4174. RETURN;
  4175. END # SRCLST PROC #
  4176. CONTROL EJECT;
  4177. PROC SUPLST;
  4178. BEGIN
  4179. *IF,DEF,IMS
  4180. #
  4181. ** SUPLST - SUPLINK LISTER
  4182. *
  4183. * S.M. ILMBERGER 81/10/29
  4184. *
  4185. * LIST SUPLINK INFO
  4186. *
  4187. * PROC SUPLST
  4188. *
  4189. * ENTRY NONE
  4190. *
  4191. * EXIT NONE
  4192. *
  4193. * MESSAGES NONE
  4194. *
  4195. * METHOD
  4196. *
  4197. * WRITE SUPLINK HEADER TO OUTPUT FILE
  4198. * READ SUPERVISORY TABLE FROM THE NCB
  4199. * FOR EACH ENTRY IN SUPERVISORY TABLE
  4200. * FOR EACH ENTRY IN LOGLINK TABLE
  4201. * IF ROUTING ORDINAL MATCHES HOST ID AND LLNOD-ID MATCHES
  4202. * NPU ID
  4203. * FORMAT SUPLINK LINE
  4204. * WRITE SUPLINK LINE TO OUTPUT FILE
  4205. * END
  4206. #
  4207. *ENDIF
  4208.  
  4209. DEF ASCII$S # O"123" #;# OCTAL VALUE FOR ASCII "S" #
  4210. DEF SUPTABENTSZ # 1 #; # SUPERVISORY TABLE ENTRY SIZE #
  4211.  
  4212. ITEM FOUND B;
  4213. ITEM I; # LOOP COUNTER #
  4214. ITEM J; # LOOP COUNTER #
  4215. ITEM SLK$CNT I; # SUPLINK COUNT #
  4216. CONTROL EJECT;
  4217. # #
  4218. # CODE BEGINS HERE #
  4219. # #
  4220. SLK$CNT = 0;
  4221. PGLST(LN3);
  4222. WRITEH(OUTFET,SUP$HDR,3);
  4223. RDNCB(ASCII$S,P<SUP$TABLE>); # READ SUPLINK TAB FROM NCB #
  4224. FOR I=ENTRY1 STEP STENTSZ UNTIL ST$ENT[0]
  4225. DO # FOR EACH ENTRY IN SUPERVISORY TABLE #
  4226. BEGIN
  4227. FOUND = FALSE;
  4228. FOR J=ENTRY1 STEP 1 WHILE # SEARCH LOGLIND TAB FOR MATCH#
  4229. (NOT FOUND AND J LQ (LLWC[ENTRY0]-1)/LLENTSZ)
  4230. DO
  4231. BEGIN
  4232. IF ST$RO[I] EQ LLHNID1[J] # IF ROUTING ORDINAL MATCHES HOST #
  4233. AND NODE$ID EQ LLNID2[J] # ID AND NPU NODE ID MATCHES #
  4234. THEN
  4235. BEGIN # MATCH IS FOUND #
  4236. FOUND = TRUE;
  4237. SLK$NAM[0] = LLNAME[J]; # SET SUPLINK NAME IN SUPLINK LINE #
  4238. SLK$CNT = SLK$CNT + 1;
  4239. IF SLK$CNT EQ 1
  4240. THEN
  4241. BEGIN
  4242. WRITEH(OUTFET,SUP$LN,3); # WRITE SUPLINK LINE #
  4243. END
  4244.  
  4245. ELSE
  4246. BEGIN
  4247. PGLST(LN1);
  4248. WRITEH(OUTFET,SUP$LN,3);
  4249. END
  4250.  
  4251. SLK$FIL1[0] = " ";
  4252. END
  4253.  
  4254. END
  4255.  
  4256. END
  4257.  
  4258. RETURN;
  4259. END # SUPLST PROC #
  4260. CONTROL EJECT;
  4261. PROC TIPLST;
  4262. BEGIN
  4263. *IF,DEF,IMS
  4264. #
  4265. ** TIPLST - TIPTYPE LISTER
  4266. *
  4267. * S.M. ILMBERGER 81/10/29
  4268. *
  4269. * LIST ALL TIPTYPES USED FOR EACH NPU
  4270. *
  4271. * PROC TIPLST
  4272. *
  4273. * ENTRY NONE
  4274. *
  4275. * EXIT NONE
  4276. *
  4277. * MESSAGES NONE
  4278. *
  4279. * METHOD
  4280. *
  4281. * FOR EACH BIT IN TYPTYPES-USED TABLE
  4282. * IF BIT IS SET
  4283. * SAVE CORRESPONDING NAME IN TIP-LINE
  4284. * IF AT LEAST ONE TIPTYPE WAS USED
  4285. * WRITE TIPTYPE HEADER TO OUTPUT FILE
  4286. * WRITE TIPTYPE LINE TO OUTPUT FILE
  4287. * END
  4288. *
  4289. #
  4290. *ENDIF
  4291.  
  4292. DEF ENDTIP # 10 #; # LAST TIP NUMBER #
  4293. DEF FSTIP # 0 #; # FIRST TIP NUMBER #
  4294.  
  4295. ITEM I; # LOOP COUNTER #
  4296. ITEM J; # SCRATCH ITEM #
  4297.  
  4298. ARRAY TIPNMS [0:10] S(1);
  4299. ITEM TIPNAMES C(00,00,10) = [" ",
  4300. " ASYNC",
  4301. " MODE4",
  4302. " HASP",
  4303. " X25",
  4304. " BSC",
  4305. " SYNAUTO",
  4306. " TT12",
  4307. " TT13",
  4308. " TT14",
  4309. " 3270"
  4310. ];
  4311. CONTROL EJECT;
  4312. # #
  4313. # CODE BEGINS HERE #
  4314. # #
  4315. J = 1; # INITIALIZE POINTER TO OUTPUT LINE #
  4316. FOR I=FSTIP STEP 1 UNTIL ENDTIP # SEARCH TIP LIST TABLE #
  4317. DO # IF A BIT IS SET FOR A TIPTYPE #
  4318. BEGIN # SAVE TIPTYPE IN TIPLST LINE #
  4319. IF B<I,1>TIPMAP[0] EQ 1
  4320. THEN
  4321. BEGIN
  4322. TIPS[J] = TIPNAMES[I];
  4323. J = J + 1; # INCREMENT OUTPUT LINE POINTER #
  4324. END
  4325.  
  4326. END
  4327.  
  4328. IF J NQ 1 # AT LEAST ONE TIPTYPE WAS USED #
  4329. THEN
  4330. BEGIN
  4331. PGLST(LN4);
  4332. WRITEH(OUTFET,TIP$HDR,4); # WRITE TIPLIST HEADER #
  4333. WRITEH(OUTFET,TIP$LN,10); # WRITE TIPLIST LINE #
  4334. END
  4335.  
  4336. TIP$FILL[0] = " ";
  4337. TIPMAP[0] = 0;
  4338. RETURN;
  4339. END #TIPLST PROC #
  4340. CONTROL EJECT;
  4341. PROC TRKLST;
  4342. BEGIN
  4343. *IF,DEF,IMS
  4344. #
  4345. ** TRKLST - TRUNK STATEMENT LISTER
  4346. *
  4347. * S.M. ILMBERGER 81/10/29
  4348. *
  4349. * LIST TRUNK INFO
  4350. *
  4351. * PROC TRKLST
  4352. *
  4353. * ENTRY NONE
  4354. *
  4355. * EXIT NONE
  4356. *
  4357. * MESSAGES NONE
  4358. *
  4359. * METHOD
  4360. *
  4361. * FOR EACH TRUNK ENTRY IN PHYSICAL LINE XREF TABLE
  4362. * IF NODE MATCHES CURRENT NPU NODE
  4363. * SEARCH NPU$XREF TABLE FOR N1 AND N2 NAMES
  4364. * FORMAT REST OF TRUNK LINE
  4365. * WRITE TRUNK LINE TO OUTPUT FILE
  4366. * END
  4367. *
  4368. #
  4369. *ENDIF
  4370.  
  4371. ITEM FOUNDNPU1 B; # SET IF N1 NAME FOUND #
  4372. ITEM FOUNDNPU2 B; # SET IF N2 NAME FOUND #
  4373. ITEM I; # LOOP COUNTER #
  4374. ITEM J; # LOOP COUNTER #
  4375. ITEM TRKCNT I; # NUMBER OF TRUNKS #
  4376.  
  4377. DEF TRK$TYP # 1 #; # INDICATES PLINK IS TRUNK #
  4378. CONTROL EJECT;
  4379. # #
  4380. # CODE BEGINS HERE #
  4381. # #
  4382. TRKCNT = 0;
  4383. FOR I=ENTRY1 STEP 1 UNTIL (PLWC[ENTRY0]-1)/PLENTSZ
  4384. DO # FOR EACH ENTRY IN PHYSICAL LINK TAB #
  4385. BEGIN
  4386. IF PLTYPE[I] EQ TRK$TYP AND # LINK TYPE IS TRUNK AND NODE ID#
  4387. (PLNID1[I] EQ NODE$ID OR PLNID2[I] EQ NODE$ID) # MATCHES #
  4388. THEN
  4389. BEGIN
  4390. TRKCNT = TRKCNT + 1;
  4391. TRK$NAM[0] = PLNAME[I]; # SET TRUNK NAME IN TRUNK OUTPT LINE #
  4392. FOUNDNPU1 = FALSE;
  4393. FOUNDNPU2 = FALSE;
  4394. FOR J=ENTRY1 STEP 1 WHILE J LQ (NPWC[ENTRY0]-1)/NPENTSZ
  4395. AND ( NOT FOUNDNPU1 OR NOT FOUNDNPU2)
  4396. DO # SEARCH NPUXREF TABLE FOR NPU NAMES TO #
  4397. BEGIN # PRINT IN N1 AND N2 POSITIONS #
  4398. IF NPNID[J] EQ PLNID1[I]
  4399. THEN
  4400. BEGIN
  4401. TRK$N1[0] = NPNAME[J]; # SET NAME1 IN TRUNK OUTPUT LINE #
  4402. FOUNDNPU1 = TRUE;
  4403. END
  4404.  
  4405. IF NPNID[J] EQ PLNID2[I]
  4406. THEN
  4407. BEGIN
  4408. TRK$N2[0] = NPNAME[J]; # SET NAME2 IN TRUNK OUTPUT LINE #
  4409. FOUNDNPU2 = TRUE;
  4410. END
  4411.  
  4412. END # J LOOP #
  4413.  
  4414. TEMP1 = PLP1[I];
  4415. TEMP2 = XCDD(DC$FRAME(PLFRAME[I])); # CONVERTS CODE TO CHAR#
  4416. TRK$FRAME[0] = C<6,4>TEMP2; # ASSIGN FRAME CODE #
  4417. TEMP2 = XCHD(TEMP1);
  4418. TRK$P1[0] = C<8,2>TEMP2; # SET P1 IN TRUNK OUTPUT LINE #
  4419. TEMP1 = PLP2[I];
  4420. TEMP2 = XCHD(TEMP1);
  4421. TRK$P2[0] = C<8,2>TEMP2; # SET P2 IN TRUNK OUTPUT LINE #
  4422. IF PLNLD1[I] # SET NOLOAD1 FLAG IN TRUNK OUTPT#
  4423. THEN
  4424. TRK$NOLO1[0] = "YES";
  4425. ELSE
  4426. TRK$NOLO1[0] = "NO";
  4427. IF PLNLD2[I] # SET NOLOAD2 FLAG IN TRUNK OUTPT#
  4428. THEN
  4429. TRK$NOLO2[0] = "YES";
  4430. ELSE
  4431. TRK$NOLO2[0] = "NO";
  4432. IF PLST[I] # SET STATUS FLAG IN TRUNK LINE #
  4433. THEN
  4434. TRK$STA[0] = "DI";
  4435. ELSE
  4436. TRK$STA[0] = "EN";
  4437. IF TRKCNT EQ 1
  4438. THEN
  4439. BEGIN
  4440. PGLST(LN3);
  4441. WRITEH(OUTFET,TRK$HDR,9); # WRITE TRUNK HEADER TO OUTPUT #
  4442. WRITEH(OUTFET,TRK$LN,9); # WRITE TRUNK LINE TO OUTPUT FILE#
  4443. END
  4444.  
  4445. ELSE
  4446. BEGIN
  4447. PGLST(LN1);
  4448. WRITEH(OUTFET,TRK$LN,9); # WRITE TRUNK LINE TO OUTPUT FILE#
  4449. END
  4450.  
  4451. TRK$FIL[0] = " ";
  4452. END
  4453.  
  4454. END # I LOOP #
  4455.  
  4456. RETURN;
  4457. END # TRKLST PROC #
  4458. CONTROL EJECT;
  4459. PROC TRMLST;
  4460. BEGIN
  4461. *IF,DEF,IMS
  4462. #
  4463. ** TRMLST - TERMINAL LISTER
  4464. *
  4465. * S.M. ILMBERGER 81/10/29
  4466. *
  4467. * LIST TERMINAL STATEMENT INFO
  4468. *
  4469. * PROC TRMLST
  4470. *
  4471. * ENTRY NONE
  4472. *
  4473. * EXIT NONE
  4474. *
  4475. * MESSGES
  4476. * ABRT FROM TRMLST - FN VAL NOT TERM FN
  4477. *
  4478. * METHOD
  4479. *
  4480. * FOR EACH TERMINAL ENTRY ON CURRENT LINE
  4481. * FORMAT TERMINAL OUTPUT LINE FROM TERMINAL ITEMS
  4482. * FOR EACH TERMINAL FNFV PAIR - STORE INFO INTO TERMINAL LINE
  4483. * WRITE TERMINAL HEADER
  4484. * WRITE TERMINAL LINE TO OUTPUT FILE
  4485. * CALL DEVLST
  4486. * END
  4487. *
  4488. #
  4489. *ENDIF
  4490.  
  4491. DEF BCE$TIP # 4 #; # TIPTYPE FOR BCE #
  4492. DEF HASP$TIP # 3 #; # TIPTYPE FOR HASP #
  4493. DEF MAX$FN # 148 #; # MAX POSSIBLE FN VALUE #
  4494. DEF MAXCSET # 15 #; # MAX CODE FOR CSET #
  4495. DEF MAXTC # 31 #; # MAX TERMINAL CLASS CODE #
  4496. DEF MAXTSPEED # 11 #; # MAX CODE FOR TSPEED #
  4497. DEF MD4$TIP # 2 #; # TIPTYPE FOR MODE4 #
  4498. DEF TT$12 # 12 #; # TIPTYPE FOR USER TIP TT12 #
  4499. DEF TT$3270 # 15 #; # TIPTYPE FOR 3270 #
  4500.  
  4501. ITEM I; # INDEX VARIABLE #
  4502. ITEM INDX I;
  4503. ITEM J; # LOOP COUNTER #
  4504. ITEM K; # LOOP COUNTER #
  4505. ITEM CTEMP C(10); # CHARACTER TEMPORARY #
  4506. ITEM FIR$SEMI B; # FLAG FOR FIRST HALF OF A PAD SEMI-OCTET #
  4507. ITEM PAD$INDX; # POINTS TO PAD VALUES ON OUTPUT LINE #
  4508.  
  4509. ARRAY CSET$NAMES [0:16] S(1);
  4510. ITEM CSET C(00,00,07) = [" ","BCD","ASCII","APLTP",
  4511. "APLBP","EBCD","EBCDAPL","CORRES","CORAPL",
  4512. "EBCDIC",,,,,,"CSET15"];
  4513.  
  4514. ARRAY CTYP$NAMES [0:2] S(1);
  4515. ITEM CTYP$VAL C(00,00,03) = ["SVC","PVC"];
  4516.  
  4517. ARRAY FNFVTABLE [0:0] S(1);
  4518. BEGIN
  4519. ITEM FNFV$ENT U(00,44,16);
  4520. ITEM FN$ENT U(00,44,08);
  4521. ITEM FV$ENT U(00,52,08);
  4522. END
  4523.  
  4524. ARRAY STIP1$NAMES [0:6] S(1);
  4525. ITEM STIP1 C(00,00,05)=[ ,"N2741","M4A","POST","PAD","2780"];
  4526.  
  4527. ARRAY STIP2$NAMES [0:6] S(1);
  4528. ITEM STIP2 C(00,00,05) = [ ,"2741","M4C","PRE","USER","3780"];
  4529.  
  4530. ARRAY TC$TYPES [0:32] S(1);
  4531. ITEM TC C(00,00,05) =
  4532. [ " ","M33","713","721","2741","M40","H2000",
  4533. "X364","T4014","HASP","200UT","714X","711","714","HPRE","734",
  4534. "2780","3780","3270", , , , , , , , , ,"TC28","TC29","TC30",
  4535. "TC31"];
  4536.  
  4537. ARRAY TSPEEEDS [0:11] S(1);
  4538. ITEM TSPEED C(00,00,05) = [" ","110","134","150","300","600",
  4539. "1200","2400","4800","9600","19200","38400"];
  4540.  
  4541. ARRAY YESNOTAB [0:2] S(1);
  4542. ITEM YESNOENT C(00,00,03) = ["NO","YES"];
  4543.  
  4544. SWITCH TER$FN
  4545. ERRTER, # 0 # ERRTER, # 1 # ERRTER, # 2 # ERRTER, # 3 #
  4546. ERRTER, # 4 # ERRTER, # 5 # ERRTER, # 6 # ERRTER, # 7 #
  4547. ERRTER, # 8 # ERRTER, # 9 # ERRTER, # 10 # ERRTER, # 11 #
  4548. ERRTER, # 12 # ERRTER, # 13 # ERRTER, # 14 # ERRTER, # 15 #
  4549. ERRTER, # 16 # ERRTER, # 17 # ERRTER, # 18 # ERRTER, # 19 #
  4550. TSTJ , # 20 # ERRTER, # 21 # TSTJ , # 22 # TSTJ , # 23 #
  4551. TSTJ , # 24 # TSTJ , # 25 # TSTJ , # 26 # TSTJ , # 27 #
  4552. TSTJ , # 28 # TSTJ , # 29 # TSTJ , # 30 # TSTJ , # 31 #
  4553. TSTJ , # 32 # ERRTER, # 33 # TSTJ , # 34 # TSTJ , # 35 #
  4554. TSTJ , # 36 # TSTJ , # 37 # TSTJ , # 38 # TSTJ , # 39 #
  4555. TSTJ , # 40 # TSTJ , # 41 # TSTJ , # 42 # TSTJ , # 43 #
  4556. TSTJ , # 44 # TSTJ , # 45 # ERRTER, # 46 # ERRTER, # 47 #
  4557. TSTJ , # 48 # TSTJ , # 49 # TSTJ , # 50 # TSTJ , # 51 #
  4558. TSTJ , # 52 # TSTJ , # 53 # TSTJ , # 54 # TSTJ , # 55 #
  4559. ERRTER, # 56 # TSTJ , # 57 # TSTJ , # 58 # TSTJ , # 59 #
  4560. TSTJ , # 60 # TSTJ , # 61 # TSTJ , # 62 # TSTJ , # 63 #
  4561. TSTJ , # 64 # TSTJ , # 65 # TSTJ , # 66 # TSTJ , # 67 #
  4562. TSTJ , # 68 # TSTJ , # 69 # ERRTER, # 70 # TSTJ , # 71 #
  4563. W , # 72 # CTYP , # 73 # NCIR , # 74 # NEN , # 75 #
  4564. TSTJ , # 76 # RIC , # 77 # BCF , # 78 # MREC , # 79 #
  4565. TSTJ , # 80 # ERRTER, # 81 # ERRTER, # 82 # ERRTER, # 83 #
  4566. ERRTER, # 84 # ERRTER, # 85 # ERRTER, # 86 # ERRTER, # 87 #
  4567. COLECT, # 88 # ERRTER, # 89 # TSTJ , # 90 # TSTJ , # 91 #
  4568. TSTJ , # 92 # TSTJ , # 93 # TSTJ , # 94 # TSTJ , # 95 #
  4569. TSTJ , # 96 # TSTJ , # 97 # TSTJ , # 98 # TSTJ , # 99 #
  4570. ERRTER, #100 # ERRTER, #101 # TSTJ , #102 # ERRTER, #103 #
  4571. ERRTER, #104 # ERRTER, #105 # ERRTER, #106 # ERRTER, #107 #
  4572. ERRTER, #108 # ERRTER, #109 # ERRTER, #110 # EOF, #111 #
  4573. TSTJ, #112 # PAD, #113 # PAD, #114 # PAD, #115 #
  4574. PAD, #116 # PAD, #117 # PAD, #118 # PAD, #119 #
  4575. PAD, #120 # PAD, #121 # PAD, #122 # PAD, #123 #
  4576. PAD, #124 # PAD, #125 # PAD, #126 # PAD, #127 #
  4577. PAD, #128 # PAD, #129 # PAD, #130 # PAD, #131 #
  4578. PAD, #132 # PAD, #133 # PAD, #134 # PAD, #135 #
  4579. PAD, #136 # PAD, #137 # PAD, #138 # PAD, #139 #
  4580. PAD, #140 # PAD, #141 # PAD, #142 # PAD, #143 #
  4581. PAD, #144 # TSTJ, #145 # TSTJ, #146 # TSTJ, #147 #
  4582. TSTJ; #148 #
  4583. CONTROL EJECT;
  4584. # #
  4585. # CODE BEGINS HERE #
  4586. # #
  4587. I = 1;
  4588. FOR K=1 WHILE I LS LINREC$WC-2
  4589. DO
  4590. BEGIN
  4591. TER$FIL[0] = " "; # CLEAR TRM LINE 1 #
  4592. TER$FIL2[0] = " "; # CLEAR TRM LINE 2 #
  4593. TER$PAD = " ";
  4594. FIR$SEMI = TRUE; # SET FLAGF TO TRUE #
  4595. PAD$INDX = 0; # RESET PRINTABLE PAD CHAR INDEX #
  4596. IF TESTIP[I+1] EQ 6
  4597. THEN # USER DEFINED TIP #
  4598. BEGIN
  4599. TER$STIP[0] = "USER";
  4600. END
  4601. ELSE
  4602. BEGIN # REGULAR TIPTYPE #
  4603. IF TESTIP[I+1] EQ 1
  4604. THEN
  4605. TER$STIP[0] = STIP1[TETP[I+1]]; # SET STIP IN TRM OUTPT LIN#
  4606. ELSE
  4607. BEGIN
  4608. IF TESTIP[I+1] EQ 2
  4609. THEN
  4610. TER$STIP[0] = STIP2[TETP[I+1]]; # SET STIP IN TRM LINE #
  4611. ELSE
  4612. BEGIN
  4613. IF TESTIP[I+1] EQ 3
  4614. THEN
  4615. BEGIN
  4616. TER$STIP[0] = "XAA"; # SET XAA STIP #
  4617. END
  4618. END
  4619. END
  4620. END
  4621.  
  4622. IF TETC[I+1] LQ MAXTC
  4623. THEN # CK IF VALID TC #
  4624. TER$TC[0] = TC[TETC[I+1]]; # SET TERMINAL CLASS IN TRM LINE #
  4625. IF TECD[I+1] LQ MAXCSET
  4626. THEN # CK IF VALID CSET #
  4627. TER$CSET[0] = CSET[TECD[I+1]]; # SET CSET IN TRM OUTPUT LINE #
  4628. IF TETS[I+1] LQ MAXTSPEED
  4629. THEN
  4630. TER$TSP[0] = TSPEED[TETS[I+1]]; # SET TSPEED IN TERMINAL LINE#
  4631.  
  4632. IF (TETP[I+1] EQ HASP$TIP OR # HASP OR BCE TIP #
  4633. TETP[I+1] EQ BCE$TIP) AND
  4634. TEA1[I+1] NQ 0
  4635. THEN
  4636. BEGIN
  4637. TEMP2 = XCDD(TEA1[I+1]);
  4638. TER$CO[0] = C<7,3>TEMP2; # SET CO IN TRM OUTPUT LINE #
  4639. END
  4640. ELSE IF TETP[I+1] EQ MD4$TIP OR
  4641. (TETP[I+1] GQ TT$12 AND TETP[I+1] LQ TT$3270)
  4642. THEN
  4643. BEGIN
  4644. TEMP2 = XCHD(TEA1[I+1]);
  4645. TER$CA[0] = C<8,2>TEMP2; # SET CA IN TRM OUTPUT LINE #
  4646. END
  4647.  
  4648. WORD = I + 4; # REFERENCE 1ST WORD OF FNFV ENTRIES #
  4649. BIT = 24;
  4650. FOR J=1 STEP 1 UNTIL DEFNFV[I+3]
  4651. DO # GET NEXT NPU WORD - 16 BITS AND STORE IN FNFV TABLE#
  4652. BEGIN
  4653. IF BIT+16 LQ 60
  4654. THEN
  4655. BEGIN
  4656. FNFV$ENT[0] = B<BIT,16>LRWORD[WORD];
  4657. IF BIT + 16 LS 60
  4658. THEN
  4659. BIT = BIT + 16;
  4660. ELSE
  4661. BEGIN
  4662. BIT = 0;
  4663. WORD = WORD + 1;
  4664. END
  4665.  
  4666. END
  4667.  
  4668. ELSE
  4669. BEGIN # BIT + 16 GR 60 #
  4670. B<0,60-BIT>FNFV$ENT[0] = B<BIT,60-BIT>LRWORD[WORD];
  4671. B<60-BIT,BIT+16-60>FNFV$ENT[0] =
  4672. B<0,BIT+16-60>LRWORD[WORD+1];
  4673. WORD = WORD + 1;
  4674. BIT = BIT +16 - 60;
  4675. END
  4676.  
  4677. IF FN$ENT[0] GR MAX$FN
  4678. THEN # FN VALUE TO LARGE #
  4679. ERRMSG(ERMSG10,"TRMLST");
  4680. ELSE
  4681. GOTO TER$FN[FN$ENT[0]];
  4682.  
  4683. ERRTER:
  4684. ERRMSG(ERMSG10,"TRMLST"); # BAD FN VALUE #
  4685.  
  4686. TSTJ:
  4687. TEST J; # FN VALUE NOT FOR TERMINAL STATEMENT #
  4688. RIC:
  4689. TER$RIC[0] = YESNOENT[FV$ENT[0]]; # SET RIC IN TRM LINE #
  4690. TEST J;
  4691.  
  4692. BCF: # SET BCF FLAG IN TERMINAL OUTPUT LINE #
  4693. TER$BCF[0] = YESNOENT[FV$ENT[0]];
  4694. TEST J;
  4695.  
  4696. MREC: # SET MREC VALUE IN TERMINAL OUTPUT LINE #
  4697. TEMP1 = FV$ENT[0];
  4698. TEMP2 = XCDD(TEMP1);
  4699. TER$MREC[0] = C<9,1>TEMP2;
  4700. TEST J;
  4701.  
  4702. W: # SET W VALUE IN TERMINAL OUTPUT LINE #
  4703. TEMP1 = FV$ENT[0];
  4704. TEMP2 = XCDD(TEMP1);
  4705. TER$W[0] = C<9,1>TEMP2;
  4706. TEST J;
  4707.  
  4708. CTYP: # SET CTYPE FLAG IN TERMINAL OUTPUT LINE #
  4709. TER$CTYP[0] = CTYP$VAL[FV$ENT[0]];
  4710. TEST J;
  4711.  
  4712. NCIR: # SET NCIR VALUE IN TERMINAL OUTPUT LINE #
  4713. TEMP1 = FV$ENT[0];
  4714. TEMP2 = XCDD(TEMP1);
  4715. TER$NCIR[0] = C<7,3>TEMP2;
  4716. TEST J;
  4717.  
  4718. NEN: # SET NEN VLAUE IN TERMINAL OUTPUT LINE #
  4719. TEMP1 = FV$ENT[0];
  4720. TEMP2 = XCDD(TEMP1);
  4721. TER$NEN[0] = C<7,3>TEMP2;
  4722. TEST J;
  4723.  
  4724. EOF: TER$EOF[0] = YESNOENT[FV$ENT[0]]; # PUT EOF FLAG ON LIST#
  4725. TEST J;
  4726. PAD:
  4727. CTEMP = XCHD(FV$ENT[0]);
  4728. C<PAD$INDX,2>TER$PAD = C<8,2>CTEMP;
  4729. IF FIR$SEMI # IF FIRST HALF FOR A SEMIOCTET#
  4730. THEN
  4731. BEGIN
  4732. PAD$INDX = PAD$INDX + 2;
  4733. FIR$SEMI = FALSE;
  4734. END
  4735. ELSE
  4736. BEGIN # SECOND HALF OF A SEMIOCTET #
  4737. PAD$INDX = PAD$INDX + 3;
  4738. FIR$SEMI = TRUE;
  4739. END
  4740. TEST J;
  4741.  
  4742. COLECT: # SET COLLECT VALUE IN TRMNL OUTPUT LINE #
  4743. TER$CLCT[0] = YESNOENT[FV$ENT[0]];
  4744. TEST J;
  4745. END # J LOOP #
  4746.  
  4747. PGLST(LN4);
  4748. WRITEH(OUTFET,TER$HDR1,11);# WRITE TERMINAL HEADER #
  4749. WRITEH(OUTFET,TER$HDR2,3);
  4750. WRITEH(OUTFET,TER$LN1,11); # WRITE TERMINAL OUTPUT LINE #
  4751. WRITEH(OUTFET,TER$LN2,13);
  4752. TER$FIL[0] = " ";
  4753. TER$FIL2[0] = " ";
  4754. INDX = I; # SET INDX TO 1ST WORD OF TER ENTRY #
  4755. DEVLST(INDX); # PROCESS DEVICE STATEMENTS #
  4756. I = I + TEWC[I];
  4757. END # I LOOP #
  4758.  
  4759. RETURN;
  4760. END # TRMLST PROC #
  4761. CONTROL EJECT;
  4762. PROC USERLST;
  4763. BEGIN
  4764. *IF,DEF,IMS
  4765. #
  4766. ** USERLST - USER STATEMENT LISTER
  4767. *
  4768. * S.M. ILMBERGER 81/10/29
  4769. *
  4770. * LISTS INFO FROM USER$TABLE
  4771. *
  4772. * PROC USERLST
  4773. *
  4774. * ENTRY NONE
  4775. *
  4776. * EXIT NONE
  4777. *
  4778. * MESSAGES
  4779. * ABRT FROM USERLST - READ ERROR
  4780. *
  4781. * METHOD
  4782. *
  4783. * IF AT LEAST ONE ENTRY EXISTST ISN USER$TABLE
  4784. * WRITE USER HEADER TO OUTPUT FILE
  4785. * FOR EACH ENTRY IN USER$TABLE
  4786. * FORMAT USER LINE FROM INFO IN USER$TABLE
  4787. * WRITE USER LINE TO OUTPUT FILE
  4788. * IF NO ENTRIES IN USER$TABLE
  4789. * READ -EOR-
  4790. * END
  4791. *
  4792. #
  4793. *ENDIF
  4794.  
  4795. ITEM I; # LOOP COUNTER #
  4796.  
  4797. ARRAY MDP [0:4] S(1);
  4798. ITEM M$D$P C(00,00,03) = [" ","MAN","DEF","PRI"];
  4799. CONTROL EJECT;
  4800. # #
  4801. # CODE BEGINS HERE #
  4802. # #
  4803.  
  4804. IF UTWC[ENTRY1] GR 1
  4805. THEN # AT LEAST ONE ENTRY EXISTS IN USER$TAB #
  4806. BEGIN
  4807. PGLST(LN2); # COUNT LINES TO BE PRINTED #
  4808. WRITEH(OUTFET,USER$HDR,9);
  4809. # WRITE USER HEADER #
  4810. READW(LCFFET,USER$TABLE,UTENTSZ,LCF$STAT);
  4811. IF LCF$STAT NQ TRNS$OK # CK STATUS OF READ #
  4812. THEN
  4813. ERRMSG(ERMSG2,"USERLST");# PRINT READ ERROR MSG - ABORT #
  4814. FOR I=ENTRY0 WHILE LCF$STAT EQ TRNS$OK
  4815. DO
  4816. BEGIN
  4817. USER$NAM[0] = UTNAME[I]; # SET USER NAME IN USER OUTPUT LINE#
  4818. IF UTFAM[I+1] NQ 0
  4819. THEN # SET USER FAMILY NAME IN USER OUTPUT LINE #
  4820. USER$FAM[0] = XSFW(UTFAM[I+1]);
  4821. ELSE # NAME FIELD IS ZERO #
  4822. BEGIN
  4823. IF UTCODE[I+1] NQ 0
  4824. THEN # IF FAM WAS ORIGINALLY SPECIFIED #
  4825. BEGIN
  4826. USER$FAM[0] = "0"; # PUT VALUE OF -0- FOR FAM NAME #
  4827. END
  4828. END
  4829. USER$FST[0] = M$D$P[UTCODE[I+1]]; # SET USER FAM FLAG #
  4830. IF UTUSER[I+2] NQ 0
  4831. THEN # PUT USER NAME IN USER LINE #
  4832. USER$USER[0] = XSFW(UTUSER[I+2]);
  4833. USER$UST[0] = M$D$P[UTCODE[I+2]]; # SET USER FLAG IN USER LIN#
  4834. IF UTAPPL[I+3] NQ 0
  4835. THEN
  4836. USER$APPL[0] = UTAPPL[I+3]; # SET APPL NAME IN USER LINE #
  4837. USER$AST[0] = M$D$P[UTCODE[I+3]]; # SET APPL FLAG IN USER LIN#
  4838. PGLST(LN1);
  4839. WRITEH(OUTFET,USER$LN,9); # WRITE USER LINE TO OUTPUT FILE #
  4840. USER$FIL[0] = " ";
  4841. READW(LCFFET,USER$TABLE,UTENTSZ,LCF$STAT);
  4842. END # I LOOP #
  4843.  
  4844. END
  4845.  
  4846. ELSE # NO ENTRIES EXIST IN USER$TABLE #
  4847. BEGIN
  4848. READW(LCFFET,USER$TABLE,1,LCF$STAT); # READ -EOR- #
  4849. IF LCF$STAT NQ LOC(UTWORD[0]) # CK STATUS OF READ #
  4850. THEN
  4851. ERRMSG(ERMSG2,"USERLST");
  4852. END
  4853.  
  4854. RETURN;
  4855. END # USRLST PROC #
  4856. CONTROL EJECT;
  4857. # #
  4858. # CODE BEGINS HERE #
  4859. # #
  4860. # SET UP OUTFILE FET #
  4861. OUTFIRST[0] = LOC(OUTWORD[0]);
  4862. OUTIN[0] = LOC(OUTWORD[0]);
  4863. OUTOUT[0] = LOC(OUTWORD[0]);
  4864. OUTLIMIT[0] = LOC(OUTWORD[0]) + PRULNGTH + 1;
  4865. # SET UP PAGE HEADER #
  4866. LST$TYP[0] = " "; # CLEAR LISTING TYPE #
  4867. VER$NUM[0] = C<9,3>NAMVER[0]; # SET PROGRAM VERSION #
  4868. LEV$NUM[0] = C<2,3>NAMLV[0]; # SET PROGRAM LEVEL #
  4869. PDATE(TEMPACKED); # GET PACKED DATE AND TIME #
  4870. TEMPT = 0;
  4871. B<42,18>TEMPT = B<42,18>TEMPACKED;
  4872. TIM[0] = ETIME(TEMPT); # UNPACK TIME - STORE IN TABLE #
  4873. TEMP1 = 0;
  4874. C<7,3>TEMP1 = C<4,3>TEMPACKED; # SET UP FOR EDATE #
  4875. TEMPD = EDATE(TEMP1); # UNPACK DATE #
  4876. DAT[0] = TEMPD; # SET DATE #
  4877. PAGE$N[0] = "0";
  4878. IF CRERUN
  4879. THEN # CREATION RUN #
  4880. BEGIN
  4881. TITLE[0] = TITLE$WORD[0];
  4882. IF LISTFLG # IF LISTING IS NOT TO BE SUPPRESSED #
  4883. THEN
  4884. BEGIN
  4885. IF LISTN
  4886. THEN # NORMAL LISTING REQUIRED #
  4887. SRCLST;
  4888. IF ERRCNT GR 0
  4889. OR WARNCNT GR 0
  4890. THEN # ERROR LISTING IS NECESSARY #
  4891. ERRLST;
  4892. IF LISTD
  4893. THEN # DEFINE LISTING REQUIRED #
  4894. DEFLST;
  4895. IF LISTS
  4896. THEN # EXPANDED SOURCE LISTING REQUIRED #
  4897. EXSLST;
  4898. IF LISTF AND ERRCNT EQ 0
  4899. THEN # SUMMARY LISTING REQUIRED #
  4900. BEGIN
  4901. IF NCFDIV
  4902. THEN # NCF SUMMARY REQUIRED #
  4903. NCFLST;
  4904. IF LCFDIV
  4905. THEN # LCF SUMMARY REQUIRED #
  4906. LCFLST;
  4907. END
  4908. WRITER(OUTFET); # FLUSH CIO BUFFER FOR OUTPUT FILE #
  4909. END
  4910. ELSE # LISTING IS TO BE SUPPRESS (L=0) #
  4911. BEGIN
  4912. IF ERRCNT GR 0 # IF FATAL ERRORS EXIST #
  4913. THEN
  4914. BEGIN
  4915. ERRLST; # GENERATE ERROR SUMMARY #
  4916. WRITER(OUTFET); # FLUSH CIO BUFFER FOR OUTPUT FILE #
  4917. END
  4918. END
  4919.  
  4920. END
  4921.  
  4922. ELSE
  4923. BEGIN # SUMMARY RUN #
  4924. IF LISTFLG # IF LISTING IS NOT TO BE SUPPRESSED #
  4925. THEN
  4926. BEGIN
  4927. IF LISTNF
  4928. THEN # NCF SUMMARY REQUIRED #
  4929. BEGIN
  4930. NCFLFN[0] = NFFILE;
  4931. NCFLST;
  4932. END
  4933.  
  4934. IF LISTLF
  4935. THEN # LCF SUMMARY REQUIRED #
  4936. BEGIN
  4937. LCFLFN[0] = LFFILE;
  4938. LCFLST;
  4939. END
  4940. WRITER(OUTFET); # FLUSH CIO BUFFER FOR OUTPUT FILE #
  4941. END
  4942.  
  4943. END
  4944.  
  4945. RETURN;
  4946. END
  4947. TERM
cdc/nos2.source/nam5871/ndllist.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator