User Tools

Site Tools


cdc:nos2.source:nam5871:nvfiast

NVFIAST

Table Of Contents

  • [00007] PROC NVFIAST
  • [00012] INITIALIZES THE AST.
  • [00040] PROC APPLS
  • [00041] PROC MESSAGE
  • [00042] PROC NVFIIAP
  • [00043] PROC READ
  • [00044] PROC READW
  • [00045] PROC REWIND
  • [00046] PROC SKIPB
  • [00047] PROC SKIPEI
  • [00048] PROC SSTAQE
  • [00049] PROC SSTATS
  • [00050] PROC SSTETS

Source Code

NVFIAST.txt
  1. *DECK NVFIAST
  2. USETEXT TEXTNVF
  3. USETEXT TEXTSS
  4. USETEXT TXTAPSS
  5. USETEXT TXVCBNV
  6.  
  7. PROC NVFIAST;
  8. #TITLE NVFIAST - INITIALIZES THE APPLICATION-STATUS-TABLE (AST). #
  9.  
  10. BEGIN # NVFIAST #
  11. #
  12. ** NVFIAST - INITIALIZES THE AST.
  13. *
  14. * A. LIM. 82/01/12
  15. * C. BRION 83/04/23. 83/05/19.
  16. *
  17. * THIS ROUTINE IS PART OF THE INITIALIZATION PROCESS FOR NVF.
  18. * ITS JOB IS TO INITIALIZE THE APPLICATION-STATUS-TABLE (AST).
  19. *
  20. * PROC NVFIAST
  21. *
  22. * ENTRY NONE.
  23. *
  24. * EXIT AST IS INITIALIZED.
  25. *
  26. * METHOD READ THE NOS VALIDATION COMMON DECK - COMTNAP, AND
  27. * TRANSFER THAT PART OF INFORMATION TO AST. THEN BUILD
  28. * THE VALID APPLICATION MASK FROM THE APPLICATIONS IN AST.
  29. * READ THE LOCAL-CONFIGURATION FILE - LCF, AND TRANSFER
  30. * THAT PART OF INFORMATION TO AST.
  31. * SAVE THE LCF VERSION IN COMMON BLOCK *LCFVRSN* DEFINED
  32. * IN *TEXTNVF*.
  33. #
  34.  
  35. #
  36. **** PROC NVFIAST XREF LIST
  37. #
  38. XREF
  39. BEGIN
  40. PROC APPLS; # COMPASS INTERFACE ROUTINE TO GET COMTNAP#
  41. PROC MESSAGE; # MACREL - SEND MESSAGE #
  42. PROC NVFIIAP; # INITIALIZATION ABORT PROCEDURE #
  43. PROC READ; # MACREL - READ FILE TO CIO BUFFER #
  44. PROC READW; # MACREL - TRANSFER DATA TO WORKING BUFFER#
  45. PROC REWIND; # MACREL - REWIND FILE #
  46. PROC SKIPB; # MACREL - SKIP RECORDS BACKWARD #
  47. PROC SKIPEI; # MACREL - SKIP TO EOR #
  48. PROC SSTAQE; # SS - ACCEPT A QUEUE ENTRY #
  49. PROC SSTATS; # ALLOCATE TABLE SPACE #
  50. PROC SSTETS; # SS - ENLARGE TABLE SPACE #
  51. END
  52. #
  53. ****
  54. #
  55.  
  56. *CALL NAMLEV
  57.  
  58. # DEFS #
  59.  
  60. DEF APESIZ$ # 1 #; # APPL ENTRY SIZE #
  61. DEF LCFETSIZ$ # 5 #; # LCF FET SIZE #
  62. DEF LCFPTSIZ$ # 17 #; # LCF PREFIX TBL + 2 WORDS #
  63. DEF TRNS$OK # 0 #; # STATUS RETURNED WHEN READ IS O.K. #
  64. DEF XTRAPPLS$ # 5 #; # NUMBER OF APPLS NOT IN COMTNAP (NS, ETC)#
  65.  
  66. DEF NVFLEVL$ # 5 #; # LENGTH OF NVF LEVEL MSG #
  67. DEF LCFBDTL$ # 6 #; # LENGTH OF LCF BUILD DATE, TIME MSG #
  68. DEF LCFTITL$ # 9 #; # LENGTH OF LCF TITLE MSG #
  69.  
  70. # ITEMS #
  71.  
  72. ITEM CMTNAP U; # APPLS RETURN PARM- COMTNAP ADDR #
  73. ITEM ENDPROCG B = FALSE; # END PROCESSING LCF RECORDS #
  74. ITEM I,II U; # AST INDEX #
  75. ITEM J U; # INDUCTION VARIABLE #
  76. ITEM K U; # DUMMY INDUCTION VARIABLE #
  77. ITEM LAST$RCNAM C(7); # NAME OF THE LAST LCF-RECORD PROCESSED #
  78. ITEM MATCH B; # LOOP EXIT INDICATOR #
  79. ITEM NAPPLS U; # APPLS RETURN PARM- NO OF APPLS #
  80. ITEM NENTRY U; # NUMBER OF ENTRIES IN THE AST #
  81. ITEM STATS I; # READW RETURN PARM- STATUS #
  82. ITEM TAPENTRY U; # TOTAL NO OF ENTRIES IN APPL RECD #
  83. ITEM TOTAPPLS U; # TOTAL NO OF APPLS IN AST #
  84.  
  85. #
  86. * LCFFET - LCF FET.
  87. *
  88. * THIS THE FET FOR LCF. IT IS DEFINED LOCALLY HERE SIMPLY BECAUSE
  89. * ONLY THIS INITIALIZATION PROC MANIPULATES IT.
  90. #
  91. ARRAY LCFFET[00:00] S(LCFETSIZ$);
  92. BEGIN
  93. ITEM LCF$WORD U(00,00,60); #FIRST WORD OF FET #
  94. ITEM LCF$LFN C(00,00,03) = ["LCF"];
  95. ITEM LCF$ZERO U(00,18,24) = [0];
  96. ITEM LCF$LNAT U(00,42,08); #COMB LEVEL NR AND ABN TERM CODE#
  97. ITEM LCF$CODE U(00,50,10); #CIO FUNCTION CODE #
  98. ITEM LCF$CBIT B(00,59,01) = [TRUE]; # CIO COMPLETE BIT #
  99. ITEM LCF$L U(01,36,06) =[0]; # FET LEN IN EXCESS OF 5 WRDS#
  100. ITEM LCF$FIRST U(01,42,18); #FIRST WORD ADDR OF CIO BUFF #
  101. ITEM LCF$IN U(02,00,60); #NEXT DATA IN POINTER #
  102. ITEM LCF$OUT U(03,00,60); #NEXT DATA OUT POINTER #
  103. ITEM LCF$LIMIT U(04,42,18); #LAST WORD ADDR + 1 OF CIO BUF #
  104. END
  105.  
  106.  
  107. #
  108. * LCFWSA - LCF WORKING STORAGE AREA.
  109. *
  110. * THIS IS THE WORKING STORAGE OF LCF RECORD.
  111. #
  112. ARRAY LCFWSA[00:00] S(LCFPTSIZ$);
  113. BEGIN
  114. ITEM LFW$RCNAM C(00,00,07); # RECORD NAME #
  115. ITEM LFW$RCNAM1 C(01,00,07); # RECORD NAME IN LAST RECORD #
  116. ITEM LFW$ANAM C(00,00,07); # APPL NAME #
  117. ITEM LFW$MXCOP U(00,42,04); # MAX NUMBER COPIES #
  118. ITEM LFW$XFERF B(00,53,01); # NETXFER FLAG #
  119. ITEM LFW$KDSPF B(00,54,01); # K-DISPLAY FLAG #
  120. ITEM LFW$PRUF B(00,55,01); # PRU INTERFACE FLAG #
  121. ITEM LFW$RS B(00,56,01); # REQUEST STARTABLE INDICATOR #
  122. ITEM LFW$PPF B(00,57,01); # PRIVILEGED PROGRAM FLAG #
  123. ITEM LFW$UIDF B(00,58,01); # UNIQUE IDENTIFER REQUIRED FLAG#
  124. ITEM LFW$DIF B(00,59,01); # APPL DISABLED FLAG #
  125. ITEM LFW$RWC U(01,42,18); # RECORD WORD COUNT #
  126. ITEM LFW$DAT C(02,00,20); # CREATION DATE AND TIME #
  127. ITEM LFW$DATE C(02,00,10); # CREATION DATE #
  128. ITEM LFW$TIME C(03,00,10); # CREATION TIME #
  129. ITEM LFW$TITLE C(08,00,50); # TITLE- TRUNCATED TO 50 CHAR #
  130. ITEM LFW$VALIDW U(16,00,60); # VALID LCF INDICATOR WORD #
  131. END
  132.  
  133.  
  134. #
  135. * REN - RESERVED ENTRY NAME.
  136. *
  137. * THIS ARRAY DEFINES THE NAME USED IN COMTNAP FOR ENTRIES THAT
  138. * ARE RESERVED FOR LATER USE.
  139. *
  140. #
  141. ARRAY REN [00:00] S(1);
  142. BEGIN
  143. ITEM REN$ANAM U(00,00,42);
  144. ITEM REN$AN1 U(00,00,12) = [O"7777"];
  145. ITEM REN$AN2 U(00,12,30) = [0];
  146. END
  147.  
  148.  
  149. #
  150. * TCMTNAP - TEMPLATE FOR COMTNAP.
  151. *
  152. * THIS IS A TEMPLATE FOR THE ENTRY IN THE NOS VALIDATION COMMON
  153. * DECK - COMTNAP. EACH ENTRY REPRESENTS AN APPLICATION, AND THE
  154. * ENTRY SIZE IS ONE WORD.
  155. #
  156. BASED ARRAY TCMTNAP[00:00] S(1);
  157. BEGIN
  158. ITEM TCM$ANAM C(00,00,07); # APPLICATION NAME #
  159. ITEM TCM$ANAMU U(00,00,42); # APPLICATION NAME(UNSIGNED INT)#
  160. ITEM TCM$AWBP U(00,54,06); # ACCESS-WORD-BIT-POSITION #
  161. END
  162.  
  163. #
  164. * BNAMLEV - BASED ARRAY FOR NAM LEVEL MESSAGE BUFFER.
  165. #
  166.  
  167. BASED ARRAY BNAMLEV[00:00] S(2);
  168. BEGIN
  169. ITEM BNL$VER C(00,54,03);
  170. ITEM BNL$LEV C(01,30,03);
  171. END
  172.  
  173. #
  174. * NVFLEV - NVF VERSION AND LEVEL BUFFER.
  175. #
  176.  
  177. ARRAY NVFLEV[00:00] S(NVFLEVL$);
  178. BEGIN
  179. ITEM NLV$WORD0 U(00,00,60) = [0];
  180. ITEM NLV$PSFC U(00,00,16) = [HOPLG];
  181. ITEM NLV$MSG C(01,00,35) =
  182. ["NV/ HH.MM.SS. VER VER - LVL."];
  183. ITEM NLV$TIM C(02,00,10);
  184. ITEM NLV$VER C(03,30,03);
  185. ITEM NLV$LVL C(04,06,03);
  186. ITEM NLV$ZRO U(04,30,30) = [0];
  187. END
  188.  
  189. #
  190. * LCFBDT - LCF BUILD DATE AND TIME BUFFER.
  191. #
  192.  
  193. ARRAY LCFBDT[00:00] S(LCFBDTL$);
  194. BEGIN
  195. ITEM LBT$WORD0 U(00,00,60) = [0];
  196. ITEM LBT$PSFC U(00,00,16) = [HOPLG];
  197. ITEM LBT$MSG C(01,00,44) =
  198. ["NV/ HH.MM.SS. LCF YY/MM/DD, HH.MM.SS."];
  199. ITEM LBT$TIM C(02,00,10);
  200. ITEM LBT$DATE C(03,30,08);
  201. ITEM LBT$TIME C(04,30,08);
  202. ITEM LBT$ZRO U(05,24,36) = [0];
  203. END
  204.  
  205. #
  206. * LCFTIT - LCF TITLE BUFFER.
  207. #
  208.  
  209. ARRAY LCFTIT[00:00] S(LCFTITL$);
  210. BEGIN
  211. ITEM LTL$WORD0 U(00,00,60) = [0];
  212. ITEM LTL$PSFC U(00,00,16) = [HOPLG];
  213. ITEM LTL$MSG C(01,00,21) =
  214. ["NV/ HH.MM.SS. "];
  215. ITEM LTL$TIM C(02,00,10);
  216. ITEM LTL$TITLE C(03,06,50);
  217. ITEM LTL$ZRO U(08,06,54) = [0];
  218. END
  219.  
  220.  
  221. #
  222. * LCFMSG1 AND LCFMSG2 - LCF MESSAGE 1 AND 2 ARRAYS
  223. *
  224. * LCFMSG1 AND LCFMSG2 CONTAINS THE FOLLOWING MESSAGES TO BE
  225. * SENT TO SYSTEM DAYFILE, LOCAL DAYFILE, AND A AND B DISPLAY.
  226. #
  227. ARRAY LCFMSG1[00:00] S(2);
  228. BEGIN
  229. ITEM L1$MSG C(00,00,09) = [" BAD LCF."];
  230. ITEM L1$ZERO U(00,54,06) = [0]; # ZERO BYTE TERMINATOR #
  231. ITEM L1$ZERO1 U(01,00,60) = [0];
  232. END
  233.  
  234. ARRAY LCFMSG2[00:00] S(3);
  235. BEGIN
  236. ITEM L2$MSG C(00,00,20) = [" LCF DOES NOT EXIST."];
  237. ITEM L2$ZERO U(02,00,60) = [0]; # ZERO BYTE TERMINATOR #
  238. END
  239.  
  240.  
  241. CONTROL EJECT;
  242.  
  243. VAPMASK = 0; # PRESET VALIDATION MASK TO 0 #
  244. APPLS(CMTNAP,NAPPLS); # GET COMTNAP ADDR, AND NO OF APPLS #
  245. P<TCMTNAP> = CMTNAP; # PLACE TEMPLATE ON THE COMMON DECK #
  246. TOTAPPLS = NAPPLS + XTRAPPLS$; # GET TOTAL NO. OF APPLS IN AST #
  247. SSTETS(P<AST>, 0, ASTSIZ$ * TOTAPPLS); # ENLRGE AST & PRESET 0#
  248.  
  249. #
  250. * TRANSFER DATA FROM COMTNAP TO AST.
  251. * SPECIAL CASE NS, SINCE AT CURRENT LEVEL OF SOFTWARE, NS CANNOT
  252. * SUPPORT TERMINAL CONNECTION, SO IT WILL NOT BE FOUND IN COMTNAP.
  253. #
  254.  
  255. AST$ANAM[0] = "NS";
  256. AST$KDSPF[0] = TRUE; # K-DISPLAY ALWAYS SET FOR NS #
  257. AST$AWBP[0] = NSAWBP$; # SET NS AWBP TO OUT OF RANGE #
  258. AST$JSN[0] = " "; # SET JSN #
  259. AST$MXCOP[0] = 1; # SET MAX COPY TO 1 #
  260. AST$SANAM[0] = "NS"; # SET SEC NAME EQUAL TO PRI NAME#
  261.  
  262. #
  263. * SPECIAL CASE PTF, PTFS, QTF, AND QTFS, AS THEY ARE NOT IN COMTNAP.
  264. #
  265.  
  266. AST$ANAM[1] = "PTF";
  267. AST$ANAM[2] = "PTFS";
  268. AST$ANAM[3] = "QTF";
  269. AST$ANAM[4] = "QTFS";
  270. FOR I = 1 STEP 1 UNTIL 4
  271. DO
  272. BEGIN
  273. AST$AWBP[I] = NSAWBP$; # SET AWBP TO OUT OF RANGE #
  274. AST$JSN[I] = " ";
  275. AST$MXCOP[I] = 1;
  276. AST$SANAM[I] = AST$PANAM[I];
  277. END
  278.  
  279. NENTRY = 5; # SET ENTRY COUNT TO ONE FOR NS #
  280. FOR I = 1 STEP 1 UNTIL NAPPLS
  281. DO
  282. BEGIN
  283. IF TCM$ANAMU[I-1] NQ REN$ANAM[0]
  284. THEN
  285. BEGIN
  286. AST$ANAM[NENTRY] = TCM$ANAM[I-1];
  287. AST$AWBP[NENTRY] = TCM$AWBP[I-1];
  288. AST$JSN[NENTRY] = " ";
  289. AST$MXCOP[NENTRY] = 1;
  290. AST$SANAM[NENTRY] = AST$PANAM[NENTRY];
  291. IF AST$ANAM[NENTRY] EQ "CS"
  292. THEN AST$KDSPF[NENTRY] = TRUE;# K-DISPLAY ALWAYS SET FOR CS #
  293. IF AST$ANAM[NENTRY] EQ "RBF"
  294. OR AST$ANAM[NENTRY] EQ "PSU"
  295. THEN
  296. BEGIN
  297. AST$PRUF[NENTRY] = TRUE; # PRU FLAG ALWAYS SET FOR RBF #
  298. END # AND PSU #
  299. NENTRY = NENTRY + 1; # INCREMENT THE ENTRY COUNT #
  300. END
  301. END
  302. IF NENTRY LS TOTAPPLS
  303. THEN # IF NOT ALL THE ENTRIES WERE STORED #
  304. BEGIN # RELEASE UNUSED SPACE #
  305. SSTATS(P<AST>,(NENTRY-TOTAPPLS)*ASTSIZ$);
  306. END
  307. #
  308. * DETERMINE IF BIT NOT UNIQUE TO APPLICATION. (MORE THAN ONE
  309. * APPLICATION SHARES THE SAME AWBP). IF BIT NOT UNIQUE, SET BIT
  310. * IN BOTH THE INITIAL ENTRY AND THE CURRENT ENTRY.
  311. #
  312. FOR I = 1 STEP 1 UNTIL NENTRY-1
  313. DO
  314. BEGIN
  315. IF NOT AST$BNUF[I]
  316. THEN
  317. BEGIN
  318. MATCH = FALSE;
  319. FOR II = I+1 STEP 1 UNTIL NENTRY-1
  320. DO
  321. BEGIN
  322. IF AST$AWBP[II] EQ AST$AWBP[I] AND # ALLOW MANDATORY IAF #
  323. AST$ANAM[II] NQ "MAIL" AND # APPL THOUGH MAIL IS #
  324. AST$ANAM[I] NQ "MAIL" # AN EQUIVALENCE ON IT#
  325. THEN
  326. BEGIN
  327. AST$BNUF[II] = TRUE; # SET BIT NOT UNIQ IN CUR APPL #
  328. MATCH = TRUE;
  329. END
  330. END
  331. IF MATCH
  332. THEN AST$BNUF[I] = TRUE; # SET BIT NOT UNIQ IN INIT APPL #
  333. END
  334. END
  335.  
  336. #
  337. * BUILD VALID APPLICATION MASK
  338. #
  339. FOR I = 1 STEP 1 UNTIL NENTRY-1
  340. DO
  341. BEGIN
  342. B<59-AST$AWBP[I],1>VAPMASK = 1;
  343. END
  344.  
  345. #
  346. * INITIALIZES ADDRESS IN LCF FET.
  347. * NOTE: VCB CIRCULAR BUFFER IS USED HERE FOR THE SAKE OF
  348. * CONSERVING MEMORY. THIS HAS NOTHING TO DO WITH VCB FILE.
  349. #
  350.  
  351. LCF$FIRST[0] = LOC(VCBBUFR);
  352. LCF$IN[0] = LOC(VCBBUFR);
  353. LCF$OUT[0] = LOC(VCBBUFR);
  354. LCF$LIMIT[0] = LCF$FIRST[0] + VBBUFLIM$ + 1;
  355.  
  356. #
  357. * READ THE LCF
  358. #
  359. SKIPEI(LCFFET); # SKIP TO END OF INFORMATION #
  360. SKIPB(LCFFET,2); # SKIP BACKWARD 2 RECORDS #
  361. READ(LCFFET); # READ THIS LAST RECORD TO CIO BUFF #
  362. READW(LCFFET,LCFWSA,LCFPTSIZ$,STATS); # TRNSFR THE RECD TO WSA #
  363.  
  364.  
  365. IF STATS EQ -2
  366. THEN
  367. BEGIN # LCF DOES NOT EXIST #
  368. MESSAGE(LCFMSG2[0], DFILE$);
  369. NVFIIAP;
  370. END
  371. IF LFW$VALIDW[0] EQ 0
  372. THEN
  373. BEGIN # BAD LCF #
  374. MESSAGE(LCFMSG1[0], DFILE$);
  375. NVFIIAP;
  376. END
  377.  
  378.  
  379. #
  380. * SEND NVF VERSION NUMBER AND THE LCF BUILD DATE AND TIME, AND
  381. * TITLE TO NAM DAYFILE.
  382. #
  383.  
  384. ABHWORD[0] = 0;
  385. ABHABT[0] = APPCMD;
  386. ABHACT[0] = CT60TRANS;
  387. WCB$WORD[0] = 0;
  388.  
  389. P<BNAMLEV> = LOC(NAMLEV); # NVF VERSION AND LVL MSG #
  390. NLV$TIM[0] = CTM$CLOCK[0];
  391. NLV$VER[0] = BNL$VER[0];
  392. NLV$LVL[0] = BNL$LEV[0];
  393. ABHTLC[0] = NVFLEVL$;
  394. WCB$WC[0] = NVFLEVL$ + 2;
  395. SSTAQE(P<OTQ>, WCBUF[0],ABHBUF[0], NVFLEV[0]);
  396.  
  397. LBT$TIM[0] = CTM$CLOCK[0]; # LCF BUILD DATE AND TIME MSG #
  398. LBT$DATE[0] = LFW$DATE[0];
  399. LBT$TIME[0] = LFW$TIME[0];
  400. ABHTLC[0] = LCFBDTL$;
  401. WCB$WC[0] = LCFBDTL$ + 2;
  402. SSTAQE(P<OTQ>, WCBUF[0], ABHBUF[0], LCFBDT[0]);
  403.  
  404. LTL$TIM[0] = CTM$CLOCK[0]; # LCF TITLE MSG #
  405. LTL$TITLE[0] = LFW$TITLE[0];
  406. ABHTLC[0] = LCFTITL$;
  407. WCB$WC[0] = LCFTITL$ + 2;
  408. SSTAQE(P<OTQ>, WCBUF[0], ABHBUF[0], LCFTIT[0]);
  409.  
  410.  
  411. # SAVE THE LCF CREATION DAY AND TIME IN *LCFVRN* #
  412.  
  413. LFV$VRN[0] = "LCF VERSION ";
  414. LFV$DAT[0] = LFW$DAT[0];
  415. LFV$ZERO[0] = 0;
  416.  
  417. REWIND(LCFFET); # REWIND LCF TO POINT TO BOF #
  418. READ(LCFFET); # READ FILE HEADER RECORD TO CIO BUFF #
  419. READW(LCFFET,LCFWSA,LCFPTSIZ$,STATS); # DISCARD THIS RECD #
  420.  
  421. #
  422. * PROCESS THE REST OF RECORDS IN THE LCF.
  423. #
  424. LAST$RCNAM = " "; # INITIALIZE LAST RECORD NAME TO BLANK #
  425. FOR K = 0 WHILE NOT ENDPROCG
  426. DO
  427. BEGIN # PROCESSING RECORDS IN LCF #
  428. READ(LCFFET); # READ NEXT RECORD #
  429. READW(LCFFET,LCFWSA,2,STATS); # TRNSFR FIRST 2 WORDS TO WSA #
  430.  
  431. # WHEN SOME RECORD SIZE IS AN EXACT MULTIPLE OF PRU. THE COMBI-#
  432. # NATION OF READ AND READW USED IN THIS LOOP MAY NOT ALWAYS #
  433. # FUNCTION AS EXPECTED. THESE TWO MACROS MAY HAVE COMPLETELY #
  434. # TRANSFERED A RECORD WITHOUT DISCOVERING THE EOR MARK. IF THIS#
  435. # HAPPENS, THE READ WILL READ, IN THE NEXT ITERATION, AN EOR #
  436. # INSTEAD OF THE NEXT RECORD. TO AVOID THIS, WE WILL SAVE THE #
  437. # RECORD NAM FOR THE CURRENT ITERATION, AND ASSURE THAT WE #
  438. # PROCESS A NEW RECORD FOR EACH ITERATION. #
  439.  
  440. IF LAST$RCNAM EQ LFW$RCNAM[0]
  441. THEN
  442. BEGIN
  443. # THE READ DID NOT READ IN A NEW RECORD, GO BACK DO IT OVER #
  444. TEST K;
  445. END
  446. ELSE
  447. BEGIN
  448. LAST$RCNAM = LFW$RCNAM[0]; # SAVE CURRENT RECORD NAME #
  449. END
  450.  
  451. IF LFW$RCNAM[0] EQ "APPL"
  452. THEN
  453. BEGIN
  454. GOTO LLAPPL;
  455. END
  456. ELSE IF LFW$RCNAM[0] EQ "USER"
  457. THEN
  458. BEGIN
  459. GOTO LLUSER;
  460. END
  461. ELSE IF LFW$RCNAM[0] EQ "OUTCALL"
  462. THEN
  463. BEGIN
  464. GOTO LLOUTCALL;
  465. END
  466. ELSE IF LFW$RCNAM[0] EQ "INCALL"
  467. THEN
  468. BEGIN
  469. GOTO LLINCALL;
  470. END
  471. ELSE IF LFW$RCNAM[0] EQ "PATHPID"
  472. THEN
  473. BEGIN
  474. GOTO LLPATHPID;
  475. END
  476. ELSE IF LFW$RCNAM1[0] EQ "ENDLCF"
  477. THEN
  478. BEGIN
  479. ENDPROCG = TRUE;
  480. GOTO ENDCASE; # DONT CARE ABOUT LAST RECD #
  481. END
  482. ELSE # UNKNOWN RECORD TYPE, ABORT NVF #
  483. BEGIN
  484. MESSAGE(LCFMSG1[0], DFILE$);
  485. NVFIIAP;
  486. END
  487.  
  488. LLAPPL: # RECORD TYPE = APPLICATION #
  489. TAPENTRY = LFW$RWC[0] - 1; # TOTAL NO OF APPL ENTRY #
  490. IF TAPENTRY EQ 0
  491. THEN GOTO ENDCASE; # EMPTY APPL RECORD #
  492. FOR J = 0 STEP 1 UNTIL TAPENTRY - 1
  493. DO # LOOP UNTIL APPL RECORD EXHAUSTED #
  494. BEGIN
  495. READW(LCFFET,LCFWSA,APESIZ$,STATS); # TRNSFR ENTRY TO WSA #
  496. MATCH = FALSE;
  497. FOR I = 0 STEP 1 WHILE I LS NENTRY AND NOT MATCH
  498. DO # SEARCH AST FOR APPL #
  499. BEGIN
  500. IF LFW$ANAM[0] EQ AST$ANAM[I]
  501. THEN
  502. BEGIN
  503. AST$XFERF[I] = LFW$XFERF[0];
  504. AST$KDSPF[I] = LFW$KDSPF[0];
  505. AST$UIDF[I] = LFW$UIDF[0];
  506. AST$DIF[I] = LFW$DIF[0];
  507. AST$PPF[I] = LFW$PPF[0];
  508. AST$RS[I] = LFW$RS[0];
  509. AST$MXCOP[I] = LFW$MXCOP[0];
  510. IF AST$MXCOP[I] EQ 0 # 2.2 LCF HAS MXCOP = 0 #
  511. THEN
  512. BEGIN
  513. AST$MXCOP[I] = 1; # CHANGE MXCOP TO 1 #
  514. END
  515. AST$USANAM[I] = AST$UPANAM[I];
  516. IF AST$ANAM[I] NQ "RBF" # DO NOT SET PRU FLAG FOR #
  517. THEN # RBF - IT IS ALREADY SET #
  518. BEGIN
  519. AST$PRUF[I] = LFW$PRUF[0];
  520. END
  521. MATCH = TRUE;
  522. END
  523. END
  524. END
  525. TEST K;
  526.  
  527. LLUSER: # RECORD TYPE = USER #
  528. #
  529. * ALLOCATE TABLE SPACE TO THE AUTO LOGIN TABLE. FOR EACH ENTRY IN
  530. * THE USER RECORD, ENTER IT INTO THE ALT UNTIL AN END OF RECORD IS
  531. * DETECTED.
  532. #
  533.  
  534. SSTATS(P<ALTB>,LFW$RWC[0]-1);
  535.  
  536.  
  537. FOR J=0 STEP 1 WHILE STATS EQ TRNS$OK
  538. DO
  539. BEGIN
  540. READW(LCFFET,ALTB[J],ALTSIZ$,STATS);
  541. END
  542.  
  543. TEST K;
  544.  
  545.  
  546.  
  547. LLOUTCALL: # RECORD TYPE = OUTCALL #
  548.  
  549.  
  550. SSTATS(P<OUTSMQ>,LFW$RWC[0] - 1);
  551. READW(LCFFET,OUTSMQ,OUTSMQL,STATS);
  552. TEST K;
  553.  
  554. LLINCALL: # RECORD TYPE = INCALL #
  555.  
  556.  
  557. SSTATS(P<INSMQ>,LFW$RWC[0] - 1);
  558. READW(LCFFET,INSMQ,INSMQL,STATS);
  559. TEST K;
  560.  
  561. LLPATHPID:
  562.  
  563. SSTATS(P<LLPID>,LFW$RWC[0] - 1);
  564. READW(LCFFET,LLPID,LLPIDL,STATS);
  565. TEST K;
  566.  
  567. ENDCASE:
  568. END # PROCESS RECORDS IN LCF #
  569.  
  570. END # NVFIAST #
  571.  
  572. TERM
cdc/nos2.source/nam5871/nvfiast.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator