User Tools

Site Tools


cdc:nos2.source:nam5871:nvfsnon

NVFSNON

Table Of Contents

  • [00009] PROC NVFSNON
  • [00010] NVFSNON - APPLICATION NETON REQUEST (NET/ON SM)
  • [00014] APPLICATION NETON REQUEST (NET/ON SM).
  • [00054] PROC SSTAQE
  • [00055] PROC NVFUMQE
  • [00056] PROC SSTETS
  • [00057] PROC SSTRTS
  • [00058] PROC NVFUGSN
  • [00059] PROC SSCCTR
  • [00283] PROC NORMNET(PAI,ERRSTAT)
  • [00284] NORMNET - PROCESS NORMAL NETON REQUEST
  • [00288] NORMNET - PROCESS NORMAL NETON REQUEST.
  • [00353] PROC SPECNET(PAI,SAI,RC)
  • [00354] SPECNET - PROCESS SPECIAL NETON REQUEST
  • [00358] SPECNET - PROCESS SPECIAL NETON REQUEST.
  • [00492] PROC GENAST(PAST,SAST)
  • [00493] GENAST - GENERATE AST ENTRY.
  • [00497] GENAST - GENERATE AST ENTRY.

Source Code

NVFSNON.txt
  1. *DECK NVFSNON
  2. USETEXT TEXTNVF
  3. USETEXT TXSMNVF
  4. USETEXT TXTAPSS
  5. USETEXT TXTSUSS
  6. USETEXT TEXTSS
  7. USETEXT TXTANVF
  8.  
  9. PROC NVFSNON;
  10. # TITLE NVFSNON - APPLICATION NETON REQUEST (NET/ON SM) #
  11.  
  12. BEGIN # NVFSNON #
  13. #
  14. ** NVFSNON - APPLICATION NETON REQUEST (NET/ON SM).
  15. *
  16. * E. THAVIKULWAT 81/12/31
  17. * C. BRION 83/04/15, 83/06/23, 83/11/09.
  18. *
  19. * THIS PROCEDURE VERIFIES THE NET/ON REQUEST. IT IS CALLED INTO
  20. * EXECUTION BY PROCEDURE *NVFSDQE*.
  21. *
  22. * PROC NVFSNON
  23. *
  24. * ENTRY:
  25. * NET/ON SM IN *MSGBUF*
  26. *
  27. * EXIT:
  28. * NET/ON/N OR NET/ON/A RESPONSE SENT TO *OTQ* QUEUE.
  29. * NET/ON/N OR NET/ON/A ENTRY MAY BE SENT TO THE TAINPQ OR THE
  30. * AAINPQ.
  31. *
  32. * INTERNAL PROCEDURES:
  33. *
  34. * NORMNET - PROCESS NORMAL NETON REQUESTS.
  35. * SPECNET - PROCESS SPECIAL NETON REQUESTS.
  36. * GENAST - GENERATE AST ENTRY.
  37. *
  38. * METHOD:
  39. *
  40. * IF A NORMAL NETON IS RECEIVED, A CALL IS MADE TO THE
  41. * INTERNAL PROCEDURE NORMNET TO PROCESS THE NETON REQUEST.
  42. *
  43. * IF A SPECIAL NETON IS RECEIVED (A NETON FOR A REQUEST START-
  44. * ABLE APPLICATION, A SOLICITED NETON FOR A REQUEST STARTABLE
  45. * APPLICATION OR A REQUEST FOR A MAX COPY GREATER THAN 1 TYPE
  46. * OF APPLICATION) A CALL IS MADE TO SPECNET FOR PROCESSING.
  47. #
  48.  
  49. #
  50. **** PROC NVFSNON - XREF LIST.
  51. #
  52. XREF
  53. BEGIN
  54. PROC SSTAQE; # SS - ACCEPT QUEUE ENTRY #
  55. PROC NVFUMQE; # TRANSFER SM OR TEXT TO QUEUE #
  56. PROC SSTETS; # SS - ENLARGE TABLE SPACE #
  57. PROC SSTRTS; # SS - RELEASE TABLE SPACE #
  58. PROC NVFUGSN; # GENERATE SECONDARY APPLICATION NAME #
  59. PROC SSCCTR; # SS - CANCEL TIMER #
  60. END
  61.  
  62. #
  63. ****
  64. #
  65.  
  66. *CALL SMSGNVF
  67.  
  68. ITEM AS I; # SUBSCRIPT FOR ARRAY AST #
  69. ITEM I I; # LOOP VARIABLE #
  70. ITEM MATCH B; # EXIT LOOP VARIABLE #
  71. ITEM NENTRY I; # NUMBER OF ENTRIES IN TABLE #
  72. ITEM SORD I; # SEC AST ORDINAL #
  73. ITEM SECMATCH B; # SEC AST MATCH FLAG #
  74. ITEM PORD I; # PRI AST ORDINAL #
  75. ITEM LORD I; # LOOP AST ORDINAL #
  76. ITEM RSTART B; # REQUEST STARTABLE INDICATOR #
  77. ITEM RCNET I; # LOCAL NETON REASON CODE #
  78. ITEM CANOK B; # TIMER CANCEL OK FLAG #
  79.  
  80.  
  81. CONTROL EJECT;
  82.  
  83.  
  84. #
  85. * CLEAR RESPONSE BUFFER, PRESET ERROR CODE TO "INVALID
  86. * APPLICATION", SET REQUEST STATABLE INDICATOR.
  87. #
  88. SPMSG0[1] = 0;
  89. SPMSG1[1] = 0;
  90. NETANAM[1] = NETANAM[0];
  91. NETRC[1] = RNO"IA";
  92. RSTART = FALSE;
  93.  
  94. #
  95. * SEARCH *AST* TABLE FOR ENTRY THAT MATCHES THE APPLICATION NAME.
  96. #
  97. NENTRY = ASTLNGTH / ASTSIZ$; # CALCULATE NUMBER OF ENTRIES #
  98. FOR I = 0 STEP 1 WHILE
  99. (I LS NENTRY) AND
  100. (AST$ANAM[I] NQ NETANAM[0])
  101. DO
  102. BEGIN
  103. END
  104. #
  105. * IF NO MATCH FOUND, THEN INVALID APPLICATION NETON.
  106. * GOTO END EXIT TO COMPLETE ABNORMAL NETON PROCESSING.
  107. #
  108. IF I EQ NENTRY
  109. THEN
  110. GOTO ENDEXIT;
  111.  
  112. #
  113. * MATCHING AST ENTRY FOUND.
  114. * SET THE AST ENTRY ORDINALS (LOCAL, PRIMARY,SECONDARY).
  115. * CLEAR THE NETON REASON CODE.
  116. * CLASSIFY THE NETON REQUEST AND CALL THE APPROPRIATE
  117. * PROCEDURE FOR PROCESSING.
  118. #
  119. AS = I;
  120. PORD = AS;
  121. SORD = AS;
  122. RCNET = 0;
  123. IF ((NOT AST$SNPF[PORD]) AND
  124. (NOT AST$RS[PORD]) AND
  125. (AST$MXCOP[PORD] EQ 1))
  126. THEN
  127. #
  128. * UNSOLICITED NETON REQUEST.
  129. #
  130. BEGIN
  131. NORMNET(PORD,RCNET);
  132. NETRC[1] = RCNET;
  133. END
  134.  
  135. ELSE
  136. #
  137. * SOLICITED REQUEST MEANING THAT EITHER NVF CAUSED THE NETON VIA
  138. * A ROUTE OF A REQUEST STARTABLE APPLICATION OR A REQUEST STARTABLE
  139. * APPLICATION NETTED ON ON ITS OWN OR THE NETTING ON APPLICATION
  140. * IS A MXCOPYS GREATER THAN 1 TYPE OF APPLICATION.
  141. #
  142. BEGIN
  143. SPECNET(PORD,SORD,RCNET);
  144. NETRC[1] = RCNET;
  145. END
  146.  
  147. ENDEXIT:
  148.  
  149. #
  150. * CHECK THE REASON CODE. IF NO ERRORS, CHECK FOR SECONDARY AST
  151. * ENTRY. IF IT EXISTS, SET THE SEC AST ENTRY FROM THE NET/ON/R SM.
  152. * IF NO SEC AST ENTRY, SET THE PRIMARY AST ENTRY.
  153. #
  154.  
  155. IF NETRC[1] EQ 0
  156. THEN
  157. BEGIN
  158. IF SORD NQ PORD
  159. THEN
  160. BEGIN
  161. AST$AN[SORD] = NETAN[0];
  162. AST$JSN[SORD] = NETJSN[0];
  163. AST$AAL[SORD] = NETACCL[0];
  164. AST$MCN[SORD] = NETMCN[0];
  165. AST$CUCOP[SORD] = 1;
  166.  
  167. # IF THE NUMBER OF THE REVERVED-CONNECTION IS NOT 0, THE APP#
  168. # WANTS TO RESERVE SOME CONNECTIONS FOR OUTGOING. SET FLAG #
  169. # TO REMEMBER THIS FACT. #
  170.  
  171. IF NETNRCN[0] NQ 0
  172. THEN
  173. BEGIN # CALCULATE INCOMING CONNECTIONS ALLOWED #
  174. AST$MXICN[SORD] = NETMCN[0] - NETNRCN[0];
  175. AST$RICN[SORD] = TRUE; #THIS APP RESTRICTS INCOMING CON#
  176. END
  177. AST$MCN[PORD] = (NETMCN[0] * AST$CUCOP[PORD]);
  178. END
  179. ELSE # NO SEC AST ENTRY #
  180. BEGIN
  181. AST$AN[PORD] = NETAN[0];
  182. AST$JSN[PORD] = NETJSN[0];
  183. AST$AAL[PORD] = NETACCL[0];
  184. AST$MCN[PORD] = NETMCN[0];
  185. IF NETNRCN[0] NQ 0
  186. THEN
  187. BEGIN # CALCULATE INCOMING CONNECTIONS ALLOWED #
  188. AST$MXICN[PORD] = NETMCN[0] - NETNRCN[0];
  189. AST$RICN[PORD] = TRUE; #THIS APP RESTRICTS INCOMING CON#
  190. END
  191. END
  192. IF AST$SNPF[PORD]
  193. THEN
  194. BEGIN
  195. AST$SNPF[PORD] = FALSE;
  196. AST$PNCOP[PORD] = 0;
  197. END
  198.  
  199. #
  200. * SET UP THE EVENT FOR THE TA AND AA INPUT QUEUE AS WELL AS
  201. * THE NET/ON/N SM.
  202. #
  203. WCB$SMID[1] = CTQSTAT"SNETN";
  204. PFCSFC[1] = NETONN;
  205. NETPRU[1] = AST$PRUF[PORD];
  206. NETXFER[1] = AST$XFERF[PORD];
  207. NETK[1] = AST$KDSPF[PORD];
  208. ASM$TYPE[0] = "NETTED ON";
  209. IF SORD NQ PORD
  210. THEN
  211. BEGIN
  212. ASM$ANAME[0] = AST$PANAM[SORD];
  213. NETANAM[1] = AST$PANAM[SORD];
  214. END
  215. ELSE
  216. BEGIN
  217. ASM$ANAME[0] = AST$PANAM[PORD];
  218. NETANAM[1] = AST$PANAM[PORD];
  219. END
  220.  
  221. #
  222. * ROUTE EVENT TO UNSOLICITED EVENT QUEUE.
  223. #
  224. NVFUMQE(P<USQ>,ASMBUF[0],APMSG,0,LMSH40$);
  225. END
  226.  
  227. ELSE # ERROR OCCURRED #
  228. #
  229. * ERROR HAS OCCURRED. SET NET/ON/A PFC-SFC, CHECK FOR CASES WHERE
  230. * AN AST ENTRY WAS FOUND (NON RNO"IA" CASES). IF SEC AST ENTRY EXISTS
  231. * AND NOT A REQUEST START BY NVF, RELEASE THE AST ENTRY.
  232. #
  233. BEGIN
  234. PFCSFC[1] = NETONA;
  235. WCB$SMID[1] = CTQSTAT"SNETA";
  236. IF NETRC[1] NQ RNO"IA"
  237. THEN
  238. BEGIN
  239. IF SORD NQ PORD
  240. THEN
  241. BEGIN
  242. IF NOT RSTART
  243. THEN
  244. BEGIN
  245. SORD = SORD * ASTSIZ$;
  246. SSTRTS(P<AST>,SORD,ASTSIZ$);
  247. END
  248. END
  249. END
  250. END
  251.  
  252. #
  253. * SET UP REST OF NET/ON RESPONSE SM. SEND RESPONSE SM.
  254. #
  255.  
  256. NETAN[1] = NETAN[0];
  257. NVFUMQE(P<OTQ>,APSM[1],APPCMD,0,LNETONR);
  258.  
  259. #
  260. * IF REQUEST START BY NVF, THEN MUST SEND THE EVENT TO THE TA
  261. * AND AA INPUT QUEUES FOR PROCESSING OF POSSIBLE PENDING CON-
  262. * NECTIONS.
  263. #
  264.  
  265. IF RSTART
  266. THEN
  267. BEGIN
  268. IF AST$TCAN[SORD] NQ 0 THEN
  269. BEGIN
  270. SSCCTR(AST$TCAN[SORD],CANOK);
  271. AST$TCAN[SORD] = 0;
  272. END
  273. WCB$WC[1] = LNETONR + 2;
  274. ABHABT[1] = APPCMD;
  275. SSTAQE(P<TAINPQ>,WCBUF[1],ABHBUF[1],APSM[1]);
  276. SSTAQE(P<AAINPQ>,WCBUF[1],ABHBUF[1],APSM[1]);
  277. END
  278.  
  279. RETURN;
  280.  
  281. CONTROL EJECT;
  282.  
  283. PROC NORMNET(PAI,ERRSTAT);
  284. # TITLE - NORMNET - PROCESS NORMAL NETON REQUEST #
  285. BEGIN # NORMNET #
  286.  
  287. #
  288. ** NORMNET - PROCESS NORMAL NETON REQUEST.
  289. *
  290. * C. BRION 83/10/19.
  291. *
  292. * THIS INTERNAL PROCEDURE PROCESSES NETON REQUESTS THAT ARE
  293. * NOT A RESULT OF AN NVF ROUTE REQUEST OR FROM A REQUEST
  294. * STARTABLE TYPE OF APPLICATION OR FROM A MXCOPY GREATER
  295. * THAN 1 TYPE OF APPLICATION.
  296. *
  297. * NORMNET(PIA,ERRSTAT)
  298. *
  299. * ENTRY:
  300. * PAI = PRIMARY AST ENTRY INDEX.
  301. *
  302. * THE GLOBAL DEFINITIONS IN EFFECT FOR NORMNET.
  303. *
  304. * EXIT:
  305. * ERRSTAT = ERROR STATUS. NON=ZERO INDICATES A NETON ABNORMAL.
  306. #
  307. CONTROL EJECT;
  308.  
  309. ITEM PAI I; # LOCAL PRI AST ENTRY INDEX #
  310. ITEM ERRSTAT I; # ERROR STATUS (NETON RC) #
  311.  
  312.  
  313. ERRSTAT = 0;
  314. IF (NETANAM[0] EQ "CS" OR
  315. NETANAM[0] EQ "NS") AND
  316. (NOT NETPU[0])
  317. THEN
  318. BEGIN
  319. ERRSTAT = RNO"NPR"; # CS AND NS MUST BE A SYSTEM #
  320. END # CONTROL POINT JOB #
  321. ELSE IF (AST$PPF[PAI]) AND
  322. (NOT NETPP[0])
  323. THEN
  324. BEGIN
  325. ERRSTAT = RNO"NPR"; # APPL MUST BE PRIVILEDGED #
  326. END # AND IS NOT #
  327. ELSE IF (AST$AN[PAI] NQ 0)
  328. THEN
  329. BEGIN
  330. ERRSTAT = RNO"DUP"; # APPLICATION ALREADY ON #
  331. END
  332. ELSE IF AST$DIF[PAI]
  333. THEN
  334. BEGIN
  335. ERRSTAT = RNO"DIS"; # APPL DISABLED #
  336. END
  337. ELSE IF AST$DNF[PAI]
  338. THEN
  339. BEGIN
  340. ERRSTAT = RNO"NNA"; # APPL DOWN, LAST NETOFF OR #
  341. END # FAIL APPL NOT DONE #
  342. #
  343. * IF NO ERRORS, INCREMENT NUMBER CURRENT COPIES FOR APPL.
  344. #
  345. IF ERRSTAT EQ 0
  346. THEN
  347. AST$CUCOP[PAI] = 1;
  348.  
  349. END # NORMNET #
  350.  
  351. CONTROL EJECT;
  352.  
  353. PROC SPECNET(PAI,SAI,RC);
  354. # TITLE - SPECNET - PROCESS SPECIAL NETON REQUEST #
  355. BEGIN # SPECNET #
  356.  
  357. #
  358. ** SPECNET - PROCESS SPECIAL NETON REQUEST.
  359. *
  360. * C. BRION 83/10/19.
  361. *
  362. * THIS INTERNAL PROCEDURE PROCESSES NETON REQUESTS THAT ARE FROM
  363. * EITHER A REQUEST STARTABLE TYPE OF APPLICATION, A MXCOPY
  364. * GREATER THAN 1 TYPE OF APPLICATION OR FROM A REQUEST STARTABLE
  365. * APPLICATION THAT WAS INITIATED BY AN NVF ROUTE REQUEST.
  366. *
  367. * SPECNET(PAI,SAI,RC)
  368. *
  369. * ENTRY:
  370. * PAI = PRIMARY AST ENTRY INDEX
  371. *
  372. * EXIT:
  373. * SAI = SECONDARY AST ENTRY INDEX
  374. * RC = RETURN CODE (NON-ZERO INDICATES ERROR.
  375. * RSTART = REQUEST STARTABLE INDICATOR.
  376. *
  377. * THE GLOBAL DEFINITIONS OF NVFSNON ARE IN EFFECT.
  378. #
  379. CONTROL EJECT;
  380.  
  381. ITEM PAI I; # PRIMARY AST ENTRY INDEX #
  382. ITEM SAI I; # SECONDARY AST ENTRY INDEX #
  383. ITEM RC I; # RETURN ERROR CODE #
  384. ITEM LAI I; # LOCAL AST ENTRY INDEX #
  385. ITEM SECFOUND B; # SEC AST ENTRY FOUND FLAG #
  386.  
  387. #
  388. * ATTEMPT TO LOCATE A SECONDARY AST ENTRY BY MATCHING THE PRIMARY
  389. * APPLICATION NAME OF THE PRIMARY AST TO THE SECONDARY NAME OF THE
  390. * OTHER AST ENTRIES AND MAKE SURE THE PRIMARY NAMES DO NOT MATCH
  391. * SO AS TO AVOID MATCHING ON THE PRIMARY ENTRY.
  392. #
  393.  
  394. SAI = PAI;
  395. SECFOUND = FALSE;
  396. RSTART = FALSE;
  397.  
  398. FOR LAI = 0 STEP 1 WHILE
  399. ((LAI LS NENTRY) AND
  400. (NOT SECFOUND))
  401. DO
  402. BEGIN
  403. IF ((AST$UPANAM[PAI] EQ AST$USANAM[LAI]) AND
  404. (AST$USANAM[LAI] NQ AST$UPANAM[LAI]) AND
  405. (AST$AN[LAI] EQ 0))
  406. THEN
  407. BEGIN
  408. SECFOUND = TRUE;
  409. AST$AN[LAI] = NETAN[0];
  410. SAI = LAI;
  411. END
  412. END
  413. #
  414. * CHECK IF PRIMARY APPLICATION IS EITHER DISABLED, DOWN OR
  415. * AT MAX COPIES.
  416. * IF SO, THEN NETON ABNORMAL MUST BE SENT. SET RETURN CODE.
  417. #
  418. IF AST$DIF[PAI]
  419. THEN
  420. BEGIN
  421. RC = RNO"DIS";
  422. GOTO ERREXIT;
  423. END
  424.  
  425. IF AST$DNF[PAI]
  426. THEN
  427. BEGIN
  428. RC = RNO"NNA";
  429. GOTO ERREXIT;
  430. END
  431.  
  432. IF ((AST$MXCOP[PAI] EQ AST$CUCOP[PAI]) AND NOT AST$SNPF[PAI])
  433. THEN
  434. BEGIN
  435. RC = RNO"DUP";
  436. GOTO ERREXIT;
  437. END
  438.  
  439. IF AST$PPF[PAI] AND NOT NETPP[0]
  440. THEN
  441. BEGIN # APPL MUST BE PRIVILEDGED #
  442. RC = RNO"NPR"; # AND IS NOT, REJECT NETON.#
  443. GOTO ERREXIT;
  444. END
  445.  
  446. #
  447. * IF NO NETON PENDING AND MXCOPY GREATER THAN 1 WHICH INDICATES
  448. * THAT A SECONDARY AST ENTRY MUST BE BUILT. CALL INTERNAL PROC
  449. * GENAST TO BUILD AND INITIALIZE THE SECONDARY AST ENTRY. RESET
  450. * RSTART GLOBAL SO AS TO KNOW IN MAINLINE IF SEC AST ENTRY BUILT
  451. * OR NOT. CALL NVFUGSN TO BUILD AND INSTALL SECONDARY APPLICATION
  452. * NAME IN SEC AST ENTRY IF MAX COPIES GR THAN 1.
  453. #
  454. IF AST$MXCOP[PAI] GR 1
  455. THEN
  456. BEGIN
  457. IF NOT AST$SNPF[PAI]
  458. THEN
  459. BEGIN
  460. GENAST(PAI,SAI);
  461. AST$AN[SAI] = NETAN[0];
  462. END
  463. ELSE
  464. BEGIN
  465. RSTART = TRUE;
  466. AST$CUCOP[PAI] = AST$CUCOP[PAI] + 1;
  467. END
  468.  
  469. NVFUGSN(SAI);
  470. END
  471. ELSE
  472. #
  473. * IF MAX COPY EQUAL 1 THEN A PRIMARY REQUEST STARTABLE TYPE
  474. * OF APPLICATION NETTING ON. SET THE NUMBER OF CURRENT COPIES
  475. * TO 1. CHECK IF THE APPL WAS CAUSED TO START UP BY
  476. * NVF. IF SO, SET THE REQUEST START FLAG FOR LATER.
  477. #
  478. BEGIN
  479. AST$CUCOP[PAI] = 1;
  480. IF AST$SNPF[PAI]
  481. THEN
  482. BEGIN
  483. RSTART = TRUE;
  484. END
  485. END
  486.  
  487. ERREXIT:
  488. END # SPECNET #
  489.  
  490. CONTROL EJECT;
  491.  
  492. PROC GENAST(PAST,SAST);
  493. # TITLE - GENAST - GENERATE AST ENTRY. #
  494. BEGIN # GENAST #
  495.  
  496. #
  497. ** GENAST - GENERATE AST ENTRY.
  498. *
  499. * C. BRION 83/05/20, 10/21/83.
  500. *
  501. * THIS PROCEDURE IS INTERNAL TO NVFSNON. IT GENERATES A SECONDARY
  502. * AST ENTRY FOR A PRIMARY MULTIPLE COPY TYPE OF APPLICATION.
  503. *
  504. * GENAST(PAST,SAST)
  505. *
  506. * ENTRY:
  507. * PAST = THE PRIMARY AST ENTRY ORDINAL.
  508. * SAST = THE SECONDARY AST ENTRY ORDIANL.
  509. *
  510. * EXIT:
  511. * SAST = THE ORDINAL OF THE NEWLY GENERATED AST ENTRY.
  512. #
  513. CONTROL EJECT;
  514.  
  515. ITEM POSAST I; # AST POS FOR SSTETS CALL #
  516. ITEM PAST I; # PRIMARY AST ENTRY ORDINAL #
  517. ITEM SAST I; # SECONDARY AST ENTRY ORDINAL #
  518.  
  519. #
  520. * CALCULATE POSITION IN AST WHERE SEC AST ENTRY SHOULD BE TO
  521. * FOLLOW THE PRIMARY AST ENTRY.
  522. * SET THE ENTRY ORDINAL.
  523. * ENLARGE TABLE SPACE.
  524. #
  525.  
  526. POSAST = (PAST + 1) * ASTSIZ$;
  527. SAST = (POSAST/ASTSIZ$);
  528. SSTETS(P<AST>,POSAST,ASTSIZ$);
  529. #
  530. * INITIALIZE SEC AST ENTRY.
  531. * INCREMENT NUMBER CURRENT COPIES OF PRI AST ENTRY.
  532. #
  533. AST$WORD1[SAST] = AST$WORD1[PAST];
  534. AST$WORD2[SAST] = AST$WORD2[PAST];
  535. AST$TACN[SAST] = 0;
  536. AST$AACN[SAST] = 0;
  537. AST$RACN[SAST] = 0;
  538. AST$ICCN[SAST] = 0;
  539. AST$RS[SAST] = FALSE;
  540. AST$WORD0[SAST] = 0;
  541. AST$WORD3[SAST] = 0;
  542. AST$WORD4[SAST] = 0;
  543. AST$SANAM[SAST] = AST$PANAM[PAST];
  544. AST$MXCOP[SAST] = 1;
  545. AST$CUCOP[SAST] = 1;
  546. AST$JSN[SAST] = " ";
  547. AST$AN[SAST] = NETAN[0];
  548. AST$CUCOP[PAST] = AST$CUCOP[PAST] + 1;
  549. NENTRY = (ASTLNGTH/ASTSIZ$);
  550.  
  551. END # GENAST #
  552.  
  553. END # NVFSNON #
  554. TERM
cdc/nos2.source/nam5871/nvfsnon.txt ยท Last modified: 2023/08/05 17:23 by Site Administrator