User Tools

Site Tools


cdc:nos2.source:nam5871:np_getq

NP$GETQ

Table Of Contents

  • [00012] PROC NP$GETQ(GMMSC)
  • [00081] PROC NP$DBG
  • [00082] PROC NP$ERR
  • [00083] PROC NP$SN
  • [00084] PROC NP$USI
  • [00339] PROC NP$EXTQ

Source Code

NP$GETQ.txt
  1. *DECK NP$GETQ
  2. USETEXT AIPDEF
  3. USETEXT HEADER
  4. USETEXT NP$DB
  5. USETEXT NP$GETS
  6. USETEXT NP$GMB
  7. USETEXT NP$MODE
  8. USETEXT NP$NWNC
  9. USETEXT NP$NWL
  10. USETEXT NP$STAT
  11. USETEXT NP$TAA
  12. PROC NP$GETQ(GMMSC);
  13. #
  14. *1DC NP$GETQ
  15. *
  16. * 1. PROC NAME AUTHOR DATE
  17. * NP$GETQ E. GEE 01/30/85
  18. *
  19. * 2. FUNCTIONAL DESCRIPTION.
  20. * EXTRACT OR UPDATE DATA MESSAGES IN THE AIP UPLINE DATA
  21. * BUFFER.
  22. *
  23. * 3. METHOD USED.
  24. * IF PREVIOUS AIP REQUEST HAS NOT COMPLETED,
  25. * CALL NP$ERR TO ISSUE DAYFILE MSG AND ABORT APP.
  26. * PROCESS ACCORDING TO THE SEARCH CODE THAT WAS PROVIDED.
  27. * SC = 0 SEARCH BUFFER FOR MSG FOR SPECIFIED CONNECTION NUM.
  28. * IF FOUND,
  29. * UPDATE DATA BUFFER POINTERS.
  30. * CALL NP$EXTQ TO RETURN DATA MSG OR NULL BLK TO APP.
  31. * SC = 1 SEARCH BUFFER FOR MSG FOR SPECIFIED LIST NUMBER.
  32. * IF FOUND,
  33. * UPDATE DATA BUFFER POINTERS.
  34. * CALL NP$EXTQ TO RETURN DATA MSG OR NULL BLK TO APP.
  35. * SC = 2 SEARCH BUFFER FOR ALL MSGS FOR SPECIFIED CON NUM.
  36. * ADJUST DATA BUFFER POINTERS TO ELIMINATE MSG
  37. * MOVING MSGS FOR OTHER CONNECTIONS AS NECESSARY.
  38. * CALL NP$USI TO UPDATE THE NSUP WORD.
  39. *
  40. * 4. ENTRY CONDITIONS.
  41. * GMMSC SEARCH CODE TO DETERMINE TYPE OF PROCESSING
  42. * = 0 GET DATA FOR SPECIFIED ACN
  43. * = 1 GET DATA FOR SPECIFIED LIST NUMBER
  44. * = 2 DISCARD ALL DATA FOR SPECIFIED ACN
  45. *
  46. *
  47. * 5. EXIT CONDITIONS.
  48. * HA CONTAIN NULL BLOCK IF NOT DATA MSG WAS
  49. * AVAILABLE. OTHERWISE, IT WILL CONTAIN THE
  50. * APP BLOCK HEADER OF THE TEXT.
  51. * ATA CONTAINS TEXT OF DATA MSG IF ONE WAS
  52. * DELIVERED.
  53. *
  54. * 6. COMDECKS AND SYMPL TEXT USED.
  55. * AIPDEF CONSTANT DEFINITIONS
  56. * HEADER APP BLOCK HEADER TEMPLATE
  57. * NP$DB UPLINE DATA BUFFER TEMPLATE
  58. * NP$GETS GLOBAL VARIABLES
  59. * NP$GMB APP SUPPLIED DATA BUFFER TEMPLATE
  60. * NP$MODE GLOBAL VARIABLES
  61. * NP$NWL NETWORK WORKLIST TABLE
  62. * NP$NWNC GLOBAL VARIABLES
  63. * NP$STAT STATISTICS TABLE
  64. *
  65. * 7. PROCEDURES/FUNCTIONS CALLED.
  66. * NP$DBG LOG DATA MESSAGE IN DEBUG LOG FILE
  67. * NP$ERR ISSUE ERROR MSG AND ABORT APP
  68. * NP$ITMG INTERCEPT DATA MSG TO FILE TRANSFER MSGS
  69. * NP$SN INCREMENT AIP STATISTICS
  70. * NP$USI UPDATE NSUP WORD
  71. *
  72. * 8. DAYFILE MESSAGES OR OTHER IMPORTANT INFORMATION.
  73. * NONE.
  74.  #
  75. BEGIN
  76. #
  77.   EXTERNAL ROUTINES CALLED
  78. #
  79. XREF
  80. BEGIN
  81. PROC NP$DBG; # LOG AIP TRAFFIC IN TRACE FILE #
  82. PROC NP$ERR; # ISSUE DAYFILE MSG AND ABT APP #
  83. PROC NP$SN; # INCREMENT STATISTICS COUNTERS #
  84. PROC NP$USI; # UPDATE S AND I BIT IN NSUP #
  85. END
  86. #
  87.   INPUT VARIABLES
  88. #
  89. ITEM GMMSC; # SEARCH CODE TO PROCESS #
  90. #
  91.   OUTPUT VARIABLES
  92. #
  93. ITEM GMMRC; # RETURN CODE #
  94. #
  95.   LOCAL VARIABLES
  96. #
  97. ITEM DACT; # CHARACTER TYPE OF DATA #
  98. ITEM I; # LOOP CONTROL VARIABLE #
  99. ITEM I1; # LOOP CONTROL VARIABLE #
  100. ITEM I2; # TEMPORARY INDEX #
  101. ITEM J; # TEMPORARY INDEX #
  102. ITEM K; # TEMPORARY INDEX #
  103. ITEM N; # WORDS OF SM TRANSFERRED - 1 #
  104. ITEM NEXTHEAD; # 1ST WD AFTER RETURNED ENTRY #
  105. ITEM NOWHEAD; # 1ST WD OF RETURNED ENTRY #
  106.  
  107. ITEM TLW; # ACTUAL SIZE OF SM #
  108. ITEM TLWDIF; # TLW - SUM OF TAASIZE[K] #
  109.  
  110. BASED ARRAY MEM S(1);
  111. ITEM
  112. HA I (0), # HEADER AREA #
  113. WORD I (0); # TEXT ARRAY #
  114.  
  115. SWITCH SWTCH$SC SC$0,SC$1,SC$2,SC$3,SC$4,SC$5,SC$6,SC$7;
  116.  
  117. #**********************************************************************#
  118. CONTROL EJECT;
  119. #
  120.   EXECUTABLE CODE BEGINS HERE
  121. #
  122. *IF,DEF,STAT
  123. NP$SN(IAM); # INCREMENT STATISTICS COUNTER #
  124. *ENDIF
  125.  
  126. GMMRC = 1; # INIT RETURN CODE TO NOT FOUND #
  127. IF DEFER$PRO
  128. THEN # PREVIOUS REQUEST IS INCOMPLETE#
  129. BEGIN
  130. NP$ERR("42"); # ISSUE DAYFILE MSG AND ABT APP #
  131. END
  132.  
  133.  
  134. #
  135.   PROCESS ACCORDING TO SEARCH CODE
  136. #
  137. GOTO SWTCH$SC[GMMSC];
  138.  
  139. SC$0: # GET DATA FOR CONNECTION #
  140. BEGIN
  141. IF (GMBHEAD NQ GMBFOOT) AND
  142. ( ( (GMBCN NQ 0) AND
  143. (GMBCN EQ ACLN) ) OR
  144. (GMBCN EQ 0) )
  145. THEN # AIP BUF MAY CONTAIN MSG FOR CN#
  146. BEGIN
  147. NOWHEAD = GMBHEAD; # START SEARCH AT 1ST MSG #
  148. FOR I1=I1 WHILE (NOWHEAD NQ GMBFOOT) AND (GMMRC EQ 1)
  149. DO # CHECK ALL MSGS IN AIP BUFFER #
  150. BEGIN
  151. P<HEADER> = LOC(GMBWRD[NOWHEAD]); # ABH WORD OF MSG #
  152. DACT = GMBACT[NOWHEAD]; # CHARACTER TYPE OF QUEUED DATA #
  153. TLW = (2 * GMBTLC[NOWHEAD] + NW$ROUND[DACT])/ NW$FACT[DACT];
  154. IF ACLN EQ ABHADR[0]
  155. THEN # WE HAVE FOUND AN ENTRY #
  156. BEGIN
  157. GMMRC = 0;
  158. END
  159. ELSE # BUFFER ENTRY FOR DIFFERENT CN #
  160. BEGIN
  161. NOWHEAD = NOWHEAD + TLW +1; # SKIP TO CHECK NEXT ENTRY #
  162. IF (GMBLAST LQ NOWHEAD) AND # REACHED END OF BUFFER #
  163. (NOWHEAD NQ GMBFOOT) # NOT REACHED END OF DATA #
  164. THEN # WE HAVE REACHED THE END OF BUF#
  165. BEGIN
  166. NOWHEAD = 1; # RESTART SEARCH AT BEGIN OF BUF#
  167. END
  168. END
  169. END
  170. END
  171. NP$EXTQ; # RETURN DATA MSG OR NULL MSG #
  172. GOTO SC$END;
  173. END
  174. SC$1: # GET DATA FOR LIST NUMBER #
  175. BEGIN
  176. IF (GMBHEAD NQ GMBFOOT) AND
  177. (ACLN EQ GMBLN)
  178. THEN # AIP HAS DATA AVAILABLE #
  179. BEGIN
  180. GMMRC = 0; # FLAG THAT ENTRY WAS FOUND #
  181. NOWHEAD = GMBHEAD; # SAVE PTR OF CURRENT HEAD #
  182. DACT = GMBACT[NOWHEAD]; # CHARACTER TYPE OF QUEUED DATA #
  183. TLW = (2 * GMBTLC[NOWHEAD] + NW$ROUND[DACT])/ NW$FACT[DACT];
  184. END
  185. NP$EXTQ;
  186. GOTO SC$END;
  187. END
  188. SC$2: # DISCARD ALL DATA ON CONNECTION#
  189. BEGIN
  190. IF (GMBHEAD NQ GMBFOOT) AND
  191. ( ( (GMBCN NQ 0) AND
  192. (GMBCN EQ ACLN) ) OR
  193. (GMBCN EQ 0) )
  194. THEN # AIP BUF MAY CONTAIN MSG FOR CN#
  195. BEGIN
  196. NOWHEAD = GMBHEAD; # START SEARCH AT 1ST MSG #
  197. FOR I1=I1 WHILE NOWHEAD NQ GMBFOOT
  198. DO # CHECK ALL MSGS IN AIP BUFFER #
  199. BEGIN
  200. P<HEADER> = LOC(GMBWRD[NOWHEAD]); # ABH WORD OF MSG #
  201. DACT = GMBACT[NOWHEAD]; # CHARACTER TYPE OF QUEUED DATA #
  202. TLW = (2*GMBTLC[NOWHEAD] + NW$ROUND[DACT])/NW$FACT[DACT];
  203. NEXTHEAD = NOWHEAD + TLW + 1; # INDEX FOR NEXT MSG IN BUF #
  204. IF ACLN EQ ABHADR[0]
  205. THEN # WE HAVE FOUND AN ENTRY #
  206. BEGIN
  207. GMMRC = 0;
  208.  
  209. *IF,DEF,STAT
  210. NP$SN(TYPE"GDM"); # INCREMENT AIP STATISTICS #
  211. *ENDIF
  212.  
  213. IF GMBHEAD EQ NOWHEAD
  214. THEN # RETURNED FIRST MSG IN BUFFER #
  215. BEGIN
  216. GMBHEAD = NEXTHEAD; # UPDATE PTR TO NEXT MSG #
  217. IF (GMBLAST LQ GMBHEAD) AND
  218. (GMBHEAD NQ GMBFOOT)
  219. THEN # REACHED END OF BUFFER #
  220. BEGIN
  221. GMBHEAD = 1;
  222. END
  223. NOWHEAD = GMBHEAD; # ADDR OF NEXT ENTRY TO CHECK #
  224. END # END DATA MESSAGE DELIVERED #
  225. ELSE # DID NOT RETURN 1ST MSG IN BF #
  226. BEGIN
  227. IF GMBFOOT EQ NEXTHEAD
  228. THEN # RETURNED LAST MSG IN BUFFER #
  229. BEGIN
  230. GMBFOOT = GMBFOOT - TLW - 1; # UPDATE PTR FOR NXT #
  231. END
  232. ELSE # NOT LAST MSG IN BUFFER #
  233. BEGIN
  234. IF NOWHEAD LS GMBFOOT
  235. THEN # RETURNED MSG IS IN 1ST PART #
  236. BEGIN
  237. #
  238.   MOVE UP ALL DATA ENTRIES BELOW ONE RETURNED TO APP
  239. #
  240. FOR I = 0 STEP 1 UNTIL GMBFOOT-NEXTHEAD-1
  241. DO
  242. BEGIN
  243. GMBWRD[NOWHEAD+I] = GMBWRD[NEXTHEAD+I];
  244. END
  245. GMBFOOT = GMBFOOT - TLW - 1; # NEW INDEX FOR LAST #
  246. END
  247. ELSE # RETURNED MSG IS IN LAST PART#
  248. BEGIN
  249. #
  250.   MOVE DOWN ALL DATA ENTRIES BEFORE ONE RETURNED TO
  251.   APP
  252. #
  253. FOR I = 1 STEP 1 UNTIL NOWHEAD - GMBHEAD
  254. DO
  255. BEGIN
  256. GMBWRD[NEXTHEAD-I] = GMBWRD[NOWHEAD-I];
  257. END
  258. GMBHEAD = GMBHEAD + TLW + 1; # NEW INDX FOR 1ST #
  259. NOWHEAD = NEXTHEAD;# ADDR OF NEXT ENTRY TO CHECK #
  260. END
  261. END
  262. END
  263. END
  264. ELSE # BUFFER ENTRY FOR DIFFERENT CN #
  265. BEGIN
  266. NOWHEAD = NEXTHEAD; # SKIP TO CHECK NEXT ENTRY #
  267. IF (GMBLAST LQ NOWHEAD) AND # REACHED END OF BUFFER #
  268. (NOWHEAD NQ GMBFOOT) # NOT REACHED END OF DATA #
  269. THEN # WE HAVE REACHED THE END OF BUF#
  270. BEGIN
  271. NOWHEAD = 1; # RESTART SEARCH AT BEGIN OF BUF#
  272. END
  273. END
  274. END
  275. IF GMBFOOT EQ GMBHEAD
  276. THEN # BUFFER IS NOW EMPTY #
  277. BEGIN
  278. GMBFOOT = 1; # INITIAL PTR FOR NEXT FREE WORD#
  279. GMBHEAD = 1; # INITIAL PTR FOR NEXT DATA MSG #
  280. END
  281. END
  282.  
  283. GOTO SC$END;
  284. END
  285. SC$3: # DISCARD ALL DATA ON LIST NO #
  286. BEGIN
  287. #
  288.   THIS FEATURE HAS NOT BEEN IMPLEMENTED
  289. #
  290. GOTO SC$END;
  291. END
  292. SC$4: # SET LIST OFF FLAG FOR ALL MSGS#
  293. # IN BUFFER WITH SPECIFIED LIST #
  294. # NUMBER. #
  295. BEGIN
  296. #
  297.   THIS FEATURE HAS NOT BEEN IMPLEMENTED
  298. #
  299. GOTO SC$END;
  300. END
  301. SC$5: # CLEAR LIST OFF FLAG FOR ALL #
  302. # MSGS IN BUFFER WITH SPECIFIED #
  303. # LIST NUMBER. #
  304. BEGIN
  305. #
  306.   THIS FEATURE HAS NOT BEEN IMPLEMENTED
  307. #
  308. GOTO SC$END;
  309. END
  310. SC$6: # SET TEMP LIST OFF FLAG FOR ALL#
  311. # MSGS IN BUFFER WITH SPECIFIED #
  312. # LIST NUMBER. #
  313. BEGIN
  314. #
  315.   THIS FEATURE HAS NOT BEEN IMPLEMENTED
  316. #
  317. GOTO SC$END;
  318. END
  319. SC$7: # CLEAR TEMP LIST OFF FLAG FOR #
  320. # ALL MSGS IN BUFFER WITH #
  321. # SPECIFIED LIST NUMBER. #
  322. #
  323.   THIS FEATURE HAS NOT BEEN IMPLEMENTED
  324. #
  325. BEGIN
  326. GOTO SC$END;
  327. END
  328.  
  329. SC$END: # END OF CASE STATEMENT #
  330.  
  331. NP$USI; # UPDATE NSUP WORD #
  332.  
  333. LTAA = 0; # CLEAR FRAGMENT CALL FLAG #
  334.  
  335. RETURN;
  336.  
  337.  
  338. CONTROL EJECT;
  339. PROC NP$EXTQ;
  340. #
  341. *1DC NP$EXTQ
  342. *
  343. * 1. PROC NAME AUTHOR DATE
  344. * NP$EXTQ E. GEE 01/30/85
  345. *
  346. * 2. FUNCTIONAL DESCRIPTION.
  347. * EXTRACT DATA MSG FROM UPLINE DATA BUFFER AND DELIVER TO
  348. * THE APPLICATION.
  349. *
  350. * 3. METHOD USED.
  351. * IF NO MESSAGE FOUND,
  352. * RETURN NULL BLOCK TO APPLICATION.
  353. * ELSE (DATA MESSAGE FOUND IN DATA BUFFER),
  354. * IF APP BUFFER IS NOT BIG ENOUGH AND TRUNCATION NOT ALLOWED,
  355. * SET IBU BIT IN ABH WORD.
  356. * ELSE ( DATA MSG CAN BE DELIVERED),
  357. * SET TRUNCATION BIT IF DATA MSG IS TRUNCATED.
  358. * IF FRAGMENTED GET REQUEST,
  359. * COPY TEXT INTO FRAGMENTED BUFFERS.
  360. * ELSE (DELIVER MSG INTO ONE BUFFER),
  361. * COPY TEXT INTO APPLICATION BUFFER.
  362. * ADJUST AIP POINTERS FOR UPLINE DATA BUFFER.
  363. *
  364. * 4. ENTRY CONDITIONS.
  365. * GMMRC MESSAGE FOUND FLAG.
  366. * = 0 MESSAGE FOUND TO DELIVER.
  367. * = 1 RETURN NULL BLOCK TO APPLICATION.
  368. *
  369. * 5. EXIT CONDITIONS.
  370. * HA CONTAIN NULL BLOCK IF NOT DATA MSG WAS
  371. * AVAILABLE. OTHERWISE, IT WILL CONTAIN THE
  372. * APP BLOCK HEADER OF THE TEXT.
  373. * ATA CONTAINS TEXT OF DATA MSG IF ONE WAS
  374. * DELIVERED.
  375. *
  376. * 7. PROCEDURES/FUNCTIONS CALLED.
  377. * NONE.
  378. *
  379. * 8. DAYFILE MESSAGES OR OTHER IMPORTANT INFORMATION.
  380. * NONE.
  381.  #
  382.  
  383. #**********************************************************************#
  384. CONTROL EJECT;
  385.  
  386. BEGIN
  387. IF GMMRC EQ 1
  388. THEN # NO MATCHING ENTRY FOUND #
  389. BEGIN # RETURN NULL BLOCK #
  390. I = NEXT + 1; # CURRENT INDEX INTO NWL BUF #
  391. ABH[I] = 0; # ZERO ABH WORD IN NWL BUFFER #
  392. ABH$ADR[0] = ACLN; # CONNECTION/LIST NUMBER #
  393. P<HEADER> = LOC$HA; # ADDRESS TO WRITE ABH WORD #
  394. ABHWORD[0] = ABH[I]; # WRITE NULL ABH TO ABH WORD #
  395.  
  396. *IF,DEF,STAT
  397. NP$SN(TYPE"INB");
  398. *ENDIF
  399.  
  400. END
  401. ELSE # MATCHING ENTRY FOUND #
  402. BEGIN
  403. NEXTHEAD = NOWHEAD + TLW + 1;
  404. P<HEADER> = LOC$HA; # ADDRESS TO WRITE ABH WORD #
  405. ABHWORD[0] = GMBWRD[NOWHEAD];
  406. IF (TLW GR TLMX) AND
  407. (NOT GMBTRUNC)
  408. THEN # BLOCK IS TOO LARGE TO DELIVER #
  409. BEGIN
  410. GMBIBU[NOWHEAD] = TRUE; # SET IBU BIT IN BLOCK HEADER #
  411. END
  412. ELSE # BLOCK CAN BE DELIVERED #
  413. BEGIN
  414. IF TLW GR TLMX
  415. THEN # BLOCK MUST BE TRUNCATED #
  416. BEGIN
  417. TLW = TLMX; # NO OF WORDS OF TEXT TO DELIVER#
  418. ABHTLC[0] = (TLMX * NW$FACT[DACT]) / 2; # NO OF CHARS #
  419. ABHTRU[0] = 1; # SET TRUNCATION FLAG IN ABH #
  420. END
  421. N = TLW - 1;
  422. P<MEM> = LOC$TA;
  423. P<TAA> = LOC$TA;
  424. J = NOWHEAD + 1;
  425. TLWDIF = TLW;
  426.  
  427. CONTROL FASTLOOP;
  428. FOR K = 1 STEP 1 UNTIL LTAA DO
  429. BEGIN
  430. IF LTAA NQ 0
  431. THEN
  432. BEGIN
  433. P<MEM> = TAADDR[K];
  434. N = TAASIZE[K] - 1;
  435. IF N GR TLWDIF # MAKE SURE THAT AIP IS ONLY #
  436. THEN # COPYING THE DATA #
  437. N = TLWDIF - 1; # MESSAGE TO THE FRAGMENTED #
  438. # BUFFERS - NO MATTER WHAT SIZE #
  439. #HAS BEEN SPECIFIED IN THE #
  440. #TEXT AREA ARRAY. #
  441. TLWDIF = TLWDIF - TAASIZE[K];
  442. END
  443.  
  444. CONTROL SLOWLOOP;
  445. FOR I = 0 STEP 1 UNTIL N DO
  446. BEGIN
  447. WORD[I] = GMBWRD[I+J];
  448. END
  449.  
  450. J = J + TAASIZE[K];
  451. END
  452.  
  453. *IF,DEF,STAT
  454. I = GMBABT[NOWHEAD] + TYPE"INB";
  455. NP$SN(I);
  456. *ENDIF
  457. *IF,DEF,DEBUG
  458. NP$DBG; # WRITE MSG TO AIP DEBUG FILE #
  459. *ENDIF
  460. IF GMBHEAD EQ NOWHEAD
  461. THEN # RETURNED FIRST MSG IN BUFFER #
  462. BEGIN
  463. GMBHEAD = NEXTHEAD; # UPDATE PTR TO NEXT MSG #
  464. IF (GMBLAST LQ GMBHEAD) AND
  465. (GMBFOOT NQ GMBHEAD)
  466. THEN # REACHED END OF BUFFER #
  467. BEGIN
  468. GMBHEAD = 1;
  469. END
  470. END # END DATA MESSAGE DELIVERED #
  471. ELSE # DID NOT RETURN 1ST MSG IN BUF #
  472. BEGIN
  473. IF GMBFOOT EQ NEXTHEAD
  474. THEN # RETURNED LAST MSG IN BUFFER #
  475. BEGIN
  476. GMBFOOT = GMBFOOT - TLW - 1; # UPDATE PTR FOR NXT FREE#
  477. END
  478. ELSE # NOT LAST MSG IN BUFFER #
  479. BEGIN
  480. IF NOWHEAD LS GMBFOOT
  481. THEN # RETURNED MSG IS IN 1ST PART #
  482. BEGIN
  483. #
  484.   MOVE UP ALL DATA ENTRIES BELOW ONE RETURNED TO APP
  485. #
  486. FOR I = 0 STEP 1 UNTIL GMBFOOT-NEXTHEAD - 1
  487. DO
  488. BEGIN
  489. GMBWRD[NOWHEAD+I] = GMBWRD[NEXTHEAD+I];
  490. END
  491. GMBFOOT = GMBFOOT - TLW - 1; # NEW INDEX FOR LAST MS#
  492. END
  493. ELSE # RETURNED MSG IS IN LAST PART #
  494. BEGIN
  495. #
  496.   MOVE DOWN ALL DATA ENTRIES BEFORE ONE RETURNED TO APP
  497. #
  498. FOR I = 1 STEP 1 UNTIL NOWHEAD - GMBHEAD
  499. DO
  500. BEGIN
  501. GMBWRD[NEXTHEAD-I] = GMBWRD[NOWHEAD-I];
  502. END
  503. GMBHEAD = GMBHEAD + TLW + 1; # NEW INDEX FOR 1ST MSG#
  504. END
  505. END
  506. END
  507. IF GMBHEAD EQ GMBFOOT
  508. THEN # EMPTY UPLINE DATA BUFFER #
  509. BEGIN
  510. GMBHEAD = 1;
  511. GMBFOOT = 1;
  512. END
  513. END
  514. END
  515. RETURN;
  516. END
  517. END
  518. TERM
cdc/nos2.source/nam5871/np_getq.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator