User Tools

Site Tools


cdc:nos2.source:nam5871:hfntsm

HFNTSM

Table Of Contents

  • [00018] PRGM HFNTSM
  • [00050] PROC BLINK
  • [00051] PROC MGETS
  • [00052] PROC OSREQ
  • [00053] PROC OMSG
  • [00054] PROC OSCHAPP
  • [00055] PROC OVLCALL
  • [00056] FUNC XCDD C(10)
  • [00057] PROC XSTTP
  • [00739] PROC SWFTON(ACBD,REASON)
  • [00805] PROC CIORETF(ACBD)
  • [00829] PROC SWFTOAP(ACBD,REASON)
  • [00910] PROC CREATB

Source Code

HFNTSM.txt
  1. *DECK HFNTSM
  2. USETEXT NIPDEF
  3. USETEXT ACB
  4. USETEXT AHEADER
  5. USETEXT APPSTAT
  6. USETEXT AT
  7. USETEXT DRHDR
  8. USETEXT DUMPFLG
  9. USETEXT MSGIDX
  10. USETEXT NWLNTRY
  11. USETEXT OVERLAY
  12. USETEXT PARAMS
  13. USETEXT PT
  14. USETEXT RELFILE
  15. USETEXT SSTCOM
  16. USETEXT STPRESP
  17. USETEXT SUPMSG
  18. PRGM HFNTSM ;
  19. STARTIMS ;
  20. #
  21. *1DC HFNTSM
  22. *
  23. * 1. PROC NAME AUTHOR DATE
  24. * HFNTSM LIEM T. NGUYEN 88/04/11
  25. *
  26. * 2. FUNCTIONAL DESCRIPTION
  27. * THIS ROUTINE PROCESSES THE FNT SUPERVISORY MESSAGE.
  28. * FNT/DMS
  29. * FNT/DSM
  30. * FNT/IFL
  31. * FNT/IFR
  32. * FNT/RLT
  33. * FNT/RLT
  34. *
  35. * 3. METHOD USED
  36. *
  37. * 4. ENTRY PARAMETERS
  38. * PARAMS1 = TRIGGER TO THE STATE TABLE PROCESSOR.
  39. * PARAMS2 = ACB POINTER OF THE SENDING S.M. APPLICATION.
  40. *
  41. * 5. FOR INFORMATION ABOUT OUTPUT PARAMETERS, AS WELL AS
  42. * DAYFILE MESSAGES,TEXTS ETC. REFER TO THE
  43. * IMS OF EACH SPECIFIC ROUTINE.
  44. *
  45.  #
  46. STOPIMS ;
  47. XREF
  48. BEGIN
  49. LABEL RJMAIN ;
  50. PROC BLINK ;
  51. PROC MGETS ;
  52. PROC OSREQ ;
  53. PROC OMSG ;
  54. PROC OSCHAPP ;
  55. PROC OVLCALL ;
  56. FUNC XCDD C(10) ;
  57. PROC XSTTP ;
  58. END
  59. #
  60.   INTERNAL VARIABLES
  61. #
  62. #
  63.   JUMP TABLE FOR UCP-PFC/SFC PROCEDURES
  64. #
  65.  
  66. SWITCH FNTACTS FDMS, # PROCESS FNT/DMS/R AND FNT/DSM/R #
  67. SFTS, # SWITCH FILE FROM MASTER TO SLAVE #
  68. RFTM, # RETURN FILE FROM SLAVE TO MASTER #
  69. RSFS, # RESEND FILE TO SLAVE #
  70. RSFM, # RESEND FILE TO MASTER #
  71. SMRA, # SET MASTER REQUEST SLAVE TO ABORT F#
  72. CIOR, # FILE AT NIP, DO CIO RETURN #
  73. SFTN, # SLAVE NETTING OFF, SWITCH FNT TO NP#
  74. SOFM, # SLAVE NETTED OFF, AFTER IAR/R #
  75. PABT, # PARTNER ABORTED #
  76. SDXA, # SEND DMS/A OR DSM/A TO SENDING APPL#
  77. RIAR, # RE-PROCESS FNT/IAR/R #
  78. SBIM, # SET BITS IN AT OF MASTER #
  79. IMSA, # INFORM MASTER SLAVE ABORTED #
  80. SPAP, # SET PARTNER ADDRESS POINTER #
  81. RFWE, # RETURN FILE WITH ERROR FNT/IFL/A #
  82. ABRF, # ABNORMAL RESPONSE, RETURN FILE #
  83. FEND ;
  84.  
  85. ARRAY RELBUFF S(8) ;
  86. BEGIN
  87. ITEM RELW0 U(00,00,60) ;
  88. ITEM RELBID U(00,00,06) ;
  89. ITEM RELBBS U(00,06,AL) = [8] ;
  90. ITEM RELW1 U(01,00,60) ;
  91. ITEM RELW2 U(02,00,60) ;
  92. ITEM RELW3 U(03,00,60) ;
  93. ITEM RELW4 U(04,00,60) ;
  94. ITEM RELW5 U(05,00,60) ;
  95. ITEM RELW6 U(06,00,60) ;
  96. ITEM RELW7 U(07,00,60) ;
  97. END
  98. ARRAY ILL$MSG S(6) ;
  99. BEGIN
  100. ITEM ILL$TRG$MSG C(00,00,52) =
  101. [" HFNTSM MAST SLAV, ILLEGAL TRIGGER TRG= TT ST= SS"] ;
  102. ITEM ILL$MASTER C(01,00,04) ;
  103. ITEM ILL$SLAVE C(01,30,04) ;
  104. ITEM ILL$MSG$TR C(04,12,02) ;
  105. ITEM ILL$MSG$ST C(05,00,02) ;
  106. ITEM ILL$ZERO U(05,48,12) = [0] ;
  107. END
  108.  
  109. ITEM CURST ;
  110. ITEM OLDTRIG ;
  111. ITEM TRIGGER ;
  112.  
  113. ITEM BUFADDR ;
  114. ITEM CLEARFNT B ;
  115. ITEM CURPFCSFC = 0 ;
  116. ITEM FILEORD ;
  117. ITEM FOUND B ;
  118. ITEM INDEX ;
  119. ITEM OTHERAN ;
  120. ITEM REASON U ;
  121. ITEM RESP ;
  122. ITEM PTNR$ACB U ;
  123. ITEM SEND$ACB U ;
  124. ITEM SCRATCH C(10) ;
  125.  
  126. BEGIN # HFNTSM #
  127. P<AT> = PTAT[0] ; # APPLICATION TABLE #
  128. P<ACB> = 0 ;
  129. OTHERAN = 0 ;
  130. SEND$ACB = ATACBA[PARAMS2] ; # ACB OF SENDING APPLICATION #
  131. PTNR$ACB = 0 ;
  132. REASON = 0 ;
  133. CLEARFNT = FALSE ;
  134.  
  135. IF PARAMS3 NQ 0
  136. THEN
  137. BEGIN
  138. P<SUPMSG> = PARAMS3 ;
  139. P<SMNVF> = P<SUPMSG> ;
  140. CURPFCSFC = PFCSFC[0] ;
  141. END
  142.  
  143. CURST = ACBFNTST[SEND$ACB] ;# CURRENT STATE OF THAT APPLI. #
  144. OLDTRIG = ACBFNTCTR[SEND$ACB] ; # LAST TRIGGER TO THIS CALL #
  145. TRIGGER = PARAMS1 ;
  146. XSTTP(FNORD,CURST,TRIGGER,RESP);
  147.  
  148. P<STRESP> = LOC(RESP); # RESPONSE WORD #
  149.  
  150. IF LEGTRIG[0]
  151. THEN
  152. BEGIN # LEGAL TRIGGER #
  153. IF ACTION[0] NQ NOCHG
  154. THEN
  155. GOTO FNTACTS[ACTION[0]]; # EXECUTE PROPER ACTION #
  156. ELSE
  157. GOTO FEND ;
  158.  
  159. FDMS: # PROCESS FNT/DMS/R OR FNT/DSM/R #
  160. FOUND = FALSE ; # PRESET FLAG #
  161.  
  162. FOR INDEX = 1 STEP 1 WHILE
  163. INDEX LQ ATHAN[0] AND NOT FOUND
  164. DO
  165. BEGIN # LOOP TO SEARCH #
  166. IF ATACBA[INDEX] NQ 0
  167. THEN
  168. BEGIN # ACB EXISTED #
  169. IF ACBJOBSQN[ATACBA[INDEX]] EQ FNTJSNC[0] # MATCHING JSN #
  170. AND NOT ATNVFN[INDEX] # AND THIS APPL NOT NETOFF #
  171. AND NOT ATNVFF[INDEX] # NOR FAILED YET #
  172. THEN
  173. BEGIN
  174. FOUND = TRUE ; # THIS IS THE RIGHT ONE #
  175. OTHERAN = INDEX ;
  176. END
  177. END # ACB EXISTED #
  178. END # LOOP TO SEARCH #
  179. IF FOUND
  180. THEN
  181. BEGIN # FOUND ACB #
  182. IF ACBPTNRAN[SEND$ACB] EQ 0 # NO OUTSTANDING LOANNING YET #
  183. THEN
  184. BEGIN
  185. PTNR$ACB = ATACBA[OTHERAN] ; # LOOK AT THE PARTNER ACB #
  186. IF ACBPTNRAN[PTNR$ACB] NQ 0
  187. AND ACBPTNRAN[PTNR$ACB] NQ PARAMS2
  188. THEN
  189. REASON = MSR"PAS" ; # PARTNER ALREADY SELECT ANOTHER#
  190. # APPLICATION #
  191. ELSE
  192. BEGIN # OTHER APPL. READY TO BE #
  193. ACBPTNRAN[SEND$ACB] = OTHERAN ;
  194. ACBPTJSN [SEND$ACB] = FNTJSNC[0] ; # JSN OF PARTNER #
  195. IF PFCSFC[0] EQ FNTDMS
  196. THEN
  197. ACBFNTMAS[SEND$ACB] = TRUE ; # THIS IS THE MASTER #
  198. ELSE
  199. ACBFNTSLA[SEND$ACB] = TRUE ; # THIS IS A SLAVE #
  200.  
  201. IF ACBPTNRAN[PTNR$ACB] NQ 0 # PARTNER IS READY TOO#
  202. THEN
  203. NEWSTATE[0] = FNTIDLE ; # CHANGE TO STATE 2 #
  204. ELSE
  205. PTNR$ACB = 0 ; #DONT UP DATE PARTNER #
  206. END # OTHER IS READY TO BE PARTNER #
  207. END
  208. ELSE
  209. BEGIN # MASTER ALREADY SENT FNT/DMS #
  210. REASON = MSR"PAS" ; # MAY BE ANOTHER LOAN ALREADY EXT #
  211. END # MASTER ALREADY SENT FNT/DMS #
  212. END # FOUND ACB #
  213. ELSE
  214. BEGIN # NO MATCHED ACB #
  215. REASON = MSR"UNA" ; # PARTNER UNAVAILABLE #
  216. END # NO MATCHED ACB #
  217.  
  218. CREATB ; # GET BUFFER FOR THE RESPONSE SM#
  219. PFCSFC[0] = CURPFCSFC ;
  220. RC[0] = REASON ;
  221. IF REASON NQ 0
  222. THEN
  223. BEGIN
  224. EB[0] = TRUE ; # AB-NORMAL RESPONSE #
  225. END
  226. ELSE
  227. BEGIN
  228. RB[0] = TRUE ; # NORMAL RESPONSE #
  229. END
  230.  
  231. BLINK(BUFADDR,SEND$ACB) ; # SEND MESSAGE TO APPLICATION #
  232.  
  233. GOTO FEND ;
  234.  
  235. SFTS: # PROCESSING FNT/IFL/R FROM MASTER #
  236. # SWITCH FILE FROM MASTER TO SLAVE #
  237. IF ACBPTNRAN[SEND$ACB] NQ 0
  238. THEN
  239. BEGIN # PARTNER IS READY FOR FILE #
  240. # I.E. SLAVE ALREADY SENT FNT/DSM/R #
  241. PTNR$ACB = ATACBA[ACBPTNRAN[SEND$ACB]] ; # ACB OF PARTNER #
  242.  
  243. ACBFNTFILE[SEND$ACB] = FNTFILE[0] ; # FILE TO BE SENT TO SLAVE #
  244. ACBFORDNAL[SEND$ACB] = FNTFNTO[0] ; # FILE ORDINAL FROM MASTER #
  245.  
  246. SWFTON(SEND$ACB,REASON) ; # SWITCH FILE FROM SENDING #
  247. # APPL. (MASTER) TO NIP C.P. #
  248. IF REASON EQ 0
  249. THEN
  250. BEGIN # SST REQUEST WENT O.K. #
  251.  
  252. SWFTOAP(PTNR$ACB,REASON) ; # SWITCH FILE TO SLAVE #
  253. IF REASON NQ 0
  254. THEN
  255. BEGIN # ABNORMAL REASON CODE FROM SST #
  256. IF NOT DONE
  257. THEN
  258. BEGIN # WORKLIST HAS BEEN SUSPENDED #
  259. # CHANGE STATE OF APPLS TO 4, FILE IS AT NIP C.P., WHEN #
  260. # FNT/IFL/R GETS RE-PROCESSED, FILE WILL BE SWITCHED TO #
  261. # SLAVE VIA ACTION RSFS (RESEND FILE TO SLAVE). #
  262.  
  263. NEWSTATE[0] = FNTANIP ;
  264. ACBFNTANIP [SEND$ACB] = TRUE ; # SET FILE AT NIP FLAG#
  265. ACBFNTANIP [PTNR$ACB] = TRUE ; # SET FILE AT NIP FLAG#
  266. # EXIT THIS ROUTINE, PROCESS AGAIN #
  267. END
  268. ELSE
  269. BEGIN # UNABLE TO SWITCH FILE TO SLAVE #
  270. # RETURN FILE BACK TO MASTER #
  271. # THIS IS A PUT ERROR, FILE ALRAEDY#
  272. SWFTOAP(SEND$ACB,REASON) ; # AT NIP C.P., #
  273. # SEND IT BACK TO MASTER #
  274. IF REASON NQ 0
  275. THEN
  276. BEGIN # PROBLEM WITH SENDING FILE BACK#
  277. CIORETF(SEND$ACB) ; # TO MASTER RETURN IT #
  278.  
  279. REASON = RFL"RERR" ; # ERROR IN RETURNNING FILE TO MS#
  280. END
  281. ELSE
  282. # FILE WENT BACK TO MASTER O.K. #
  283. REASON = RFL"PERR" ; # ERROR IN PUTTING FILE TO SLAVE #
  284.  
  285. DONE = TRUE ; # WORKLIST IS COMPLETED #
  286. END # PUT ERROR #
  287. END # ABNORMAL REASON CODE #
  288. END # SST REQUEST WENT O.K. #
  289. ELSE
  290. BEGIN # CANOT GET FILE FROM MASTER #
  291. NEWSTATE[0] = CURST ; # RESTORE CURRENT STATE IF DONE = F#
  292. REASON = RFL"GERR" ; # SEND FNT/IFL/A IF FATAL, DONE = T#
  293. END # CAN NOT GET FILE FROM MASTER #
  294. END # LET LOOK AT THE PARTNER ACB #
  295. ELSE
  296. REASON = RFL"SUNA" ; # SLAVE IS NOT READY FOR FNT/IFL YET #
  297.  
  298. IF DONE
  299. THEN
  300. BEGIN # THIS PUT WORKLIST DID NOT GET SUSPE#
  301. CREATB ; # GET BUFFER FOR FNT/IFL/N OR IFL/A #
  302. IF REASON NQ 0
  303. THEN
  304. BEGIN # SEND ABNORMAL FNT/IFL TO MASTER #
  305. PFCSFC[0] = FNTIFLA ;
  306. RC[0] = REASON ;
  307. CLEARFNT = TRUE ; # SIGNAL TO CLEAR ALL FNT INFO IN ACB#
  308. END
  309. ELSE
  310. BEGIN # NORMAL RESPONSE SENDING #
  311. PFCSFC[0] = FNTIFLN ; # SEND FNT/IFL/N TO MASTER #
  312. END
  313.  
  314. FNTFNTO[0] = ACBFORDNAL[SEND$ACB] ;
  315. BLINK(BUFADDR,SEND$ACB) ; # LINK IT TO ACB OF MASTER #
  316.  
  317. END # WORKLIST NOT SUSPENDED #
  318. # ELSE, WORK LIST IS SUSPENDED, UPDTE#
  319. # STATES, WORLIST WILL BE RE-PROCESSE#
  320.  
  321. GOTO FEND ;
  322. RFTM: # RETURN FILE FROM SLAVE TO MASTER #
  323. # MASTER SENT FNT/IFR/R TO TERMINATE #
  324. PTNR$ACB = ATACBA[ACBPTNRAN[SEND$ACB]] ; # ACB OF PARTNER (SLV)#
  325.  
  326. SWFTON(PTNR$ACB,REASON) ; # SWITCH FILE FROM SLAVE TO NIP #
  327. IF REASON EQ 0
  328. THEN
  329. BEGIN # SST REQUEST WENT O.K. #
  330. SWFTOAP(SEND$ACB,REASON) ; # RETURN FILE TO MASTER #
  331. IF REASON NQ 0
  332. THEN
  333. BEGIN # CAN NOT RETURN FILE TO MASTER #
  334. IF NOT DONE
  335. THEN
  336. BEGIN # WORKLIST HAS BEEN SUSPENDED #
  337. # CHANGE STATE OF APPLS TO 4, FILE IS AT NIP C.P., WHEN #
  338. # FNT/IFR/R GETS RE-PROCESSED, FILE WILL BE SWITCHED TO #
  339. # MASTER VIA ACTION RSFM (RESEND FILE TO MASTER) . #
  340.  
  341. NEWSTATE[0] = FNTANIP ;
  342. ACBFNTANIP [SEND$ACB] = TRUE ; # SET FILE AT NIP FLAG#
  343. ACBFNTANIP [PTNR$ACB] = TRUE ; # SET FILE AT NIP FLAG#
  344. # EXIT THIS ROUTINE, PROCESS AGAIN #
  345. END
  346. ELSE
  347. BEGIN # OTHER NON-ZERO REASON CODE FROM SST#
  348. CIORETF(SEND$ACB) ; # CAN NOT PUT THE FILE BACK TO MASTER#
  349. REASON = RFL"RERR" ; # RETURN ERROR IN FNT/IFR TO MASTER #
  350. END # RETURN FILE TO CIO #
  351. END # CAN NOT RETURN FILE TO MASTER #
  352. END # SST REQUEST WENT O.K. #
  353. ELSE
  354. BEGIN
  355. NEWSTATE[0] = CURST ; # STAY AT SAME STATE FOR WL SUSPENDED#
  356. REASON = RFL"GERR" ; # GET ERROR IN FNT/IFR/A TO MASTER #
  357. END
  358.  
  359. IF DONE
  360. THEN
  361. BEGIN # THIS PUT WORKLIST DID NOT GET SUSPE#
  362. CREATB ; # GET BUFFER FOR FNT/IFR/N OR IFR/A #
  363. FNTFNTO[0] = ACBFORDNAL[SEND$ACB] ;
  364. IF REASON NQ 0
  365. THEN
  366. BEGIN # SEND ABNORMAL FNT/IFR TO MASTER #
  367. PFCSFC[0] = FNTIFRA ;
  368. RC[0] = REASON ;
  369. CLEARFNT = TRUE ; # CLEAR ALL INFORMATIONS #
  370. END
  371. ELSE
  372. BEGIN # NORMAL RESPONSE SENDING #
  373. PFCSFC[0] = FNTIFRN ; # SEND FNT/IFR/N TO SLAVE #
  374. NEWSTATE[0] = FNTIDLE ; # CHANGE TO STATE 2, READY FOR #
  375. # ANOTHER FILE (I.E. FNT/IFL/R) #
  376. ACBFNTW1[SEND$ACB] = 0 ; # CLEAR THE FILE NAME/ORDINAL #
  377. ACBMREQABT[SEND$ACB] = FALSE ; # CLEAR MASTER REQUEST ABT #
  378. ACBFNTW1[PTNR$ACB] = 0 ; # CLEAR THE FILE NAME/ORDINAL #
  379. ACBMREQABT[PTNR$ACB] = FALSE ; # CLEAR MASTER REQUEST ABT #
  380. END
  381.  
  382. BLINK(BUFADDR,SEND$ACB) ; # LINK IT TO MASTER ACB #
  383.  
  384. END # WORKLIST NOT SUSPENDED #
  385. # ELSE WORKLIST BEEN SUSPENED, UPDATE#
  386. # STATE, THIS WL WILL BE RE-PROCESSED#
  387.  
  388. GOTO FEND ;
  389. RSFS: # RESEND FILE TO SLAVE APPLICATION #
  390. # THIS ACTION IS EXECUTED WHEN FNT/IFL/R #
  391. # GETS RE-PROCESSED #
  392. PTNR$ACB = ATACBA[ACBPTNRAN[SEND$ACB]] ; # ACB OF SLAVE #
  393.  
  394. SWFTOAP(PTNR$ACB,REASON) ; # SWITCH FILE TO SLAVE #
  395.  
  396. IF REASON EQ 0
  397. THEN
  398. BEGIN # EVERYTHING WENT O.K. THIS TIME #
  399. CREATB ; # GET BUFFER TO SEND FNT/IFL/N TO MASTER #
  400. PFCSFC[0] = FNTIFLN ; # SEND FNT/IFL/N TO MASTER #
  401. FNTFNTO[0] = ACBFORDNAL[SEND$ACB] ;
  402. BLINK(BUFADDR,SEND$ACB) ; # LINK IT TO ACB OF MASTER #
  403. END # EVERYTHING WENT O.K. THIS TIME #
  404. ELSE
  405. BEGIN # NOT O.K. #
  406. IF DONE
  407. THEN # WORKLIST DIDNOT GET SUSPENDED #
  408. BEGIN
  409. # UNABLE TO SWITCH FILE TO SLAVE, RETURN FILE BACK TO MASTER #
  410. # RESPONSE FNT/IFL/A WITH REASON CODE IS PUT ERROR. #
  411. SWFTOAP(SEND$ACB,REASON) ; # AT NIP C.P., SEND IT BACK TO #
  412. # MASTER #
  413. IF REASON NQ 0
  414. THEN
  415. BEGIN
  416. CIORETF(SEND$ACB) ; # NO WAY TO RETURN FILE TO MST #
  417. REASON = RFL"RERR" ; # DO CIO RETURN IT #
  418. END
  419. ELSE
  420. # FILE WENT BACK TO MASTER O.K. #
  421. REASON = RFL"PERR" ; # ERROR IN PUTTING FILE TO SLAVE #
  422.  
  423. DONE = TRUE ; # WORKLIST IS COMPLETED #
  424. CREATB ; # GET BUFFER TO SEND FNT/IFL/A TO MASTER#
  425. PFCSFC[0] = FNTIFLA ; # SEND FNT/IFL/A TO MASTER #
  426. RC[0] = REASON ;
  427. FNTFNTO[0] = ACBFORDNAL[SEND$ACB] ;
  428. BLINK(BUFADDR,SEND$ACB) ; # LINK IT TO ACB OF MASTER #
  429. CLEARFNT = TRUE ;
  430. END # NOT O.K. #
  431. ELSE # IF WL BEEN SUSPENDED, NO STATE #
  432. NEWSTATE[0] = CURST ; # CHANGED. WL WILL BE RE-PROCESSED #
  433. END
  434.  
  435. GOTO FEND ;
  436. RSFM: # SWITCH FILE TO MASTER APPLICATION #
  437. # FNT/IAR/R OR FNT/IFR/R GET REPROCESSED #
  438. # FILE NEEDS TO BE SENT TO MASTER #
  439. PTNR$ACB = ATACBA[ACBPTNRAN[SEND$ACB]] ; # ACB OF SLAVE #
  440. SWFTOAP(SEND$ACB,REASON) ; # SWITCH FILE TO MASTER #
  441.  
  442. IF REASON EQ 0
  443. THEN
  444. BEGIN # EVERYTHING WENT O.K. THIS TIME #
  445. # UPDATE ACB FOR SLAVE #
  446. CREATB ; # GET BUFFER FOR FNT/NORMAL RESPONSE #
  447. PFCSFC[0] = CURPFCSFC ;
  448. RB[0] = TRUE ; # SET THE NORMAL RESPONSE BIT #
  449. FNTFNTO[0] = ACBFORDNAL[SEND$ACB] ;
  450. BLINK(BUFADDR,SEND$ACB) ; # LINK IT TO SLAVE #
  451. IF PFCSFC[0] EQ FNTIFRN
  452. THEN
  453. BEGIN
  454. NEWSTATE[0] = FNTIDLE ; # READY FOR ANOTHER FILE #
  455. ACBFNTW1 [SEND$ACB] = 0 ; # CLEAR THE FILE NAME/ORDINAL #
  456. ACBMREQABT[SEND$ACB] = FALSE ; # CLEAR MASTER REQUEST ABT #
  457. ACBFNTW1 [PTNR$ACB] = 0 ; # CLEAR THE FILE NAME/ORDINAL #
  458. ACBMREQABT[PTNR$ACB] = FALSE ; # CLEAR MASTER REQUEST ABT #
  459. END
  460. ELSE
  461. CLEARFNT = TRUE ; # IT IS FNT/IAR/N, CLEAR INFORMA#
  462. END # EVERYTHING WENT O.K. THIS TIME #
  463. ELSE
  464. BEGIN # NOT O.K. #
  465. IF DONE
  466. THEN # WORKLIST DIDNOT GET SUSPENDED #
  467. BEGIN
  468. CIORETF(SEND$ACB) ; # RETURN FILE TO CIO #
  469. CREATB ; # GET BUFFER TO SEND ABNORMAL TO MASTER #
  470. PFCSFC[0] = CURPFCSFC ; # SEND FNT/IAR/A OR FNT/IFR/A TO MS#
  471. EB[0] = TRUE ; # SET THE ABNORMAL BIT #
  472. FNTFNTO[0] = ACBFORDNAL[SEND$ACB] ;
  473. RC[0] = RFL"RERR" ; # COULD NOT PUT FILE BACK TO MST#
  474. BLINK(BUFADDR,SEND$ACB) ; # LINK IT TO ACB OF MASTER #
  475. CLEARFNT = TRUE ;
  476. END # NOT O.K. #
  477. ELSE
  478. NEWSTATE[0] = CURST ; # NO STATE CHANGED, WL SUSPENDED#
  479. END
  480.  
  481. GOTO FEND ;
  482. SMRA: # MASTER SENDS FNT/IAR/R TO REQUEST #
  483. # SLAVE APPL. NETOFF. #
  484.  
  485. PTNR$ACB = ATACBA[ACBPTNRAN[SEND$ACB]] ; # ACB OF PARTNER #
  486.  
  487. ACBSLVGONE[SEND$ACB] = FALSE ; # CLEAR SLAVE IS GONE FLAG #
  488. ACBIARRC [SEND$ACB] = 0 ; # CLEAR REASON CODE FIELD #
  489.  
  490. ACBMREQABT[PTNR$ACB] = TRUE ; # SET MASTER REQUEST SLAVE TO ABORT#
  491. # FLAG IN SLAVE ACB #
  492. ATASBI[ACBAN[SEND$ACB]] = TRUE ; # FORCE THIS TO T #
  493. ATASBS[ACBAN[SEND$ACB]] = TRUE ; # SET SWAP OUT BIT#
  494. DONE = FALSE ; # SUSPEND TO PROCESS WL FOR MASTER #
  495.  
  496. GOTO FEND ;
  497. CIOR:
  498. PTNR$ACB = ATACBA[ACBPTNRAN[SEND$ACB]] ; # ACB OF PARTNER #
  499.  
  500. CIORETF(SEND$ACB) ; # DO CIO RETURN ON FILE, FILE AT NIP #
  501. GOTO FEND ;
  502.  
  503. SFTN: # SLAVE NETTING OFF, SWITCH FILE TO #
  504. # NIP #
  505.  
  506. PTNR$ACB = ATACBA[ACBPTNRAN[SEND$ACB]] ; # ACB OF PARTNER #
  507. SWFTON(SEND$ACB,REASON) ;
  508. ACBSLVGONE[PTNR$ACB] = TRUE ; # SLAVE IS GONE FLAG TO TRUE #
  509. IF REASON NQ 0
  510. THEN
  511. BEGIN # SST REQUEST WAS NO O.K. #
  512. NEWSTATE[0] = FNTLOST ; # CHANGE TO STATE 5, INSTEAD 4 #
  513. DONE = TRUE ; # WORKLIST COMPLETED #
  514. END
  515. ELSE
  516. BEGIN # FILE IS AT NIP CP #
  517. ACBFNTANIP[PTNR$ACB] = TRUE ; # SET FILE IS AT NIP FLAG #
  518. ACBIARRC [PTNR$ACB] = 0 ;
  519. END # FILE IS AT NIP CP #
  520.  
  521. GOTO FEND ;
  522.  
  523. SOFM: # SLAVE NETOFF AFTER MASTER REQUEST SLAVE #
  524. # TO NETOFF IA FNT/IAR/R (PROCESS BY SMRA)#
  525. # SWITCH FILE FROM SLAVE TO NIP THEN TO #
  526. # MASTER, AND SEND FNT/IAR/N #
  527. PTNR$ACB = ATACBA[ACBPTNRAN[SEND$ACB]] ; # ACB OF MASTER #
  528. SWFTON(SEND$ACB,REASON) ; # SWITCH FILE FROM SLAVE TO NIP #
  529. ACBSLVGONE[PTNR$ACB] = TRUE ; # SLAVE IS GONE NOW IN MASTER #
  530. IF REASON NQ 0
  531. THEN
  532. ACBIARRC[PTNR$ACB] = RFL"RERR" ; # RETURN ERROR REASON CODE#
  533. ELSE
  534. BEGIN
  535. ACBIARRC [PTNR$ACB] = 0 ;
  536. ACBFNTANIP[PTNR$ACB] = TRUE ; # SET FILE IS AT NIP FLAG #
  537. END
  538. DONE = TRUE ; # SLAVE WL COMPLETED #
  539.  
  540. GOTO FEND ;
  541.  
  542. PABT: # PARTNER APPLICATION ABORTED #
  543. PTNR$ACB = ATACBA[ACBPTNRAN[SEND$ACB]] ; # ACB OF PARTNER #
  544. CLEARFNT = TRUE ;
  545.  
  546. GOTO FEND ;
  547. SDXA: # MASTER OR SLAVE ABORTED BEFORE #
  548. # FNT/DMS/R OR FNT/DSM/R RECEIVED #
  549. CREATB ; # GET BUFFER FOR ABNORMAL S.M. #
  550. PFCSFC[0] = CURPFCSFC ;
  551. EB[0] = TRUE ; # MAKE THIS IS AN ABNORMAL S.M. #
  552. RC[0] = MSR"UNA" ; # RC = PARTNER UNAVAILABLE #
  553. CLEARFNT = TRUE ;
  554. BLINK(BUFADDR,SEND$ACB) ; # SEND IT TO SENDING APPL. #
  555. GOTO FEND ;
  556.  
  557. RIAR: # RE-PROCESS FNT/IAR/R TO SWITCH FILE#
  558. # FROM NIP C.P. TO MASTER #
  559. IF ACBSLVGONE[SEND$ACB]
  560. THEN
  561. BEGIN # SLAVE IS GONE NOW, FILE MAY BE AT #
  562. IF ACBIARRC[SEND$ACB] EQ 0 # NIP CONTROL POINT #
  563. THEN
  564. BEGIN # FILE IS AT NIP CP, SWITCH IT TO MASTER#
  565. SWFTOAP(SEND$ACB,REASON) ; # SWITCH FILE TO MASTER #
  566. IF REASON NQ 0
  567. THEN # FILE STILL AT NP CP. RETURN IT #
  568. CIORETF(SEND$ACB) ; # CAN NOT PUT THE FILE BACK TO MASTER#
  569. END
  570. ELSE
  571. REASON = ACBIARRC[SEND$ACB] ;
  572.  
  573. DONE = TRUE ; # FORCE IT TO BE DONE #
  574. CREATB ; # GET BUFFER FOR FNT/IAR/N OR FNT/IAR/A #
  575. IF REASON NQ 0
  576. THEN
  577. BEGIN
  578. PFCSFC[0] = FNTIARA ; # SEND FNT/IAR/A WITH RC = RERR #
  579. RC[0] = RFL"RERR" ; # ERROR OCCURED IN RETURNNING FILE #
  580. END
  581. ELSE
  582. BEGIN
  583. PFCSFC[0] = FNTIARN ;
  584. END
  585.  
  586. CLEARFNT = TRUE ; # CLEAR ALL FNT RELATED INFORMATIONS #
  587.  
  588. FNTFNTO[0] = ACBFORDNAL[SEND$ACB] ;
  589. BLINK(BUFADDR,SEND$ACB) ; # LINK THIS SM TO MASTER ACB #
  590. END
  591. ELSE
  592. BEGIN # CONTINUE TO SUSPEND THIS WL TIL SLV#
  593. DONE = FALSE ; # IS GONE #
  594. ATASBI[ACBAN[SEND$ACB]] = TRUE ; # FORCE THIS TO T #
  595. ATASBS[ACBAN[SEND$ACB]] = TRUE ; # SET SWAP OUT BIT#
  596. NEWSTATE[0] = CURST ; # STAY AT THE SAME STATE #
  597. END
  598.  
  599. GOTO FEND ;
  600.  
  601. SBIM: # SET BITS IN MASTER TO HAVE FNT/IAR #
  602. # WL REPROCESSED #
  603.  
  604. DONE = FALSE ; # CONTINUE TO SUSPEND THIS WL UNTIL #
  605. # SLAVE IS GONE #
  606. ATASBI[ACBAN[SEND$ACB]] = TRUE ; # FORCE THIS TO T #
  607. ATASBS[ACBAN[SEND$ACB]] = TRUE ; # SET SWAP OUT BIT#
  608.  
  609. GOTO FEND ;
  610.  
  611. IMSA: # INFORM MASTER SLAVE ABORTED I.E. SET #
  612. # FLAGS AND REASON ODE IN MASTER ACB #
  613. PTNR$ACB = ATACBA[ACBPTNRAN[SEND$ACB]] ; # ACB OF MASTER #
  614. ACBSLVGONE[PTNR$ACB] = TRUE ; # SLAVE IS GONE NOW IN MASTER #
  615. ACBIARRC[PTNR$ACB] = RFL"RERR" ; # RETURN ERROR REASON CODE#
  616.  
  617. GOTO FEND ;
  618. SPAP: # SET PARTNER AB ADDRESS POINTER #
  619.  
  620. PTNR$ACB = ATACBA[ACBPTNRAN[SEND$ACB]] ; # ACB OF MASTER #
  621. GOTO FEND ;
  622. RFWE: # RETURN FILE WITH ERROR, BEFORE OR DURING#
  623. # PROCESSING FNT/ILF/R, SLAVE ABORTED, #
  624. # RETURN IFL/A RC=PERR AND RETURN FILE TO #
  625. # MASTER IF FILE IS ALREADY AT NIP CP. #
  626. IF ACBFNTANIP[SEND$ACB]
  627. THEN
  628. BEGIN # FILE IS AT NIP CP #
  629. SWFTOAP(SEND$ACB,REASON) ; # SWITCH FILE TO MASTER #
  630. IF REASON NQ 0
  631. THEN
  632. BEGIN # CAN NOT SEND FILE BACK TO MASTER, CIO IT#
  633. CIORETF(SEND$ACB) ;
  634. END
  635. END # FILE IS AT NIP CP #
  636. CREATB ; # GET BUFFER FOR ABNORMAL S.M. #
  637. PFCSFC[0] = FNTIFLA ;
  638. RC[0] = RFL"PERR" ; # RC = PARTNER UNAVAILABLE #
  639. FNTFNTO[0] = ACBFORDNAL[SEND$ACB] ;
  640. BLINK(BUFADDR,SEND$ACB) ; # SEND IT TO SENDING APPL. #
  641. CLEARFNT = TRUE ;
  642. GOTO FEND ;
  643.  
  644. ABRF: # ABNORMAL RSP RETURN FILE. BEFORE OR DUR-#
  645. # ING PROCESSING FNT/ILR/R, SLAVE ABORTED,#
  646. # RETURN IFR/A RC=RERR AND RETURN FILE TO #
  647. # MASTER IF FILE IS ALREADY AT NIP CP. #
  648. CREATB ; # GET BUFFER FOR ABNORMAL S.M. #
  649. IF ACBFNTANIP[SEND$ACB]
  650. THEN
  651. BEGIN # FILE IS AT NIP CP #
  652. SWFTOAP(SEND$ACB,REASON) ; # SWITCH FILE TO MASTER #
  653. IF REASON NQ 0
  654. THEN
  655. BEGIN # CAN NOT SEND FILE BACK TO MASTER, CIO IT#
  656. CIORETF(SEND$ACB) ;
  657. PFCSFC[0] = FNTIFRA ;
  658. RC [0] = RFL"RERR" ; # NO FILE BACK TO MASTER #
  659. END
  660. ELSE
  661. BEGIN # FILE WENT BACK TO MASTER OK #
  662. PFCSFC[0] = FNTIFRN ;
  663. END # FILE WENT BACK TO MASTER OK #
  664. END # FILE IS AT NIP CP #
  665. ELSE
  666. BEGIN # FILE IS NOT AT NIP #
  667. PFCSFC[0] = FNTIFRA ;
  668. RC[0] = RFL"RERR" ;
  669. END
  670. FNTFNTO[0] = ACBFORDNAL[SEND$ACB] ;
  671. BLINK(BUFADDR,SEND$ACB) ; # SEND IT TO SENDING APPL. #
  672. CLEARFNT = TRUE ;
  673. GOTO FEND ;
  674.  
  675. FEND:
  676.  
  677. IF CLEARFNT
  678. THEN
  679. BEGIN # CLEAR ALL FNT WORD IN ACB'S #
  680. ACBFNTW0[SEND$ACB] = 0 ;
  681. ACBFNTW1[SEND$ACB] = 0 ;
  682. IF PTNR$ACB NQ 0
  683. THEN
  684. BEGIN # ACB OF PARTNER APPLICATION #
  685. ACBFNTW0[PTNR$ACB] = 0 ;
  686. ACBFNTW1[PTNR$ACB] = 0 ;
  687. END
  688. END
  689. ELSE
  690. BEGIN
  691. # UPDATE STATE/TRIGGER FOR SENDING AP#
  692. ACBFNTLST[SEND$ACB] = ACBFNTST[SEND$ACB] ;
  693. ACBFNTLTR[SEND$ACB] = ACBFNTCTR[SEND$ACB] ;
  694. ACBFNTST [SEND$ACB] = NEWSTATE[0] ;
  695. ACBFNTCTR[SEND$ACB] = PARAMS1 ;
  696. # UPDATE STATE/TRIGGER FOR PARTNER AP#
  697. IF PTNR$ACB NQ 0
  698. THEN
  699. BEGIN
  700. ACBFNTLST[PTNR$ACB] = ACBFNTST[SEND$ACB] ;
  701. ACBFNTLTR[PTNR$ACB] = ACBFNTCTR[SEND$ACB] ;
  702. ACBFNTST [PTNR$ACB] = NEWSTATE[0] ;
  703. ACBFNTCTR[PTNR$ACB] = PARAMS1 ;
  704. END
  705. END
  706.  
  707. GOTO RJMAIN ;
  708.  
  709. END # LEGAL TRIGGER #
  710. ELSE
  711. BEGIN # ILLEGAL TRIGGER #
  712. ILL$MASTER[0] = ACBJOBSQN[SEND$ACB] ;
  713. IF PTNR$ACB NQ 0
  714. THEN
  715. ILL$SLAVE [0] = ACBJOBSQN[PTNR$ACB] ;
  716. ELSE
  717. ILL$SLAVE [0] = " " ;
  718. SCRATCH = XCDD(TRIGGER) ; # CONVERT TRIGGER NUM TO DISPLAY #
  719. ILL$MSG$TR[0] = C<8,2> SCRATCH ;
  720. SCRATCH = XCDD(CURST) ; # CONVERT STATE NUM TO DISPLAY #
  721. ILL$MSG$ST[0] = C<8,2> SCRATCH ;
  722. OMSG (ILL$TRG$MSG,0) ;
  723. IF PARAMS3 NQ 0
  724. THEN
  725. BEGIN
  726. CREATB ; # GET BUFFER FOR THE RESPONSE SM#
  727. PFCSFC[0] = CURPFCSFC ;
  728. RC[0] = RFL"ILSQ" ;
  729. EB[0] = TRUE ; # AB-NORMAL RESPONSE #
  730. BLINK(BUFADDR,SEND$ACB) ; # SEND MESSAGE TO APPLICATION #
  731. END
  732. GOTO RJMAIN ;
  733. END # ILLEGAL TRIGGERS #
  734.  
  735.  
  736. CONTROL EJECT;
  737.  
  738.  
  739. PROC SWFTON(ACBD,REASON) ;
  740. #
  741.   SWITCH FILE FROM APPLICATION CONTROL POINT TO NIP CONTROL POINT
  742. #
  743.  
  744. ITEM ACBD U ; # ACB ADDRESS #
  745. ITEM PTNR U ; # ACB OF PARTNER #
  746. ITEM REASON U ; # REASON CODE RETURNED #
  747.  
  748. BEGIN # SWITCH FILE TO NIP C.P. #
  749. SSTPARAM[0] = 0; # CLEAR SST PARAMETER WORD #
  750. SSTFNTS[0] = ACBFORDNAL[ACBD] ; # FILE ORDINAL #
  751. SSTFC[0] = SSTSQFFUCP; # SST FUNCTION CODE #
  752. SSTJOBID[0] = ACBJNWD[ACBD] ; # ADD JOB IDENTIFICATION #
  753. SSTPADDR[0] = LOC(SSTPARAM[0]); # FWA OF SST PARAMETER BLOCK#
  754.  
  755.  
  756. OSREQ(SSTCALL[0]); # ISSUE SST RA+1 CALL #
  757.  
  758. REASON = SSTRC[0]; # SST COMPLETION STATUS #
  759. PTNR = ATACBA[ACBPTNRAN[ACBD]] ; # ACB OF PARTNER #
  760.  
  761. IF REASON NQ 0
  762. THEN # SST ERROR PROCESSING #
  763. BEGIN
  764. INDEX = REASON/8;
  765. D14M2[0] = INDEX*O"100" + REASON - INDEX*8 + O"3333";
  766. D14M3[0] = SSTJSN[0];
  767. OMSG(DFMSG14,0); # DAYFILE SST RETURN STATUS #
  768.  
  769. IF REASON EQ RC$UCPSO OR # APP SWAPPED OUT BY OS #
  770. REASON EQ RC$UCPNF # APP FAILED #
  771. THEN
  772. BEGIN
  773.  
  774. IF REASON EQ RC$UCPSO
  775. THEN # RESUME HOST WORKLIST PROC #
  776. BEGIN # WHEN APP IS SWAPPED BACK IN #
  777. IF ACBFNTMAS[ACBD] # THIS IS THE MASTER #
  778. THEN
  779. BEGIN
  780. ATASBS[ACBAN[ACBD]] = TRUE; # APP SWAPPED OUT #
  781. ATASBI[ACBAN[ACBD]] = TRUE ; # FORCE THIS TO T #
  782. END
  783. ELSE
  784. BEGIN
  785. ATASBS[ACBAN[PTNR]] = TRUE; # APP SWAPPED OUT #
  786. ATASBI[ACBAN[PTNR]] = TRUE ; # FORCE THIS TO T #
  787. END
  788.  
  789. OSCHAPP(ACBD) ; # SCHEDULE APPLICATION #
  790. END
  791. DONE = FALSE ; # SUSPEND THE WORKLIST PROCESSING #
  792. END
  793. END
  794. ELSE
  795. BEGIN # FILE SWITCHING WENT O.K. #
  796. ACBFORDNAL[ACBD] = SSTFNTR[0] ; # UPDATE THE ORDINAL OF FILE #
  797. ACBFORDNAL[PTNR] = SSTFNTR[0] ;
  798. END
  799.  
  800. RETURN ;
  801. END
  802.  
  803. CONTROL EJECT ;
  804.  
  805. PROC CIORETF(ACBD) ; # ISSUE CIO (070) RETURN FILE #
  806. ITEM ACBD U ; # ACB ADDRESS #
  807. BEGIN # RETFILE #
  808.  
  809. P<DRHDRWD> = LOC(RELBUFF) ;
  810. P<PARAMB> = P<DRHDRWD> + BLKHSIZE ;
  811. RELBID = CPCRIDVALUE ;
  812. RELBBS = PARSIZE + BLKHSIZE ;
  813. # PARAMETER BLOCK ADDRESS #
  814. FET$LFN [0] = ACBFNTFILE [ACBD]; # LOCAL FILE NAME #
  815. REQWORD [0] = 0; # ZERO PP CALL WORD #
  816. PADDR [0] = P<PARAMB>;
  817. PPNAME [0] = PP$CIO;
  818. FET$STAT [0] = CIORETURN; # CIO FUNCTION REQUEST CODE #
  819. FET$UP [0] = TRUE; # SET USER PROCESSING FLAG #
  820. FET$EP [0] = TRUE; # SET ERROR PROCESSING FLAG #
  821. FET$CIOFNT[0] = ACBFORDNAL[ACBD] ;
  822.  
  823. OSREQ(REQWORD[0]) ; # ISSUE THE OS CALL #
  824. RETURN ;
  825. END
  826.  
  827. CONTROL EJECT ;
  828.  
  829. PROC SWFTOAP(ACBD,REASON) ;
  830. #
  831.   SWITCH FILE FROM NIP CONTROL POINT TO APPLICATION CONTROL POINT
  832. #
  833.  
  834. ITEM ACBD U ; # ACB ADDRESS #
  835. ITEM PTNR U ; # ACB OF PARTNER #
  836. ITEM FNTORD U ; # ORDINAL OF FILE #
  837. ITEM INDEX ;
  838. ITEM REASON U ; # REASON CODE RETURNED #
  839.  
  840.  
  841. BEGIN # BEGIN OF SWFTOAP #
  842.  
  843. SSTPARAM[0] = 0; # CLEAR SST PARAMETER WORD #
  844. SSTFNTS [0] = ACBFORDNAL[ACBD] ; # FILE-S FNT ORDINAL IN NAM #
  845. SSTFC [0] = SSTSQFTUCP; # SST FUNCTION CODE #
  846. SSTJOBID[0] = ACBJNWD[ACBD] ; # APP JOB IDENTIFICATION #
  847. SSTPADDR[0] = LOC(SSTPARAM[0]); # FWA OF SST PARAMETER BLOCK #
  848.  
  849.  
  850. # IF ATASBSO[ACBAN[ACBD]] # # APPLICATION SWAPPED OUT #
  851. # THEN #
  852. # BEGIN #
  853. # REASON = RC$UCPSO # # NO NEED TO ISSUE SST CALL #
  854. # END #
  855. # ELSE #
  856. BEGIN
  857. OSREQ(SSTCALL[0]); # ISSUE SST RA+1 CALL #
  858. REASON = SSTRC[0]; # SST COMPLETION STATUS #
  859. END
  860.  
  861. PTNR = ATACBA[ACBPTNRAN[ACBD]] ;
  862.  
  863. IF REASON NQ 0
  864. THEN # SST ERROR PROCESSING #
  865. BEGIN
  866. INDEX = REASON/8;
  867. D14M2[0] = INDEX*O"100" + REASON - INDEX*8 + O"3333";
  868. D14M3[0] = SSTJSN[0];
  869. OMSG(DFMSG14,0); # DAYFILE SST RETURN STATUS #
  870.  
  871. IF REASON EQ RC$UCPSO OR # APP SWAPPED OUT BY OS #
  872. REASON EQ RC$UCPNF # APP FAILED #
  873. THEN
  874. BEGIN
  875. IF REASON EQ RC$UCPSO
  876. THEN # RESUME HOST WORKLIST PROC #
  877. BEGIN # WHEN APP IS SWAPPED BACK IN #
  878. IF ACBFNTMAS[ACBD] # THIS IS THE MASTER #
  879. THEN
  880. BEGIN
  881. ATASBS[ACBAN[ACBD]] = TRUE; # APP SWAPPED OUT #
  882. ATASBI[ACBAN[ACBD]] = TRUE ; # FORCE THIS TO T #
  883. END
  884. ELSE
  885. BEGIN
  886. ATASBS[ACBAN[PTNR]] = TRUE; # APP SWAPPED OUT #
  887. ATASBI[ACBAN[PTNR]] = TRUE ; # FORCE THIS TO T #
  888. END
  889.  
  890. OSCHAPP(ACBD) ; # SCHEDULE APPLICATION #
  891. END
  892. ELSE
  893. FAILADR = ACBD ; # APPLICATION-S ACB ADDRESS #
  894. DONE = FALSE ; # SUSPEND THE WORKLIST PROCESSING #
  895. END
  896. END
  897. ELSE
  898. BEGIN # FILE SWITCHING WENT O.K. #
  899. ACBFORDNAL[ACBD] = SSTFNTR[0] ; # UPDATE THE ORDINAL IN APP1 #
  900. ACBFORDNAL[PTNR] = SSTFNTR[0] ; # UPDATE THE ORDINAL IN APP2 #
  901. END
  902.  
  903. RETURN ;
  904.  
  905. END
  906.  
  907. CONTROL EJECT;
  908.  
  909.  
  910. PROC CREATB ;
  911. BEGIN # CREATB #
  912. MGETS(LFNTRSP+BLKHSIZE+ABHSIZE,BUFADDR,TRUE) ; # GET BUFFER FOR#
  913. # RESPONSE S.M. #
  914. P<AHEADER> = BUFADDR + BLKHSIZE ;
  915. ABHABT [0] = APPCMD ;
  916. ABHACT [0] = CT60TRANS ;
  917. ABHTLC [0] = LFNTRSP ;
  918. P<SUPMSG> = P<AHEADER> + ABHSIZE ;
  919.  
  920. RETURN ;
  921. END # CREATB #
  922. END
  923. TERM
cdc/nos2.source/nam5871/hfntsm.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator