User Tools

Site Tools


ibm:vm370-lib:rscs:dmtaxs.assemble_src

DMTAXS Source

References

Source Listing

DMTAXS.ASSEMBLE.txt
  1. AXS TITLE 'DMTAXS (RSCS) VM/370 - RELEASE 6' 00001000
  2. *. 00002000
  3. * MODULE NAME - 00003000
  4. * 00004000
  5. * DMTAXS 00005000
  6. * 00006000
  7. * FUNCTION - 00007000
  8. * 00008000
  9. * THIS RSCS TASK CONTROL THE INTERFACE OF THE LINE DRIVERS 00009000
  10. * TO THE VM/370 SPOOL FILE SYSTEM, ENQUEUES FILES FOR 00010000
  11. * TRANSMISSION AND PROCESSES COMMANDS ORIENTED TOWARDS 00011000
  12. * SPOOL FILE MANIPULATION. 00012000
  13. * 00013000
  14. * ATTRIBUTES - 00014000
  15. * 00015000
  16. * REUSABLE 00016000
  17. * 00017000
  18. * ENTRY POINTS - 00018000
  19. * 00019000
  20. * DMTAXS - AT TASK INITIATION TIME 00020000
  21. * 00021000
  22. * ENTRY CONDITIONS - 00022000
  23. * 00023000
  24. * R15 = ENTRY ADDRESS 00024000
  25. * 00025000
  26. * EXIT CONDITIONS - 00026000
  27. * 00027000
  28. * NORMAL - THIS TASK IS ALWAYS ACTIVE 00028000
  29. * ERROR - THIS TASK IS ALWAYS ACTIVE 00029000
  30. * 00030000
  31. EJECT 00031000
  32. * 00032000
  33. * CALLS TO OTHER ROUTINES - 00033000
  34. * 00034000
  35. * SEE ENTRY TO EACH SUBROUTINE 00035000
  36. * 00036000
  37. * EXTERNAL REFERENCES - 00037000
  38. * 00038000
  39. * SEE ENTRY TO EACH SUBROUTINE 00039000
  40. * 00040000
  41. * TABLES / WORKAREAS - 00041000
  42. * 00042000
  43. * TAGAREA - EXTERNAL REFERENCE TO TAG CHAIN 00043000
  44. * 00044000
  45. * 00045000
  46. * REGISTER USAGE - 00046000
  47. * 00047000
  48. * ALL SUBROUTINES IN THE MODULE CONFORM GENERALLY TO THIS USAGE; 00048000
  49. * ANY INDIVIDUAL DEVIATIONS OR EXTENSIONS ARE LISTED WITH THE 00049000
  50. * COMMAND DESCRIPTION 00050000
  51. * 00051000
  52. * GPR0 = PARAMETER REGISTER 00052000
  53. * GPR1 = PARAMETER REGISTER 00053000
  54. * GPR2 = TAG ADDRESSABILTIY 00054000
  55. * GPR3 = WORK 00055000
  56. * GPR4 = WORK 00056000
  57. * GPR5 = WORK 00057000
  58. * GPR6 = WORK 00058000
  59. * GPR7 = IOTABLE ADDRESSABILITY 00059000
  60. * GPR8 = LINK TABLE ADDRESSABILITY 00060000
  61. * GPR9 = TAGAREA ADDRESSABILITY 00061000
  62. * GPR10 = BASE 00062000
  63. * GPR11 = BASE 00063000
  64. * GPR12 = BASE 00064000
  65. * GPR13 = TASK SAVE AREA ADDRESSING 00065000
  66. * GPR14 = RETURN REGISTER 00066000
  67. * GPR15 = COMMON ROUTINE VECTOR ADDRESSABILITY 00067000
  68. * 00068000
  69. * NOTES - 00069000
  70. * 00070000
  71. * NONE 00071000
  72. * 00072000
  73. * OPERATION - 00073000
  74. * 00074000
  75. * SEE EACH SUBROUTINE 00075000
  76. * 00076000
  77. *. 00077000
  78. EJECT 00078000
  79. DMTAXS CSECT 00079000
  80. AXSSAVE DC 0D'0' BEGINNING OF MONITOR SAVE AREA 00080000
  81. SPACE 00081000
  82. AXSPSW DC X'FF04',AL2(0),A(AXSINIT) INITIAL PSW FOR DISPATCH 00082000
  83. SPACE 00083000
  84. AXSREG0 DC F'0' INITIAL REGISTER CONTENTS 00084000
  85. AXSREG1 DC F'0' 00085000
  86. AXSREG2 DC F'0' 00086000
  87. AXSREG3 DC F'0' 00087000
  88. AXSREG4 DC F'0' 00088000
  89. AXSREG5 DC F'0' 00089000
  90. AXSREG6 DC F'0' 00090000
  91. AXSREG7 DC F'0' 00091000
  92. AXSREG8 DC F'0' 00092000
  93. AXSREG9 DC F'0' TAG CONTROL AREA BASE REG 00093000
  94. AXSREG10 DC A(DMTAXS+X'2000') THIRD PAGE BASE REG 00094000
  95. AXSREG11 DC A(DMTAXS+X'1000') SECOND PAGE BASE REG 00095000
  96. AXSREG12 DC A(DMTAXS) FIRST PAGE BASE REG 00096000
  97. AXSREG13 DC F'0' 00097000
  98. AXSREG14 DC F'0' 00098000
  99. AXSREG15 DC A(AXSINIT) ENTRY ADDRESS AT INITIATION 00099000
  100. SPACE 00100000
  101. REQLOCK DC F'0' SYNCH LOCK FOR REQUEST ARRIVAL 00101000
  102. SPACE 3 00102000
  103. F3 DC F'3' 00103000
  104. F4 DC F'4' 00104000
  105. F7 DC F'7' 00105000
  106. F8 DC F'8' 00106000
  107. F60 DC F'60' 00107000
  108. F100 DC F'100' 00108000
  109. F300 DC F'300' 00109000
  110. F86400 DC F'86400' NUMBER OF SECONDS IN A DAY (60*60*24) 00110000
  111. F500000 DC F'500000' NUMBER OF MICROSECONDS IN A HALF-SECOND 00111000
  112. F1000000 DC F'1000000' NUMBER OF MICROSECONDS IN A SECOND 00112000
  113. SPACE 00113000
  114. PL8ZERO DC PL8'0' 00114000
  115. EJECT 00115000
  116. *. 00116000
  117. * 00117000
  118. * ENTRY NAME - 00118000
  119. * 00119000
  120. * AXSINIT 00120000
  121. * 00121000
  122. * FUNCTION - 00122000
  123. * 00123000
  124. * THIS PERFORMS THE INITIALIZATION THE AXS 00124000
  125. * TASK. 00125000
  126. * 00126000
  127. * CALLS TO OTHER ROUTINES - 00127000
  128. * 00128000
  129. * DMTASY - TO SET AN ASYNCH EXIT FOR THE ALL CLASS RDR 00129000
  130. * 00130000
  131. * OPERATION - 00131000
  132. * 00132000
  133. * 1. INITIALLY SCANS THE TAG QUEUE AND COUNTS THE NUMBER 00133000
  134. * RESERVED SLOTS AND FREE SLOTS. 00134000
  135. * 00135000
  136. * 2. SET THE ASYNCHRONOUS EXIT FOR THE ALL CLASS RDR 00136000
  137. * 00137000
  138. * 00138000
  139. * RESPONSES - 00139000
  140. * 00140000
  141. * NONE 00141000
  142. * 00142000
  143. * ERROR MESSAGES - 00143000
  144. * 00144000
  145. * NONE 00145000
  146. * 00146000
  147. *. 00147000
  148. SPACE 2 00148000
  149. AXSINIT DC 0H'0' SET ALIGNMENT FOR START OF CODE 00149000
  150. SPACE 00150000
  151. USING SVECTORS,0 GET SVECTORS ADDRESSABILITY 00151000
  152. USING DMTAXS,R12 DEFINE FIRST PAGE ADDRESSABILITY 00152000
  153. USING DMTAXS+X'1000',R11 DEFINE SECOND PAGE ADDRESSABILITY 00153000
  154. USING DMTAXS+X'2000',R10 DEFINE THIRD PAGE ADDRESSABILITY 00154000
  155. USING TAGAREA,R9 DEFINE TAG AREA ADDRESSABILITY 00155000
  156. USING TAG,R2 GET TAG ADDRESSABILITY 00156000
  157. USING IOTABLE,R7 GET IOTABLE ADDRESSABILITY 00157000
  158. USING LINKTABL,R8 GET LINKTABL ADDRESSABILITY 00158000
  159. USING COMDSECT,R15 GET COMMON ROUTINE ADDRESSABILTIY 00159000
  160. SPACE 00160000
  161. L R9,TTAGQ INITIALIZE TAG CONTROL BASE 00161000
  162. SPACE 00162000
  163. SR R0,R0 CLEAR HOLD COUNT ACCUMULATION REG 00163000
  164. L R15,TLINKS GET START OF LINKTABLE CHAIN 00164000
  165. LA R8,8(R15) AND THE START OF THE LINK TABLE ENTR 00165000
  166. L R15,0(R15) AND THE NUMBER OF ENTRIES 00166000
  167. EJECT 00167000
  168. AXSIHOLD EQU * 00168000
  169. AH R0,LRESERVD ADD IN THE HOLD COUNT FOR THIS ENTRY 00169000
  170. LA R8,LINKLEN(R8) POINT TO THE NEXT ENTRY 00170000
  171. BCT R15,AXSIHOLD AND PROCESS IT 00171000
  172. AXSIHSET EQU * 00172000
  173. STH R0,TAGAHOLD SET THE TOTAL SLOTS TO BE HELD 00173000
  174. SPACE 00174000
  175. SR R1,R1 CLEAR THE FREE TAG COUNTER REGISTER 00175000
  176. L R2,TAGAFREE INIT THE TAG SLOT QUEUE SCANNING REG 00176000
  177. AXSIGOT EQU * 00177000
  178. LTR R2,R2 END OF THE FREE TAG QUEUE? 00178000
  179. BZ AXSIGSET YEP-STORE THE FREE TAG COUNT AND CON 00179000
  180. LA R1,1(R1) BUMP THE COUNT UP ONE FOR THIS TAG 00180000
  181. L R2,TAGNEXT R2=ADDR OF THE NEXT FREE TAG SLOT 00181000
  182. B AXSIGOT AND KEEP SEARCHING FOR THE END 00182000
  183. AXSIGSET EQU * 00183000
  184. STH R1,TAGAGOT INITIALIZE THE FREE TAG SLOT COUNT 00184000
  185. SPACE 00185000
  186. SR R0,R0 CLEAR R0 TO IND TASK ASYN EXIT REQ 00186000
  187. LA R1,AXSALERT R1=TASK ASYNCH ALERT EXIT ADDRESS 00187000
  188. L R15,ASYNREQ R15=ENTRY ADDRESS FOR ASYN EXIT SET 00188000
  189. BALR R14,R15 REQUEST EXIT FOR TASK ASYNCH ALERTS 00189000
  190. SPACE 00190000
  191. LA R1,X'001' R1=ADDR FOR READER TO RECEIVE IRRPTS 00191000
  192. BAL R14,DETACH DETACH IF ALREADY DEFINED @VM01155 00192010
  193. XC DEFICUU(2),DEFICUU FORCE DEVICE ADDR X'001' @VM01155 00193010
  194. SR R1,R1 CLEAR R1 TO REQ RDR DEFINE @VM01155 00194010
  195. BAL R14,DEFINE DEFINE DEV X'001' SPOOL RDR @VM01155 00195010
  196. BAL R14,VSPOOLR SET CLASS AS ALL-CLASS @VM01155 00196010
  197. LA R14,X'1F' SET INITIAL RDR DEF @VA03304 00196020
  198. STH R14,DEFICUU AND SET SO NEXT IS X'020' @VA03304 00196030
  199. STH R1,AXSRDR ADDR OF CONTROL READER 00197000
  200. LR R0,R1 R0=ADDR FOR RDR TO RECEIVE IRRPTS 00198000
  201. LA R1,AXSASYIO R1=ADDR OF ROUTINE FOR ASYNCH DEVEND 00199000
  202. L R15,ASYNREQ R15=ENTRY ADDRESS FOR ASYNCH HANDLER 00200000
  203. BALR R14,R15 REQ ASYNCH EXITS ON RDR X'001' 00201000
  204. SPACE 00202000
  205. SR R1,R1 CLEAR DEV ADDR REG 00203000
  206. BCTR R1,0 AND SET NEGATIVE 00204000
  207. BAL R14,VCLOSEH TO VM/370: CLOSE RDR HOLD 00205000
  208. MVI ARRLOCK,X'80' FORCE TAG ACCEPT TO START 00206000
  209. SPACE 00207000
  210. B AXSCYCLE START UP 00208000
  211. EJECT 00209000
  212. *---------------------------------------------------------------------* 00210000
  213. * * 00211000
  214. * AXS MONITOR CONTROL AREA * 00212000
  215. * * 00213000
  216. *---------------------------------------------------------------------* 00214000
  217. SPACE 00215000
  218. AXSNAME DC 0F'0',CL4'AXS ' TASK NAME FOR AXS ROUTINE 00216000
  219. REXNAME DC 0F'0',CL4'REX ' TASK NAME FOR CONTROL MONITOR 00217000
  220. SPACE 00218000
  221. AXSLOCKS DC A(ARRLOCK) FILE TAG ARRIVAL SYNCH LOCK ADDRESS 00219000
  222. DC A(REQLOCK) REQUEST ARRIVAL SYNCH LOCK ADDRESS 00220000
  223. DC X'80',AL3(CMDLOCK) COMMAND SYNCH LOCK ADDR 00221000
  224. SPACE 00222000
  225. ARRLOCK DC F'0' FILE TAG ARRIVAL SYNCH LOCK 00223000
  226. CMDLOCK DC F'0' COMMAND SYNCH LOCK 00224000
  227. SPACE 00225000
  228. AXSTAKE DC 0F'0' TAKE REQUEST TABLE 00226000
  229. DC CL4' ' GIVER'S TASK NAME 00227000
  230. DC AL1(L'AXSREQ),AL3(AXSREQ) PTR TO REQUEST BUFFER (INPUT) 00228000
  231. DC A(AXSRESP) PTR TO RESPONSE BUFFER (OUTPUT) 00229000
  232. SPACE 00230000
  233. AXSREQ DC XL140'00' TAKE REQUEST BUFFER 00231000
  234. AXSRESP DC XL136'00' TAKE RESPONSE BUFFER 00232000
  235. SPACE 00233000
  236. CMDIN DC CL122' ' INPUT BUFFER FOR COMMAND ELEMENT 00234000
  237. CMDINPGS DC X'00' COMMAND IN PROGRESS SWITCH 00235000
  238. SPACE 00236000
  239. AXSCSAVE DC 18F'0' COMMON ROUTINE SAVE AREA 00237000
  240. EJECT 00238000
  241. *. 00239000
  242. * 00240000
  243. * ENTRY NAME - 00241000
  244. * 00242000
  245. * AXSCYCLE 00243000
  246. * 00244000
  247. * FUNCTION - 00245000
  248. * 00246000
  249. * 00247000
  250. * THIS ROUTINE LOOKS FOR WORK TO DO BY EXAMINING THE SYNCH 00248000
  251. * LOCKS ASSOCIATED WITH THE AXS TASK. 00249000
  252. * 00250000
  253. * CALLS TO OTHER ROUTINES - 00251000
  254. * 00252000
  255. * DMTWAT - SUPERVISOR WAIT ROUTINE 00253000
  256. * DMTAKE - SUPERVISOR TAKE ROUTINE 00254000
  257. * DMTPST - SUPERVISOR POST ROUTINE 00255000
  258. * 00256000
  259. * OPERATION - 00257000
  260. * 00258000
  261. * 1. EXAMINE THE FILE ARRIVAL, REQUEST ARRIVAL, AND COMMAND 00259000
  262. * SYNCH LOCKS. 00260000
  263. * 00261000
  264. * 2. IF FILE ARRIVAL BAL TO ACCEPT TO ACCEPT IT. 00262000
  265. * 00263000
  266. * 3. IF REQUEST ARRIVAL BAL TO REQXEQ TO EXECUTE IT. 00264000
  267. * 00265000
  268. * 4. IF COMMAND BAL TO CMDPROC TO EXECUTE IT. 00266000
  269. * 00267000
  270. * 5. WAIT ON THE SYNCH LOCK LIST FOR THE NEXT REQUEST. 00268000
  271. * 00269000
  272. * RESPONSES - 00270000
  273. * 00271000
  274. * NONE 00272000
  275. * 00273000
  276. * ERROR MESSAGES - 00274000
  277. * 00275000
  278. * NONE 00276000
  279. * 00277000
  280. *. 00278000
  281. SPACE 2 00279000
  282. AXSCYCLE DC 0H'0' 00280000
  283. MVC AXSMSGLK(8),AXSBLANK INITIALIZE LINK ID 00281000
  284. MVC AXSMSGVM(8),AXSBLANK INITIALIZE VM ID 00282000
  285. SPACE 00283000
  286. CLI ARRLOCK,X'00' IS THE FILE TAG ARRIVAL LOCK POSTED 00284000
  287. BNE AXSGLOM YEP - GO READ IN SOME TAGS 00285000
  288. CLI REQLOCK,X'00' DO WE HAVE A PENDING REQUEST? 00286000
  289. BNE AXSACCPT YEP - GO SEE WHAT IT'S ALL ABOUT 00287000
  290. CLI CMDLOCK,X'00' HAS THERE BEEN A REQ FOR COMMAND? 00288000
  291. BNE AXSCMD YEP - GO START A COMMAND REQUEST 00289000
  292. SPACE 00290000
  293. LA R1,AXSLOCKS R1=ADDR OF LIST OF SYNCH LOCK ADDR 00291000
  294. L R15,WAITREQ R15=ADDR OF WAIT ROUTINE ENTRY POINT 00292000
  295. BALR R14,R15 WAIT FOR SOMETHING TO HAPPEN 00293000
  296. B AXSCYCLE INSPECT SYNCH LOCKS 00294000
  297. SPACE 00295000
  298. AXSGLOM EQU * 00296000
  299. XC ARRLOCK(4),ARRLOCK CLEAR THE TAG ARRIVAL SYNCH LOCK 00297000
  300. BAL R14,ACCEPT READ IN ANY NEW TAGS 00298000
  301. B AXSCYCLE AND CHECK FOR SOMETHING ELSE TO DO 00299000
  302. SPACE 00300000
  303. AXSCMD EQU * 00301000
  304. XC CMDLOCK(4),CMDLOCK CLEAR THE COMMAND ARRIVAL SYNCH LOCK 00302000
  305. BAL R14,CMDPROC GO PROCESS THE COMMAND 00303000
  306. B AXSCYCLE AND CHECK FOR SOMETHING ELSE TO DO 00304000
  307. SPACE 3 00305000
  308. AXSACCPT EQU * 00306000
  309. LA R1,AXSTAKE R1=TAKE TABLE ADDRESS 00307000
  310. L R15,TAKEREQ R15=ENTRY FOR REQUEST TAKE SERVICE 00308000
  311. BALR R14,R15 RESP TO LAST REQUEST, TAKE ANOTHER 00309000
  312. SRA R15,3 CHK RET CODE FOR PRES OF A NEW REQ 00310000
  313. BNZ AXSCYCLE NO MORE LEFT-LOOK FOR SOMETHING ELSE 00311000
  314. BAL R14,REQXEQ GO DIRECTLY TO EXEC THE GOTTEN REQ 00312000
  315. * R0 POST CODE AND RESPONSE BUFFER HAVE BEEN SET BY EXECUTOR 00313000
  316. B AXSACCPT RESP AND TRY TO TAKE ANOTHER REQ 00314000
  317. SPACE 3 00315000
  318. AXSALERT EQU * ASYNCHRONOUS TASK ALERT ROUTINE 00316000
  319. L R12,TASKSAVE-TASKE(R13) RESET AXS BASE REGISTER 00317000
  320. LM R10,R11,AXSREG10 RESTORE OTHER BASE REGISTERS 00318000
  321. CL R0,REXNAME IS CALLING TASK THE CONTROL MONITOR? 00319000
  322. BCR 7,R14 (BNE) FORGET IT IF IT ISN'T 00320000
  323. CLI CMDINPGS,X'FF' IS THERE A CMD IN PROGRESS? 00321000
  324. BNE AXSALRT1 NO CONTINUE 00322000
  325. MVI 2(R1),X'80' SHOW REFUSAL 00323000
  326. BR R14 AND RETURN 00324000
  327. SPACE 1 00325000
  328. AXSALRT1 EQU * 00326000
  329. MVI 2(R1),X'00' INDICATE COMMAND ACCEPTANCE 00327000
  330. OI CMDINPGS,X'FF' SHOW PROCESSING @VA08094 00327100
  331. SR R2,R2 CLEAR FOR IC 00328000
  332. IC R2,0(R1) GET COUNT OF ELEMENT 00329000
  333. EX R2,CMDMVC AND MOVE TO OUR BUFFER 00330000
  334. SR R0,R0 CLEAR CODE REGISTER FOR POST 00331000
  335. LA R1,CMDLOCK R1=ADDRESS OF COMMAND SYNCH LOCK 00332000
  336. L R15,POSTREQ R15=ENTRY ADDRESS FOR POST ROUTINE 00333000
  337. BR R15 POST THE ATTN SYN LOCK AND RET DIR 00334000
  338. EJECT 00335000
  339. AXSASYIO EQU * ASYNCH READER I/O INTERRUPT ROUTINE 00336000
  340. CLI CSW+4,DE IS IT A STAND-ALONE DEVICE END? 00337000
  341. BCR 7,R14 (BNE) FORGET IT IF IT IS NOT 00338000
  342. L R12,TASKSAVE-TASKE(R13) RESET AXS BASE REGISTER 00339000
  343. LM R10,R11,AXSREG10 RESTORE OTHER BASE REGISTERS 00340000
  344. SR R0,R0 CLEAR CODE REGISTER FOR POST 00341000
  345. LA R1,ARRLOCK R1=ADDRESS OF ARRIVAL SYNCH LOCK 00342000
  346. L R15,POSTREQ R15=ENTRY ADDR FOR SUP POST ROUTINE 00343000
  347. BR R15 POST THE ARRIVAL SYNCH LOCK, RETURN DIRECTLY TO SUP 00344000
  348. SPACE 00345000
  349. CMDMVC MVC CMDIN(0),0(R1) TO BE EXECUTED FROM ABOVE 00346000
  350. SPACE 00347000
  351. AXSMOVE MVC 0(0,R15),0(R3) MOVE FROM LINE 00348000
  352. EJECT 00349000
  353. *---------------------------------------------------------------------* 00350000
  354. * * 00351000
  355. * REQUEST EXECUTION CONTROL AREA * 00352000
  356. * * 00353000
  357. *---------------------------------------------------------------------* 00354000
  358. SPACE 00355000
  359. IOPCODE EQU X'01' OPEN INPUT FILE REQUEST CODE 00356000
  360. ICLCODE EQU X'02' CLOSE INPUT FILE REQUEST CODE 00357000
  361. OOPCODE EQU X'11' OPEN OUTPUT FILE REQUEST CODE 00358000
  362. OCLCODE EQU X'12' CLOSE OUTPUT FILE REQUEST CODE 00359000
  363. SPACE 2 00360000
  364. REQSETUP DC A(REQTABLE) 00361000
  365. DC A(REQINC) 00362000
  366. DC A(REQEND-REQINC) 00363000
  367. SPACE 00364000
  368. REQINC EQU 4 LENGTH OF A TABLE ENTRY 00365000
  369. SPACE 00366000
  370. REQTABLE DC 0F'0' 00367000
  371. DC AL1(IOPCODE),AL3(OPENIN) => OPEN INPUT FILE 00368000
  372. DC AL1(ICLCODE),AL3(CLOSEIN) => CLOSE INPUT FILE 00369000
  373. DC AL1(OOPCODE),AL3(OPENOUT) => OPEN OUTPUT FILE 00370000
  374. DC AL1(OCLCODE),AL3(CLOSEOUT) => CLOSE OUTPUT FILE 00371000
  375. REQEND EQU * 00372000
  376. SPACE 00373000
  377. REQSHRUG EQU X'10' ERROR POST CODE FOR REQ CODE NOT IDENTIFIABLE 00374000
  378. EJECT 00375000
  379. *. 00376000
  380. * 00377000
  381. * ENTRY NAME - 00378000
  382. * 00379000
  383. * REQXEQ 00380000
  384. * 00381000
  385. * FUNCTION - 00382000
  386. * 00383000
  387. * THIS ROUTINE SCANS THE REQUEST TABLE FOR A MATCH AND 00384000
  388. * BRANCHES TO THE APPROPRIATE SUBROUTINE DEPENDING ON THE 00385000
  389. * REQUEST CODE. 00386000
  390. * 00387000
  391. * CALLS TO OTHER ROUTINES - 00388000
  392. * 00389000
  393. * NONE 00390000
  394. * 00391000
  395. * OPERATION - 00392000
  396. * 00393000
  397. * 1. SCAN THE REQUEST TABLE FOR A MATCH. 00394000
  398. * 00395000
  399. * 2. IF FOUND BRANCH TO THE APPROPRIATE SUB- 00396000
  400. * ROUTINE. 00397000
  401. * 00398000
  402. * 3. IF NOT RETURN WITH AN ERROR. 00399000
  403. * 00400000
  404. * RESPONSES - 00401000
  405. * 00402000
  406. * NONE 00403000
  407. * 00404000
  408. * ERROR MESSAGES - 00405000
  409. * 00406000
  410. * NONE 00407000
  411. * 00408000
  412. *. 00409000
  413. SPACE 2 00410000
  414. REQXEQ DC 0H'0' 00411000
  415. LM R3,R5,REQSETUP SET REGS FOR REQUEST TABLE SCAN 00412000
  416. REQSCAN EQU * 00413000
  417. CLC 0(1,R3),AXSREQ+1 DOES THIS ENTRY MATCH THE REQ CODE? 00414000
  418. BE REQCALL YEP-GO EXIT TO THE IND EXECUTOR ROU 00415000
  419. BXLE R3,R4,REQSCAN SCAN TO THE END OF THE TABLE 00416000
  420. SPACE 00417000
  421. LA R0,REQSHRUG R0=ERROR CODE FOR NO CODE MATCH 00418000
  422. BR R14 RETURN TO CALLER 00419000
  423. SPACE 00420000
  424. REQCALL EQU * 00421000
  425. MVI AXSRESP,X'00' INIT THE RESPONSE COUNT TO ZERO 00422000
  426. L R15,0(R3) R15=ENT ADDR FOR INDICATED EXEC 00423000
  427. BR R15 GO TO EXEC WITH R14 AS SET BY CALLER 00424000
  428. EJECT 00425000
  429. *---------------------------------------------------------------------* 00426000
  430. * * 00427000
  431. * COMMAND CONTROL AREA * 00428000
  432. * * 00429000
  433. *---------------------------------------------------------------------* 00430000
  434. SPACE 00431000
  435. ORDERCMD EQU X'10' ORDER COMMAND 00432000
  436. PURGECMD EQU X'11' PURGE COMMAND 00433000
  437. CHANGCMD EQU X'20' CHANGE COMMAND 00434000
  438. SPACE 00435000
  439. CMDSETUP DC A(CMDTABLE) 00436000
  440. DC A(CMDINC) 00437000
  441. DC A(CMDEND-CMDINC) 00438000
  442. SPACE 00439000
  443. CMDINC EQU 4 LENGTH OF TABLE ENTRY 00440000
  444. SPACE 00441000
  445. CMDTABLE DC 0F'0' 00442000
  446. DC AL1(ORDERCMD),AL3(ORDER) ORDER COMMAND 00443000
  447. DC AL1(PURGECMD),AL3(PURGE) PURGE COMMAND 00444000
  448. DC AL1(CHANGCMD),AL3(CHANGE) CHANGE COMMAND 00445000
  449. CMDEND EQU * 00446000
  450. SPACE 00447000
  451. CMDSAVE DC F'0' 00448000
  452. CMDCSAVE DC 11F'0' 00449000
  453. EJECT 00450000
  454. *. 00451000
  455. * 00452000
  456. * ENTRY NAME - 00453000
  457. * 00454000
  458. * CMDPROC 00455000
  459. * 00456000
  460. * FUNCTION - 00457000
  461. * 00458000
  462. * EXECUTE AXS COMMANDS FROM THE COMMAND BUFFER PASSED ON 00459000
  463. * AN ALERT EXIT FROM DMTREX. 00460000
  464. * 00461000
  465. * CALLS TO OTHER ROUTINES - 00462000
  466. * 00463000
  467. * NONE 00464000
  468. * 00465000
  469. * OPERATION - 00466000
  470. * 00467000
  471. * 1. SCAN THE COMMAND TABLE FOR A MATCH. 00468000
  472. * 00469000
  473. * 2. IF FOUND BRANCH TO THE APPROPRIATE SUBROUTINE. 00470000
  474. * 00471000
  475. * 3. RESET THE COMMAND IN PROGRESS SWITCH 00472000
  476. * 00473000
  477. * 4. EXIT 00474000
  478. * 00475000
  479. * RESPONSES - 00476000
  480. * 00477000
  481. * SEE EACH COMMAND SUBROUTINE 00478000
  482. * 00479000
  483. * ERROR MESSAGES - 00480000
  484. * 00481000
  485. * SEE EACH COMMAND SUBROUTINE 00482000
  486. * 00483000
  487. *. 00484000
  488. SPACE 2 00485000
  489. CMDPROC DC 0H'0' 00486000
  490. ST R14,CMDSAVE SAVE RETURN REG 00487000
  491. LM R3,R5,CMDSETUP SET UP FOR TABLE SCAN 00488000
  492. CMDSCAN EQU * 00489000
  493. CLC 0(1,R3),CMDIN+1 IS THIS THE RIGHT COMMAND? 00490000
  494. BE CMDCALL YES 00491000
  495. BXLE R3,R4,CMDSCAN BUMP TO NEXT ENTRY 00492000
  496. BR R14 COMMAND NOT FOUND, RETURN 00493000
  497. SPACE 1 00494000
  498. CMDCALL EQU * 00495000
  499. MVC AXSMSGLK(8),CMDIN+4 SET OBJECT LINK ID 00496000
  500. TM CMDIN+3,X'80' RESPONSE TO OBJECT OR LOCAL? 00497000
  501. BNO CMDOIT RESPONSE TO OBJECT 00498000
  502. L R8,TLINKS LINK TABLE START 00499000
  503. LA R8,8(R8) LOCAL LINK TABLE ENTRY 00500000
  504. MVC AXSMSGLK(8),LINKID RESPONSE TO LOCAL 00501000
  505. EJECT 00502000
  506. CMDOIT EQU * 00503000
  507. L R15,0(R3) GET THE ROUTINE ADDR 00504000
  508. BALR R14,R15 GO EXECUTE THE COMMAND 00505000
  509. MVI CMDINPGS,X'00' INDICATE COMMAND DONE 00506000
  510. L R14,CMDSAVE RESTORE RETURN 00507000
  511. BR R14 AND RETURN 00508000
  512. EJECT 00509000
  513. *. 00510000
  514. *---------------------------------------------------------------------* 00511000
  515. * ORDER COMMAND * 00512000
  516. *---------------------------------------------------------------------* 00513000
  517. * 00514000
  518. * RESPONSES - 00515000
  519. * 00516000
  520. * DMTAXS523I LINK 'LINKID' QUEUE REORDERED 00517000
  521. * 00518000
  522. * ERROR MESSAGES - 00519000
  523. * 00520000
  524. * DMTAXS524E FILE 'SPOOLID' ACTIVE -- NO ACTION TAKEN 00521000
  525. * DMTAXS525E FILE 'SPOOLID' IS FOR LINK 'LINKID' -- 00522000
  526. * NO ACTION TAKEN 00523000
  527. * DMTAXS526E FILE 'SPOOLID' NOT FOUND -- NO ACTION TAKEN 00524000
  528. * 00525000
  529. *. 00526000
  530. SPACE 1 00527000
  531. ORDER DC 0H'0' 00528000
  532. STM R14,R8,CMDCSAVE SAVE ENTRY REGS 00529000
  533. SPACE 00530000
  534. LH R5,CMDIN+12 TOTAL SPOOL ID'S HERE 00531000
  535. LA R4,CMDIN+14 ADDR OF FIRST ID 00532000
  536. ORDECHEK EQU * 00533000
  537. LH R1,0(R4) NEXT SPOOL ID TO CHECK 00534000
  538. BAL R14,TAGFIND SEE IF IT'S AROUND 00535000
  539. BC 7,CMDM526 NOT ENQUEUED 00536000
  540. CLC TAGLINK(8),CMDIN+4 BELONG TO OBJECT LINK ID? 00537000
  541. BNE CMDM525 NO FAIR IF NOT 00538000
  542. OC TAGBLOCK(4),TAGBLOCK INACTIVE? 00539000
  543. BNZ CMDM524 ACTIVE - NO ORDER 00540000
  544. LA R4,2(R4) BUMP SPOOL ID POINTER 00541000
  545. BCT R5,ORDECHEK DO NEXT IF ANY 00542000
  546. SPACE 00543000
  547. LA R3,CMDIN+4 ADDR OF OBJECT LINK ID 00544000
  548. LA R4,8 FULL COUNT 00545000
  549. BAL R14,GETLINK FIND HIS LINK TABLE 00546000
  550. BC 7,ORDEEXIT NO LINK - FORGET IT 00547000
  551. EJECT 00548000
  552. * 00549000
  553. * ALL FILES O.K. - DO ORDER 00550000
  554. * 00551000
  555. LH R5,CMDIN+12 TOTAL ID COUNT 00552000
  556. LA R4,CMDIN+12(R5) GET READY TO ... 00553000
  557. ALR R4,R5 POINT TO LAST SPOOLID 00554000
  558. ORDERDO EQU * 00555000
  559. LA R2,LPOINTER-(TAGNEXT-TAG) INITIALIZE SCAN 00556000
  560. ORDESCAN EQU * 00557000
  561. LR R3,R2 MAKE CURRENT LAST 00558000
  562. ICM R2,B'1111',TAGNEXT AND GET NEW CURRENT 00559000
  563. BZ ORDEEXIT NOT FOUND - DISAPPEARED 00560000
  564. CLC 0(2,R4),TAGID IS THIS THE ONE? 00561000
  565. BNE ORDESCAN NO - TRY NEXT 00562000
  566. SPACE 00563000
  567. MVC TAGNEXT-TAG(4,R3),TAGNEXT DEQUEUE TAG 00564000
  568. XC TAGPRIOR(2),TAGPRIOR ZERO ORDERED TAG PRIORITY 00565000
  569. BAL R14,VTAGF SET NEW PRIORITY IN VM TAG 00566000
  570. SPACE 00567000
  571. MVC TAGNEXT(4),LPOINTER ENQUEUE LINK QUEUE ON IT 00568000
  572. ST R2,LPOINTER AND PLACE AT HEAD OF QUEUE 00569000
  573. ORDENEXT EQU * 00570000
  574. BCTR R4,0 BUMP SPOOL ID POINTER 00571000
  575. BCTR R4,0 BACK TO NEXT LEFTWARD 00572000
  576. BCT R5,ORDERDO AND DO NEXT IF ANY 00573000
  577. SPACE 00574000
  578. CMDM253 EQU * 00575000
  579. MVC AXSMSGV0(8),LINKID SET LINK ID IN MSG 00576000
  580. LA R15,523 SET MSG CODE 00577000
  581. LA R0,28+8 SET MSG ELEMENT COUNT 00578000
  582. BAL R14,MSG AND ISSUE ORDER MSG 00579000
  583. SPACE 00580000
  584. ORDEEXIT EQU * 00581000
  585. LM R14,R8,CMDCSAVE RESTORE ENTRY REGS 00582000
  586. BR R14 AND RETURN 00583000
  587. EJECT 00584000
  588. *. 00585000
  589. *---------------------------------------------------------------------* 00586000
  590. * PURGE COMMAND * 00587000
  591. *---------------------------------------------------------------------* 00588000
  592. * 00589000
  593. * RESPONSES - 00590000
  594. * 00591000
  595. * DMTAXS640I NN FILE(S) PURGED ON LINK 'LINKID' 00592000
  596. * 00593000
  597. * ERROR MESSAGES - 00594000
  598. * 00595000
  599. * DMTAXS524E FILE 'SPOOLID' ACTIVE -- NO ACTION TAKEN 00596000
  600. * DMTAXS525E FILE 'SPOOLID' IS FOR LINK 'LINKID' -- 00597000
  601. * NO ACTION TAKEN 00598000
  602. * DMTAXS526E FILE 'SPOOLID' NOT FOUND -- NO ACTION TAKEN 00599000
  603. * 00600000
  604. *. 00601000
  605. SPACE 1 00602000
  606. PURGE DC 0H'0' 00603000
  607. STM R14,R8,CMDCSAVE SAVE ENTRY REGS 00604000
  608. SPACE 00605000
  609. LA R3,CMDIN+4 ADDR OF LINK ID 00606000
  610. LA R4,8 COUNT OF LINK ID 00607000
  611. BAL R14,GETLINK GET THE OBJECT LINK TABLE 00608000
  612. BC 7,PURGEXIT NOT FOUND - QUIT 00609000
  613. SPACE 00610000
  614. TM CMDIN+3,X'40' PURGE 'ALL' REQUESTED? 00611000
  615. BO PURGEALL YES - DO 'EM 00612000
  616. SPACE 00613000
  617. LH R5,CMDIN+12 COUNT OF ID'S 00614000
  618. LA R4,CMDIN+14 ADDR OF FIRST ID 00615000
  619. PURGCHEK EQU * 00616000
  620. LH R1,0(R4) NEXT SPOOL ID 00617000
  621. BAL R14,TAGFIND DO WE HAVE IT? 00618000
  622. BC 7,CMDM526 NO - ERROR 00619000
  623. CLC TAGLINK(8),CMDIN+4 PROPER TAG LINK? 00620000
  624. BNE CMDM525 NOPE - NO GOOD 00621000
  625. OC TAGBLOCK(4),TAGBLOCK IS THE FILE ACTIVE? 00622000
  626. BNZ CMDM524 YES - NO PURGE 00623000
  627. LA R4,2(R4) BUMP SPOOL ID POINTER 00624000
  628. BCT R5,PURGCHEK CHECK NEXT IF ANY 00625000
  629. SPACE 00626000
  630. LH R5,CMDIN+12 TOTAL TO BE PURGED 00627000
  631. LR R6,R5 SAVE FOR MESSAGE 00628000
  632. LA R4,CMDIN+14 ADDR OF FIRST ID 00629000
  633. EJECT 00630000
  634. PURGEDO EQU * 00631000
  635. LA R2,LPOINTER-(TAGNEXT-TAG) INITIALIZE SCAN 00632000
  636. PURGSCAN EQU * 00633000
  637. LR R3,R2 MAKE CURRENT LAST 00634000
  638. ICM R2,B'1111',TAGNEXT GET NEW CURRENT 00635000
  639. BZ PURGEXIT FILE DISAPPEARED - QUIT 00636000
  640. CLC 0(2,R4),TAGID IS THIS THE ONE? 00637000
  641. BNE PURGSCAN NO - KEEP LOOKING 00638000
  642. SPACE 00639000
  643. MVC TAGNEXT-TAG(4,R3),TAGNEXT DEQUEUE TAG 00640000
  644. LH R1,TAGID REG.1 = PURGE SPOOL ID 00641000
  645. BAL R14,VPURGE PURGE FILE FROM VM/370 00642000
  646. BAL R14,FREESLOT AND FROM RSCS 00643000
  647. PURGNEXT EQU * 00644000
  648. LA R4,2(R4) BUMP POINTER TO NEXT ID 00645000
  649. BCT R5,PURGEDO DO NEXT IF ANY 00646000
  650. SPACE 00647000
  651. PURGDONE EQU * 00648000
  652. LR R1,R6 PURGE FILE COUNT 00649000
  653. BAL R14,CMDM640 ISSUE PURGE MSG 00650000
  654. PURGEXIT EQU * 00651000
  655. LM R14,R8,CMDCSAVE RESTORE ENTRY REGS 00652000
  656. BR R14 AND RETURN 00653000
  657. SPACE 2 00654000
  658. PURGEALL EQU * 00655000
  659. SR R6,R6 INITIALIZE PURGE COUNT 00656000
  660. LA R2,LPOINTER POINT TO TOP OF QUEUE @VA05959 00657100
  661. PURALNX1 DS 0H @VA05959 00657200
  662. LR R3,R2 MAKE CURRENT TAG LAST ONE @VA05959 00657300
  663. PURALNX2 DS 0H HERE TO CONTINUE PURGE @VA05959 00657400
  664. ICM R2,15,TAGNEXT-TAG(R3) GET ADDR OF NEXT TAG @VA05959 00657500
  665. BZ PURGDONE IF ZERO ALL DONE @VA05959 00657600
  666. OC TAGBLOCK(4),TAGBLOCK IS TAG FOR ACTIVE FILE @VA05959 00657700
  667. BNZ PURALNX1 YES.. DO NOT PURGE IT @VA05959 00657800
  668. MVC TAGNEXT-TAG(4,R3),TAGNEXT DEQUEUE THIS ONE @VA05959 00657900
  669. LH R1,TAGID PURGE SPOOL FILE ID 00661000
  670. BAL R14,VPURGE PURGE IT FROM VM/370 00662000
  671. BAL R14,FREESLOT AND FROM RSCS 00663000
  672. LA R6,1(R6) INCREMENT PURGE COUNT 00664000
  673. B PURALNX2 GO PURGE SOME MORE @VA05959 00665500
  674. EJECT 00666000
  675. *. 00667000
  676. *---------------------------------------------------------------------* 00668000
  677. * CHANGE COMMAND * 00669000
  678. *---------------------------------------------------------------------* 00670000
  679. * 00671000
  680. * RESPONSES - 00672000
  681. * 00673000
  682. * DMTAXS520I FILE 'SPOOLID' CHANGED 00674000
  683. * DMTAXS521I FILE 'SPOOLID' HELD FOR LINK 'LINKID' 00675000
  684. * DMTAXS522I FILE 'SPOOLID' RELEASED FOR LINK 'LINKID' 00676000
  685. * DMTAXS523I LINK 'LINKID' QUEUE REORDERED 00677000
  686. * 00678000
  687. * ERROR MESSAGES - 00679000
  688. * 00680000
  689. * DMTAXS524E FILE 'SPOOLID' ACTIVE -- NO ACTION TAKEN 00681000
  690. * DMTAXS525E FILE 'SPOOLID' IS FOR LINK 'LINKID' -- 00682000
  691. * NO ACTION TAKEN 00683000
  692. * DMTAXS526E FILE 'SPOOLID' NOT FOUND -- NO ACTION TAKEN 00684000
  693. * 00685000
  694. *. 00686000
  695. SPACE 1 00687000
  696. CHANGE DC 0H'0' 00688000
  697. STM R14,R8,CMDCSAVE SAVE ENTRY REGS 00689000
  698. SPACE 00690000
  699. LH R1,CMDIN+12 SPOOL ID COUNT 00691000
  700. BAL R14,TAGFIND SEE IF IT IS ENQUEUED 00692000
  701. BC 7,CMDM526 IT IS NOT - QUIT 00693000
  702. CLC TAGLINK(8),CMDIN+4 IS IT ON OBJECT LINK? 00694000
  703. BNE CMDM525 NO - QUIT 00695000
  704. OC TAGBLOCK(4),TAGBLOCK IS IT INACTIVE? 00696000
  705. BNZ CMDM524 NO - NO GOOD 00697000
  706. SPACE 00698000
  707. LA R3,CMDIN+4 LINK ID ADDRESS 00699000
  708. LA R4,8 LINK ID LENGTH 00700000
  709. BAL R14,GETLINK FIND THE LINK TABLE 00701000
  710. BC 7,CHANEXIT LINK DISAPPEARED...? 00702000
  711. SPACE 00703000
  712. MVC VCHCNTRL(36),CMDIN+16 SET CHANGE CONTROL FIELDS 00704000
  713. BAL R14,VCHANGE CHANGE THE FILE AS REQ 00705000
  714. BAL R14,CMDM520 SAY IT HAS BEEN CHANGED 00706000
  715. SPACE 00707000
  716. SR R0,R0 INITIALIZE TASK NAME 00708000
  717. CHANPR EQU * 00709000
  718. CLI CMDIN+14,X'FF' CHANGE PRIORITY? 00710000
  719. BE CHANHO NO - TRY HOLD 00711000
  720. MVC TAGPRIOR(2),CMDIN+14 SET NEW PRIORITY 00712000
  721. BAL R14,VTAGF SET PRIORITY IN VM TAG 00713000
  722. LA R2,LPOINTER-(TAGNEXT-TAG) INITIALIZE SCAN 00714000
  723. CHANSCAN EQU * 00715000
  724. LR R3,R2 MAKE CURRENT LAST 00716000
  725. ICM R2,B'1111',TAGNEXT GET NEXT TAG 00717000
  726. BZ CHANHO FILE GONE - QUIT 00718000
  727. CH R1,TAGID IS THIS THE ONE? 00719000
  728. BNE CHANSCAN NOPE - KEEP LOOKING 00720000
  729. MVC TAGNEXT-TAG(4,R3),TAGNEXT DEQUEUE IT 00721000
  730. BAL R14,TAGPLACE PUT IT BACK 00722000
  731. BAL R14,CMDM523 ISSUE REORDERED MSG 00723000
  732. SPACE 00724000
  733. CHANHO EQU * 00725000
  734. CLI CMDIN+16,X'FF' CHANGE HOLD? 00726000
  735. BE CHANCL NO - TRY CLASS 00727000
  736. TM CMDIN+16,X'C0' CHANGE NOH? 00728000
  737. BZ CHANNOH YES - DO IT 00729000
  738. OI TAGFLAG,SFBUHOLD TURN ON USER HOLD 00730000
  739. BAL R14,CMDM521 ISSUE HELD MSG 00731000
  740. B CHANCL CHECK CLASS 00732000
  741. SPACE 00733000
  742. CHANNOH EQU * 00734000
  743. NI TAGFLAG,X'FF'-SFBUHOLD-SFBSHOLD HOLD OFF 00735000
  744. BAL R14,CMDM522 ISSUE RELEASED MSG 00736000
  745. L R0,LACTTNME SET ALERT TASK NAME 00737000
  746. SPACE 00738000
  747. CHANCL EQU * 00739000
  748. CLI CMDIN+17,X'FF' CHANGE CLASS? 00740000
  749. BE CHANCO NO - TRY COPY 00741000
  750. MVC TAGCLASS(1),CMDIN+17 MOVE IN NEW CLASS 00742000
  751. L R0,LACTTNME SET ALERT TASK NAME 00743000
  752. SPACE 00744000
  753. CHANCO EQU * 00745000
  754. CLI CMDIN+18,X'FF' CHANGE COPY? 00746000
  755. BE CHANDI NOPE - TRY DIST 00747000
  756. MVC TAGCOPY(2),CMDIN+18 SET NEW COPY COUNT 00748000
  757. SPACE 00749000
  758. CHANDI EQU * 00750000
  759. CLI CMDIN+20,X'FF' CHANGE DIST? 00751000
  760. BE CHANNA NO - TRY NAME 00752000
  761. MVC TAGDIST(8),CMDIN+20 SET NEW DIST CODE 00753000
  762. SPACE 00754000
  763. CHANNA EQU * 00755000
  764. CLI CMDIN+28,X'FF' CHANGE NAME? 00756000
  765. BE CHANDONE NO - ALL DONE 00757000
  766. MVC TAGNAME(24),CMDIN+28 SET NEW NAME 00758000
  767. SPACE 00759000
  768. CHANDONE EQU * 00760000
  769. LTR R0,R0 ANY ALERTS TO BE DONE? 00761000
  770. BZ CHANEXIT NO - LEAVE NOW 00762000
  771. TM LFLAG,LALERT IS ALERT ARMED? 00763000
  772. BNO CHANEXIT NO - FORGET IT 00764000
  773. L R15,ALERTREQ ALERT ENTRY ADDR 00765000
  774. BALR R14,R15 ALERT WAITING LINE DRIVER 00766000
  775. SPACE 00767000
  776. CHANEXIT EQU * 00768000
  777. LM R14,R8,CMDCSAVE RESTORE ENTRY REGS 00769000
  778. BR R14 AND RETURN 00770000
  779. EJECT 00771000
  780. *---------------------------------------------------------------------* 00772000
  781. * COMMON COMMAND RESPONSE ROUTINES * 00773000
  782. *---------------------------------------------------------------------* 00774000
  783. SPACE 1 00775000
  784. CMDM520 DC 0H'0' 00776000
  785. STM R14,R1,MSGSAVE SAVE REGS 00777000
  786. LA R15,520 SET MSG CODE 00778000
  787. B MSGSPID FORMAT VARIABLE AREA 00779000
  788. SPACE 00780000
  789. CMDM521 EQU * 00781000
  790. STM R14,R1,MSGSAVE SAVE REGS 00782000
  791. LA R15,521 SET MSG CODE 00783000
  792. B MSGLKID1 FORMAT VARIABLE AREA 00784000
  793. SPACE 00785000
  794. CMDM522 EQU * 00786000
  795. STM R14,R1,MSGSAVE SAVE REGS 00787000
  796. LA R15,522 SET MSG CODE 00788000
  797. B MSGLKID1 FORMAT VARIABLE AREA 00789000
  798. SPACE 00790000
  799. CMDM523 EQU * 00791000
  800. STM R14,R1,MSGSAVE SAVE REGS 00792000
  801. MVC AXSMSGV0(8),LINKID SET LINK ID IN MSG 00793000
  802. LA R15,523 SET MSG CODE 00794000
  803. LA R0,28+8 SET MSG ELEMENT LEN 00795000
  804. B MSGDO CALL DMTMGX 00796000
  805. SPACE 00797000
  806. CMDM524 EQU * 00798000
  807. LA R14,CMDEXIT SET TO EXIT WHEN DONE 00799000
  808. STM R14,R1,MSGSAVE SAVE REGISTERS 00800000
  809. LA R15,524 SET MSG CODE 00801000
  810. B MSGSPID FORMAT VARIABLE AREA 00802000
  811. SPACE 00803000
  812. CMDM525 EQU * 00804000
  813. LA R14,CMDEXIT SET TO EXIT WHEN DONE 00805000
  814. STM R14,R1,MSGSAVE SAVE REGISTERS 00806000
  815. MVC AXSMSGV1(8),TAGLINK SET TAG LINK ID 00807000
  816. LA R15,525 SET MSG CODE 00808000
  817. LA R0,28+2*8 SET MSG REQ ELEMENT LEN 00809000
  818. B MSGSPID0 FORMAT VARIABLE AREA 00810000
  819. SPACE 00811000
  820. CMDM526 EQU * 00812000
  821. LA R14,CMDEXIT SET TO EXIT WHEN DONE 00813000
  822. STM R14,R1,MSGSAVE SAVE REGISTERS 00814000
  823. LA R15,526 SET MSG CODE 00815000
  824. B MSGSPID FORMAT VARIABLE AREA 00816000
  825. SPACE 00817000
  826. CMDM640 EQU * 00818000
  827. STM R14,R1,MSGSAVE SAVE REGS 00819000
  828. LA R15,640 SET MSG CODE 00820000
  829. B MSGNN FORMAT VARIABLE AREA 00821000
  830. SPACE 2 00822000
  831. CMDEXIT EQU * 00823000
  832. LM R14,R8,CMDCSAVE RESTORE ENTRY REGS 00824000
  833. BR R14 AND RETURN 00825000
  834. EJECT 00826000
  835. *. 00827000
  836. * 00828000
  837. * ENTRY NAME - 00829000
  838. * 00830000
  839. * OPENIN 00831000
  840. * 00832000
  841. * FUNCTION - 00833000
  842. * 00834000
  843. * INITIALIZE SPOOL FILE PROCESSING 00835000
  844. * 00836000
  845. * CALLS TO OTHER ROUTINES - 00837000
  846. * 00838000
  847. * DMKDRD - THROUGH DIAG 14 00839000
  848. * 00840000
  849. * OPERATION - 00841000
  850. * 00842000
  851. * 1. CHECK FOR ACTIVE FILE ON LINK 00843000
  852. * 00844000
  853. * 2. BRING PENDING FILES INTO STORAGE 00845000
  854. * 00846000
  855. * 3. SELECT A FILE FOR PROCESSING 00847000
  856. * NO FILE FOUND, ARM AN ALERT 00848000
  857. * 00849000
  858. * 4. DEFINE A SPOOL READER AND PLACE SELECTED FILE IN THAT 00850000
  859. * READER 00851000
  860. * 00852000
  861. * 5. FILL IN THE RESPONSE BUFFER 00853000
  862. * 00854000
  863. * 6. RETURN TO CALLER 00855000
  864. * 00856000
  865. * RESPONSES - 00857000
  866. * 00858000
  867. * NONE 00859000
  868. * 00860000
  869. * ERROR MESSAGES - 00861000
  870. * 00862000
  871. * NONE 00863000
  872. * 00864000
  873. *. 00865000
  874. SPACE 2 00866000
  875. OPENSAVE DC F'0' 00867000
  876. SPACE 00868000
  877. OPENTABL DC F'0' PROTOTYPE I/O TABLE FOR OUTPUT 00869000
  878. DC H'0',AL1(1),AL1(0) DEVICE ADDR, SENSE REQ, DEVICE TYPE 00870000
  879. DC A(0) CHANNEL PROGRAM START ADDRESS 00871000
  880. DC 3F'0' SIO COND CODE, COMPOSITE CSW, SENSE INFO 00872000
  881. DC X'01',AL3(0),X'0000',AL2(132) WRITE CCW 00873000
  882. SPACE 00874000
  883. OPENCODE DC 2X'00' OPEN POST CODE CONSTRUCTION FIELD 00875000
  884. NOLUCK EQU X'08' BIT FOR TERMINAL SYSTEM ERROR 00876000
  885. NOFILE EQU X'04' BIT FOR NO TAG ADDRESS RETURNED 00877000
  886. NOLINK EQU X'02' BIT FOR LINK TABEL ENTRY FOUND 00878000
  887. OLDFILE EQU X'01' FIT FOR ACTIVE INPUT FILE RETURNED 00879000
  888. SPACE 00880000
  889. HOLD EQU X'80' INPUT CLOSE & HOLD SUB OPT 00881000
  890. ALL EQU X'40' INPUT CLOSE ALL COPIES 00882000
  891. SPACE 00883000
  892. MULTOPEN EQU X'80' OUTPUT OPEN MULTIPLE FILE 00884000
  893. SPACE 00885000
  894. OPENIN DC 0H'0' 00886000
  895. ST R14,OPENSAVE SAVE CALLER'S RETURN ADDRESS 00887000
  896. MVI OPENCODE,X'00' START WITH ZERO POST CODE 00888000
  897. MVC AXSRESP(20),AXSREQ AND START WITH RESP=REQ 00889000
  898. CLI AXSREQ,X'13' IS THE REQUEST LONG ENOUGH? 00890000
  899. BL OPENWHO NOPE - INVALID LINK ID 00891000
  900. LA R2,TAGACIN-(TAGNEXT-TAG) INITIALIZE ACTIVE INPUT SCAN PO 00892000
  901. OPENIACT EQU * 00893000
  902. ICM R2,B'1111',TAGNEXT BUMP POINTER TO THE NEXT TAG 00894000
  903. BZ OPENILNK YES - NO ACTIVE FILE FOUND 00895000
  904. CLC AXSREQ+12(8),TAGLINK IS FILE ACTIVE ON THIS LINK? 00896000
  905. BNE OPENIACT NOPE - CHECK THE NEXT ONE OUT 00897000
  906. ST R2,AXSRESP+4 OTHERWISE, SET THE ACTIVE TAG ADDRESS RESP 00898000
  907. MVC AXSRESP+8(4),TAGBLOCK AND THE ACTIVE I/O AREA 00899000
  908. OI OPENCODE,OLDFILE FLAG RETURN OF OLD ACTIVE FILE 00900000
  909. B OPENEXIT AND RETURN TO THE CALLER 00901000
  910. SPACE 00902000
  911. OPENILNK EQU * 00903000
  912. LA R3,AXSREQ+12 R3=ADDRESS OF LINK ID OF CALLER 00904000
  913. LA R4,8 R4=LINK ID LENGTH 00905000
  914. BAL R14,GETLINK TRY TO GET THE LINK TABLE ENTRY FOR CALLER 00906000
  915. BNZ OPENWHO NO GOT - RETURN AN ERROR 00907000
  916. NI LFLAG,X'FF'-LALERT RESET ALERT FLAG 00908000
  917. OPENIRTY EQU * 00909000
  918. BAL R14,UNPEND MAKE SURE ALL HIS FILES ARE IN OUR STORAGE QU 00910000
  919. BAL R14,FILSELEC PICK NEXT FILE IN QUEUE 00911000
  920. BC 7,OPENARM NONE - SET ALERT 00912000
  921. L R15,TCOM GET COMMON ROUTINE ADDR 00913000
  922. L R15,GPAGEREQ GET PAGE ROUTINE 00914000
  923. LA R13,AXSCSAVE LOAD SAVE ADDR 00915000
  924. BALR R14,R15 GO GET A PAGE 00916000
  925. LTR R1,R1 GET ONE? 00917000
  926. BZ OPENNONE NO GOT - RETURN AN ERROR 00918000
  927. LR R7,R1 R7=ADDRESS OF NEW I/O AREA 00919000
  928. SR R1,R1 CLEAR R1 TO REQUEST VIRTUAL READER 00920000
  929. BAL R14,DEFINE GET A VIRTUAL READER 00921000
  930. BAL R14,VSPOOLR SET CLASS * 00922000
  931. OPENRET LH R3,TAGID SPOOL ID FOR SELECT @VA05479 00923000
  932. LR R4,R1 SET RDR ADDR 00924000
  933. LA R5,X'00C' SELECT SFB SUBCODE 00925000
  934. DIAG R3,R4,X'14' MAKE FILE NEXT IN RDR 00926000
  935. BC 5,OPENRDER SYSTEM READ ERROR 00927000
  936. BC 2,OPENPOOF FILE GONE - FOOEY 00928000
  937. LR R3,R7 I/O AREA ADDRESS 00929000
  938. SR R5,R5 X'000' - READ SFB SUBCODE 00930000
  939. DIAG R3,R4,X'14' READ FIRST SP BUFFER 00931000
  940. BC 5,OPENRDER SYSTEM READ ERROR 00932000
  941. BC 2,OPENPOOF FILE GONE - TRY AGAIN 00933000
  942. STH R1,TAGDEV SET ACTIVE FILE VIRT DEV ADDR 00934000
  943. ST R7,TAGBLOCK ACTIVE FILE I/O AREA ADDR TO TAG 00935000
  944. ST R7,AXSRESP+8 AND TO THE RESPONSE 00936000
  945. MVC TAGNEXT(4),TAGACIN ENQUEUE THE ACTIVE QUEUE ON IT 00937000
  946. ST R2,TAGACIN PLACE IT AT THE START OF THE ACTIVE QUEUE 00938000
  947. ST R2,AXSRESP+4 SET THE TAG ADDRESS IN THE RESPONSE 00939000
  948. B OPENEXIT RETURN FOR MORE ACTION 00940000
  949. SPACE 00941000
  950. OPENARM EQU * 00942000
  951. OI LFLAG,LALERT SET CALLING TASK'S NAME 00943000
  952. B OPENNONE AND INDICATE NO FILE RETURNED 00944000
  953. SPACE 00945000
  954. OPENRDER EQU * 00946000
  955. OI TAGFLAG,SFBSHOLD HOLD THE BAD FILE 00947000
  956. BAL R14,DETACH DETACH THE DEVICE 00948000
  957. LH R1,TAGID SET THE SPOOL FILE ID 00949000
  958. BAL R14,AXSM108 ISSUE ERROR MESSAGE 00950000
  959. OI OPENCODE,NOLUCK SET SYSTEM ERROR POST CODE BIT 00951000
  960. LTR R7,R7 DO WE HAVE A PAGE CHECKED OUT? 00952000
  961. BZ OPENNONE NOPE - LEAVE NOW 00953000
  962. L R1,MAINMAP R1=START OF MAIN STORAGE MAP 00954000
  963. SRL R7,12 R7=PAGE NUMBER OF RESERVED PAGE 00955000
  964. LA R1,0(R7,R1) R7=BYTE ADDR IN MAIN STORAGE MAP 00956000
  965. MVI 0(R1),X'00' FREE THE GOTTEN PAGE 00957000
  966. B OPENNONE AND LEAVE WITH NO FILE INDICATION 00958000
  967. SPACE 00959000
  968. OPENPOOF EQU * 00960000
  969. BAL R14,DETACH DETACH THE DEVICE 00961000
  970. LH R1,TAGID SET THE SPOOL FILE ID 00962000
  971. BAL R14,AXSM106 ISSUE DISAPPEAR MSG 00963000
  972. BAL R14,FREESLOT FREE THE FILE'S TAG SLOT 00964000
  973. B OPENIRTY AND TRY FOR ANOTHER 00965000
  974. EJECT 00966000
  975. OPENOUT DC 0H'0' 00967000
  976. ST R14,OPENSAVE SAVE CALLER'S RETURN ADDRESS 00968000
  977. MVI OPENCODE,X'00' START WITH ZERO POST CODE 00969000
  978. MVC AXSRESP(20),AXSREQ SET THE RESP=REQ FOR NOW 00970000
  979. CLI AXSREQ,X'13' IS THE REQUEST LONG ENOUGH? 00971000
  980. BL OPENWHO NOPE - INVALID LINK ID 00972000
  981. TM AXSREQ+3,MULTOPEN SUPPRESS ACTIVE OUTPUT SCAN? 00973000
  982. BO OPENOLNK YES - TRUST HIM 00974000
  983. L R3,AXSREQ+4 R3=CALLER'S FILE TAG 00975000
  984. LA R2,TAGACOUT-(TAGNEXT-TAG) R2=START ADDR FOR QUEUE SCAN 00976000
  985. OPENOACT EQU * 00977000
  986. ICM R2,B'1111',TAGNEXT R2=NEXT TAG IN ACTIVE QUEUE 00978000
  987. BZ OPENOLNK NO ACTIVE TAG FOUND 00979000
  988. CLC AXSREQ+12(8),TAGLINK ACTIVE FILE FOR SAME LINK 00980000
  989. BNE OPENOACT NOPE - KEEP LOOKING 00981000
  990. MVC AXSRESP+8(4),TAGBLOCK OTHERWISE, GIVE BACK I/O AREA 00982000
  991. OI OPENCODE,OLDFILE INDICATE OLD FILE FOUND 00983000
  992. B OPENEXIT AND RETURN FOR MORE REQUESTS 00984000
  993. SPACE 00985000
  994. OPENOLNK EQU * 00986000
  995. LA R3,AXSREQ+12 R3=CALLER'S LINK ID 00987000
  996. LA R4,8 R4=LENGTH OF LINK ID 00988000
  997. BAL R14,GETLINK FIND HIS LINK TABLE ENTRY 00989000
  998. BNZ OPENWHO NOT FOUND - BOOT HIM 00990000
  999. BAL R14,GETSLOT TRY TO GET A SLOT FOR HIS TAG 00991000
  1000. BZ OPENNONE NO SLOT AVAILABLE - QUIT 00992000
  1001. L R15,TCOM GET COMMON ROUTINE ADDR 00993000
  1002. L R15,GPAGEREQ GET THE ROUTINE ADDR 00994000
  1003. LA R13,AXSCSAVE GET THE SAVEAREA ADDR 00995000
  1004. BALR R14,R15 GO GET A PAGE 00996000
  1005. LTR R1,R1 GET ONE? 00997000
  1006. BNZ OPENOOK GOT ONE - ALL SET 00998000
  1007. BAL R14,FREESLOT OTHERWISE, GIVE BACK THE TAG SLOT 00999000
  1008. B OPENNONE AND QUIT 01000000
  1009. OPENOOK EQU * 01001000
  1010. L R3,AXSREQ+4 R3=CALLER'S TAG ADDRESS 01002000
  1011. MVC 8(TAGLEN-8,R2),8(R3) MOVE IN CALLER'S TAG DATA 01003000
  1012. MVC TAGLINK(8),LINKID FORCE CORRECT LINK ID 01004000
  1013. CLC TAGINTOD(8),AXSBLANK ORIGIN TOD SPECIFIED? 01005000
  1014. BNE OPENOTOK YES - LEAVE AS IS 01006000
  1015. STCK TAGINTOD SET CURRENT TIME AS DEFAULT 01007000
  1016. OPENOTOK EQU * 01008000
  1017. LR R7,R1 R7=NEW I/O AREA ADDRESS 01009000
  1018. SR R1,R1 CLEAR R1 FOR INSERT 01010000
  1019. IC R1,TAGINDEV R1=DEVICE TYPE CODE 01011000
  1020. STC R1,DEVCODE DEV TYPE TO I/O TABLE 01012000
  1021. BAL R14,DEFINE REQUEST A DEVICE 01013000
  1022. BAL R14,VSPOOLP AND SET IT UP FOR OUTPUT 01014000
  1023. STH R1,TAGDEV SET OUTPUT DEV ADDR IN TAG 01015000
  1024. MVC 0(32,R7),OPENTABL INITIALIZE THE I/O AREA 01016000
  1025. STH R1,DEVCUU SET THE DEVICE ADDRESS IN THE I/O TABLE 01017000
  1026. LA R6,24(R7) R6=WRITE CCW ADDRESS 01018000
  1027. ST R6,PROGADDR SET THE PROGRAM ADDRESS IN THE I/O TABLE 01019000
  1028. LA R6,32(R7) R6=BUFFER ADDRESS 01020000
  1029. ST R6,24(R7) SET THE DATA ADDRESS IN THE WRITE CCW 01021000
  1030. MVI 24(R7),X'01' RESTORE THE WRITE COMMAND CODE 01022000
  1031. MVC TAGNEXT(4),TAGACOUT CHAIN THE ACTIVE OUTPUT QUEUE 01023000
  1032. ST R2,TAGACOUT AND PUT THE NEW TAG FIRST ON THE CHAIN 01024000
  1033. ST R7,TAGBLOCK SET THE NEW I/O AREA ADDRESS IN THE TAG 01025000
  1034. ST R7,AXSRESP+8 AND IN THE RESPONSE 01026000
  1035. B OPENEXIT RETURN FOR MORE REQUEST HANDLING 01027000
  1036. SPACE 3 01028000
  1037. OPENWHO EQU * 01029000
  1038. OI OPENCODE,NOLINK+NOFILE TELL CALLER ABOUT BAD LINK ID 01030000
  1039. B OPENEXIT 01031000
  1040. SPACE 01032000
  1041. OPENNONE EQU * 01033000
  1042. OI OPENCODE,NOFILE INDICATE NO FILE RETURNED 01034000
  1043. LTR R2,R2 ANY TAG TO REPLACE? 01035000
  1044. BZ OPENEXIT NO - JUST LEAVE 01036000
  1045. BAL R14,TAGPLACE PUT IT BACK 01037000
  1046. SPACE 01038000
  1047. OPENEXIT EQU * 01039000
  1048. SR R0,R0 CLEAR FOR POST CODE INSERT 01040000
  1049. IC R0,OPENCODE R0=APPROPRIATE REQUEST POST CODE 01041000
  1050. L R14,OPENSAVE R14=RETURN ADDRESS 01042000
  1051. BR R14 RETURN TO THE CALLER 01043000
  1052. EJECT 01044000
  1053. *. 01045000
  1054. * 01046000
  1055. * ENTRY NAME - 01047000
  1056. * 01048000
  1057. * CLOSIN 01049000
  1058. * 01050000
  1059. * FUNCTION - 01051000
  1060. * 01052000
  1061. * TERMINATE SPOOL FILE PROCESSING 01053000
  1062. * 01054000
  1063. * CALLS TO OTHER ROUTINES - 01055000
  1064. * 01056000
  1065. * NONE 01057000
  1066. * 01058000
  1067. * OPERATION - 01059000
  1068. * 01060000
  1069. * 1. LOCATE TAG IN TAG QUEUE AND DEQUEUE IT 01061000
  1070. * 01062000
  1071. * 2. IDENTIFY SUB-OPTION AND PROCESS ACCORDINGLY 01063000
  1072. * 01064000
  1073. * 3. DETACH THE VIRTUAL DEVICE AND FREE THE SPOOL 01065000
  1074. * BUFFER 01066000
  1075. * 01067000
  1076. * 4. RETURN TO CALLER 01068000
  1077. * 01069000
  1078. * RESPONSES - 01070000
  1079. * 01071000
  1080. * NONE 01072000
  1081. * 01073000
  1082. * ERROR MESSAGES - 01074000
  1083. * 01075000
  1084. * NONE 01076000
  1085. * 01077000
  1086. *. 01078000
  1087. SPACE 2 01079000
  1088. CLOSEIN DC 0H'0' 01080000
  1089. STM R14,R8,CLOSSAVE SAVE ENTRY REGS 01081000
  1090. SPACE 01082000
  1091. MVI CLOSCODE,X'00' INITIALIZE POST CODE 01083000
  1092. MVC AXSRESP(20),AXSREQ START WITH RESP=REQ 01084000
  1093. CLI AXSREQ,X'0B' LONG ENOUGH? 01085000
  1094. BL CLOSABAD NO - ERROR RETURN 01086000
  1095. SPACE 01087000
  1096. LA R2,TAGACIN-(TAGNEXT-TAG) INITIALIZE SCAN 01088000
  1097. CLOISCAN EQU * 01089000
  1098. LR R3,R2 SET PREDECESSOR 01090000
  1099. ICM R2,B'1111',TAGNEXT GO TO NEXT 01091000
  1100. BZ CLOSABAD ADDR NOT FOUND 01092000
  1101. CL R2,AXSREQ+4 IS THIS THE ONE? 01093000
  1102. BNE CLOISCAN NO - TRY ANOTHER 01094000
  1103. SPACE 01095000
  1104. MVC TAGNEXT-TAG(4,R3),TAGNEXT DEQUEUE TAG 01096000
  1105. EJECT @VM01117 01096100
  1106. LA R3,TAGLINK ADDR OF TAG'S LINK ID @VM01117 01096200
  1107. LA R4,8 LENGTH OF A LINK ID @VM01117 01096300
  1108. BAL R14,GETLINK FIND THE LINK TABLE @VM01117 01096400
  1109. LTR R15,R15 DID WE GET ONE? @VM01117 01096500
  1110. BZ CLOIGOT YES - ALL IS WELL @VM01117 01096600
  1111. SR R8,R8 CLEAR LINK TABLE POINTER @VM01117 01096700
  1112. CLOIGOT EQU * @VM01117 01096800
  1113. L R3,TAGBLOCK ADDR OF I/O AREA 01097000
  1114. LH R1,TAGDEV VIRT RDR DEV ADDR 01098000
  1115. SPACE 01099000
  1116. TM AXSREQ+3,X'40' CLOSE 'ALL'? 01100000
  1117. BO CLOIPURG YES - DO PURGE 01101000
  1118. TM AXSREQ+3,X'80' CLOSE 'HOLD'? 01102000
  1119. BO CLOIHOLD YES - KEEP IT AROUND 01103000
  1120. CLC TAGCOPY(2),=XL2'1' ANY MORE TO GO? 01104000
  1121. BNH CLOIPURG NO - PURGE THE FILE 01105000
  1122. SPACE 01106000
  1123. CLOIHOLD EQU * 01107000
  1124. XC TAGBLOCK(4),TAGBLOCK CLEAR I/O AREA ADDR 01108000
  1125. XC TAGDEV(2),TAGDEV CLEAR VIRT DEV ADDR 01109000
  1126. BAL R14,TAGPLACE PUT IT BACK IN QUEUE 01110000
  1127. BAL R14,VCLOSEH VM/370 CLOSE HOLD 01111000
  1128. MVI VCHCNTRL,X'FF' SET UNSPECIFIED FLAG 01112000
  1129. MVC VCHCNTRL+1(VCHCLEN-1),VCHCNTRL SET WHOLE AREA 01113000
  1130. TM AXSREQ+3,X'80' AXS CLOSE 'HOLD' 01114000
  1131. BNO CLOICOPY NO - DECREMENT COPY COUNT 01115000
  1132. TM AXSREQ+3,X'01' HOLD THE FILE ? @VA05662 01115100
  1133. BO CLOICHAN NO, JUST PLACE BACK IN Q @VA05662 01115200
  1134. OI TAGFLAG,SFBUHOLD SET USER HOLD BIT 01116000
  1135. MVI VCHCHO,X'7F' AND SET CHANGE TO HOLD 01117000
  1136. B CLOICHAN CLOSE 'HOLD' 'ALL' INVALID 01118000
  1137. SPACE 01119000
  1138. CLOICOPY EQU * 01120000
  1139. LH R0,TAGCOPY CURRENT COPY COUNT 01121000
  1140. BCTR R0,0 DECREMENT ONE 01122000
  1141. STH R0,TAGCOPY SET NEW COPY COUNT 01123000
  1142. STH R0,VCHCCO AND SET VM/370 CHANGE COPY 01124000
  1143. CLOICHAN EQU * 01125000
  1144. LR R0,R1 SAVE VIRT DEV ADDR 01126000
  1145. LH R1,TAGID SPOOL ID FOR CHANGE 01127000
  1146. BAL R14,VCHANGE DECREMENT VM/370 COPY COUNT 01128000
  1147. LR R1,R0 RESTORE VIRT DEV ADDR 01129000
  1148. CLOIFINI EQU * 01130000
  1149. BAL R14,DETACH DETACH IT 01131000
  1150. SRL R3,12 I/O AREA PAGE NUMBER 01132000
  1151. L R1,MAINMAP START OF STORAGE MAP 01133000
  1152. ALR R1,R3 ADDR OF I/O AREA ENTRY 01134000
  1153. MVI 0(R1),X'00' RELEASE THE PAGE 01135000
  1154. SPACE 01136000
  1155. CLOIEXIT EQU * 01137000
  1156. LM R14,R8,CLOSSAVE RESTORE ENTRY REGS 01138000
  1157. SR R0,R0 CLEAR FOR POST CODE 01139000
  1158. IC R0,CLOSCODE SET RETURN POST CODE 01140000
  1159. BR R14 AND RETURN 01141000
  1160. EJECT 01142000
  1161. CLOIPURG EQU * 01143000
  1162. BAL R14,VCLOSEP VM/370 CLOSE NOHOLD 01144000
  1163. CLC TAGCOPY(2),=XL2'1' ANY COPIES @VA05958 01144100
  1164. BE CLOIPUR2 NO....DONE THEN @VA05958 01144200
  1165. LR R0,R1 SAVE REG ONE @VA05958 01144300
  1166. LH R1,TAGID LOAD FILEID TO PURGE @VA05958 01144400
  1167. BAL R14,VPURGE PURGE ALL COPIES OF FILE @VA05958 01144500
  1168. LR R1,R0 RESTORE REG ONE @VA05958 01144600
  1169. CLOIPUR2 DS 0H @VA05958 01144700
  1170. BAL R14,AXSM105 ISSUE PURGED MSG 01145000
  1171. LTR R8,R8 ANY LINK TABLE ADDRESS? @VM01117 01146010
  1172. BZ CLOIFINI NO - FORGET TAG SLOT RETURN @VM01117 01147010
  1173. BAL R14,FREESLOT RETURN THE TAG SLOT @VM01117 01148010
  1174. B CLOIFINI DETACH AND FREE 01163000
  1175. EJECT 01164000
  1176. *. 01165000
  1177. * 01166000
  1178. * ENTRY NAME - 01167000
  1179. * 01168000
  1180. * CLOSEOUT 01169000
  1181. * 01170000
  1182. * FUNCTION - 01171000
  1183. * 01172000
  1184. * TERMINATE PROCESSING FOR OUTPUT FILES. 01173000
  1185. * 01174000
  1186. * CALLS TO OTHER ROUTINES - 01175000
  1187. * 01176000
  1188. * NONE 01177000
  1189. * 01178000
  1190. * OPERATION - 01179000
  1191. * 01180000
  1192. * 1. LOCATE THE OUTPUT TAG AND DEQUEUE IT. 01181000
  1193. * 01182000
  1194. * 2. UPDATE TAG INFO FROM CALLERS TAG 01183000
  1195. * 01184000
  1196. * 3. DETACH THE VIRTUAL DEVICE AND FREE THE SPOOL 01185000
  1197. * PAGE BUFFER 01186000
  1198. * 01187000
  1199. * 4. FREE THE TAG SLOT 01188000
  1200. * 01189000
  1201. * 5. RETURN TO CALLER 01190000
  1202. * 01191000
  1203. * RESPONSES - 01192000
  1204. * 01193000
  1205. * DMTAXS104I FILE SPOOLED TO 'USERID2' -- ORG 'LOCID1' 01194000
  1206. * ('USERID1') MM/DD/YY HH:MM:SS 01195000
  1207. * 01196000
  1208. * ERROR MESSAGES - 01197000
  1209. * 01198000
  1210. * NONE 01199000
  1211. * 01200000
  1212. *. 01201000
  1213. SPACE 2 01202000
  1214. CLOSEOUT DC 0H'0' 01203000
  1215. STM R14,R8,CLOSSAVE SAVE ENTRY REGS 01204000
  1216. SPACE 01205000
  1217. MVC CLOSCODE,X'00' INITIALIZE POST CODE 01206000
  1218. MVC AXSRESP(20),AXSREQ START WITH RESP=REQ 01207000
  1219. CLI AXSREQ,X'0B' LONG ENOUGH? 01208000
  1220. BL CLOSABAD NO - ERROR RETURN 01209000
  1221. SPACE 01210000
  1222. LA R2,TAGACOUT-(TAGNEXT-TAG) INITIALIZE SCAN 01211000
  1223. CLOOSCAN EQU * 01212000
  1224. LR R3,R2 SET PREDECESSOR TAG ADDR 01213000
  1225. ICM R2,B'1111',TAGNEXT GO TO NEXT TAG 01214000
  1226. BZ CLOSABAD NOT FOUND 01215000
  1227. CLC AXSREQ+8(4),TAGBLOCK I/O AREA ADDR MATCH? 01216000
  1228. BNE CLOOSCAN NO - TRY NEXT 01217000
  1229. SPACE 01218000
  1230. MVC TAGNEXT-TAG(4,R3),TAGNEXT DEQUEUE TAG 01219000
  1231. SPACE 01220000
  1232. L R3,AXSREQ+4 CALLER'S TAG IMAGE ADDR 01221000
  1233. MVC TAGCLASS(1),TAGCLASS-TAG(R3) UPDATE CLASS 01222000
  1234. MVC TAGCOPY(2),TAGCOPY-TAG(R3) UPDATE COPY 01223000
  1235. MVC TAGNAME(24),TAGNAME-TAG(R3) UPDATE NAME 01224000
  1236. MVC TAGDIST(8),TAGDIST-TAG(R3) UPDATE DIST CODE 01225000
  1237. MVC TAGTOVM(8),TAGTOVM-TAG(R3) UPDATE XFER VM ID 01226000
  1238. SPACE 01227000
  1239. L R3,TAGBLOCK I/O AREA ADDR 01228000
  1240. LH R1,TAGDEV VIRTUAL OUTPUT DEV ADDR 01229000
  1241. BAL R14,VSPOOLP UPDATE SPOOL VARIABLES 01230000
  1242. BAL R14,VCLOSEO VM/370 CLOSE OUTPUT 01231000
  1243. BAL R14,DETACH DETACH THE OUTPUT DEV 01232000
  1244. SRL R3,12 I/O AREA PAGE NUMBER 01233000
  1245. L R1,MAINMAP ADDR OF MAIN STORAGE MAP 01234000
  1246. ALR R1,R3 ADDR OF I/O AREA PAGE ENTRY 01235000
  1247. MVI 0(R1),X'00' RELEASE THE I/O AREA PAGE 01236000
  1248. XC AXSRESP+8(4),AXSRESP+8 CLEAR I/O AREA ADDR 01237000
  1249. SPACE 01238000
  1250. MVC AXSMSGVM(8),TAGTOVM SET DEST VM ID 01239000
  1251. MVC AXSMSGV0(8),TAGTOVM AND IN MSG AS WELL 01240000
  1252. MVC AXSMSGV1(8),TAGINLOC SET ORIGIN LOCATION ID 01241000
  1253. MVC AXSMSGV2(8),TAGINVM SET ORIGIN VM ID 01242000
  1254. MVC AXSWORK(19),AXSTMASK SET TOD EDITING MASK 01243000
  1255. LM R0,R1,TAGINTOD ORIGIN TOD S/370 FORMAT 01244000
  1256. LR R3,R2 SAVE THE TAG ADDRESS 01245000
  1257. LA R2,AXSWORK ADDR OF OUTPUT AREA 01246000
  1258. BAL R14,TODEBCD CONVERT TO DATE TIME EBCDIC 01247000
  1259. LR R2,R3 RESTORE THE TAG ADDR 01248000
  1260. MVC AXSMSGV3(24),AXSWORK+1 MOVE TO MSG 01249000
  1261. BAL R14,AXSM104 ISSUE THE XFER MSG 01250000
  1262. SPACE 01251000
  1263. LA R3,TAGLINK R3 = ADDR OF LINK ID 01252000
  1264. LA R4,8 R4 = LINK ID LENGTH 01253000
  1265. BAL R14,GETLINK GET THE LINK TABLE 01254000
  1266. BNZ CLOSEXIT NO LINK TABLE - GIVE UP 01255000
  1267. BAL R14,FREESLOT RELEASE THE TAG SLOT 01256000
  1268. EJECT 01257000
  1269. CLOSEXIT EQU * 01258000
  1270. LM R14,R8,CLOSSAVE RESTORE ENTRY REGS 01259000
  1271. SR R0,R0 CLEAR R0 FOR POST CODE 01260000
  1272. IC R0,CLOSCODE SET THE CLOSE POST CODE 01261000
  1273. BR R14 AND RETURN FOR MORE 01262000
  1274. SPACE 2 01263000
  1275. CLOSABAD EQU * 01264000
  1276. OI CLOSCODE,X'04' INDICATE BAD TAG ADDR 01265000
  1277. B CLOSEXIT AND RETURN LIKE THAT 01266000
  1278. SPACE 3 01267000
  1279. CLOSSAVE DC 11F'0' CLOSE ROUTINE SAVE AREA 01268000
  1280. SPACE 01269000
  1281. CLOSCODE DC X'00',X'00' POST CODE ACCUMULATOR 01270000
  1282. EJECT 01271000
  1283. *. 01272000
  1284. * 01273000
  1285. * ENTRY NAME - 01274000
  1286. * 01275000
  1287. * MSG 01276000
  1288. * 01277000
  1289. * FUNCTION - 01278000
  1290. * 01279000
  1291. * SET THE MSG REQUEST ELEMENT, AND CALL GIVE PASS IT TO 01280000
  1292. * TO THE MESSAGE MANAGER. ENTRIES BELOW FORMAT THE 01281000
  1293. * MSG ELEMENT VARIABLE AREA IN VARIOUS WAYS AND EXIT 01282000
  1294. * FINALLY TO MSG. 01283000
  1295. * 01284000
  1296. * CALLS TO OTHER ROUTINES - 01285000
  1297. * 01286000
  1298. * DMTGIV - TO ISSUE MSG REQUEST TO DMTREX 01287000
  1299. * DMTWAT - TO WAIT FOR THE REQUEST TO BE TAKEN 01288000
  1300. * 01289000
  1301. * OPERATION - 01290000
  1302. * 01291000
  1303. * 1. SETUP THE APPROPRIATE TYPE OF MSG, BASED ON FORMAT 01292000
  1304. * 01293000
  1305. * 2. GIVE THE MSG ELEMENT TO DMTREX AND WAIT FOR COMPLETION 01294000
  1306. * 01295000
  1307. * 3. RETURN TO CALLER 01296000
  1308. * 01297000
  1309. * RESPONSES - 01298000
  1310. * 01299000
  1311. * NONE 01300000
  1312. * 01301000
  1313. * ERROR MESSAGES - 01302000
  1314. * 01303000
  1315. * NONE 01304000
  1316. * 01305000
  1317. *. 01306000
  1318. SPACE 3 01307000
  1319. MSG DC 0H'0' 01308000
  1320. STM R14,R1,MSGSAVE SAVE REGISTERS 01309000
  1321. MSGDO EQU * 01310000
  1322. BCTR R0,0 DECREMENT REQ LENGTH ONE 01311000
  1323. STC R0,AXSMSG SET MSG REQ ELEMENT LEN 01312000
  1324. STH R15,AXSMSGNM AND SET THE MSG NUMBER 01313000
  1325. LA R1,MSGREQ SET GIVE TABLE ADDR 01314000
  1326. XC 0(4,R1),0(R1) CLEAR POSTED SYNCH LOCK 01315000
  1327. L R15,GIVEREQ SYSTEM GIVE REQUEST EXECUTATOR 01316000
  1328. BALR R14,R15 GO GIVE THE BUFFER TO REX 01317000
  1329. L R15,WAITREQ ENTRY FOR WAIT SERVICE 01318000
  1330. BALR R14,R15 WAIT FOR LAST TO FINISH 01319000
  1331. SPACE 01320000
  1332. LM R14,R1,MSGSAVE RESTORE REGS 01321000
  1333. BR R14 AND RETURN 01322000
  1334. SPACE 3 01323000
  1335. MSGSPID EQU * 01324000
  1336. LA R0,28+8 SET ONE VARIABLE MSG LEN 01325000
  1337. MSGSPID0 EQU * 01326000
  1338. MVC AXSMSGV0(8),AXSBLANK CLEAR FIRST VAR FIELD 01327000
  1339. STM R15,R0,MSGXSAVE SAVE DECPUT REGS 01328000
  1340. LA R15,AXSMSGV0 SET DECPUT TARGET 01329000
  1341. LA R0,4 SET MIN TRUNC 01330000
  1342. BAL R14,DECPUT CONVERT THE SPOOL ID 01331000
  1343. LM R15,R0,MSGXSAVE RESTORE DECPUT REGS 01332000
  1344. B MSGDO GIVE IT TO REX 01333000
  1345. SPACE 01334000
  1346. MSGNN EQU * 01335000
  1347. MVC AXSMSGV0(8),AXSBLANK CLEAR FIRST VAR FIELD 01336000
  1348. STM R15,R0,MSGXSAVE SAVE DECPUT REGS 01337000
  1349. LA R15,AXSMSGV0 SET DECPUT NUMBER TARGET 01338000
  1350. SLR R0,R0 NO MIN TRUNC 01339000
  1351. BAL R14,DECPUT CONVERT THE NUMBER 01340000
  1352. LM R15,R0,MSGXSAVE RESTORE DECPUT REGS 01341000
  1353. MVC AXSMSGV1(8),LINKID SET LINKID SECOND VAR 01342000
  1354. LA R0,28+2*8 SET MSG REQ LEN 01343000
  1355. B MSGDO GIVE THE MSG TO REX 01344000
  1356. SPACE 01345000
  1357. MSGLKID1 EQU * 01346000
  1358. MVC AXSMSGV1(8),LINKID SET LINK ID SECOND VAR 01347000
  1359. LA R0,28+2*8 SET MSG REQ LENGTH FOR TWO 01348000
  1360. B MSGSPID0 PUT THE SPOOL ID IN FIRST 01349000
  1361. SPACE 01350000
  1362. AXSM101 EQU * 01351000
  1363. STM R14,R1,MSGSAVE SAVE REGS 01352000
  1364. LA R15,101 SET MSG NUMBER 01353000
  1365. B MSGLKID1 FORMAT VARIABLES 01354000
  1366. SPACE 01355000
  1367. AXSM102 EQU * 01356000
  1368. STM R14,R1,MSGSAVE SAVE REGS 01357000
  1369. LA R15,102 SET MSG NUMBER 01358000
  1370. B MSGLKID1 FORMAT VARIABLES 01359000
  1371. SPACE 01360000
  1372. AXSM103 EQU * 01361000
  1373. STM R14,R1,MSGSAVE SAVE REGS 01362000
  1374. LA R15,103 SET MSG NUMBER 01363000
  1375. B MSGSPID FORMAT SPOOL ID 01364000
  1376. SPACE 01365000
  1377. AXSM104 EQU * 01366000
  1378. STM R14,R1,MSGSAVE SAVE REGS 01367000
  1379. LA R15,104 SET MSG NUMBER 01368000
  1380. LA R0,28+6*8 SET MSG REQ LEN FOR SIX 01369000
  1381. B MSGDO VARIABLES PREFORMATTED 01370000
  1382. SPACE 01371000
  1383. AXSM105 EQU * 01372000
  1384. STM R14,R1,MSGSAVE SAVE REGS 01373000
  1385. LH R1,TAGID SET THE PURGED TAG ID 01374000
  1386. LA R15,105 SET MSG NUMBER 01375000
  1387. B MSGSPID FORMAT SPOOL ID 01376000
  1388. EJECT 01377000
  1389. AXSM106 EQU * 01378000
  1390. STM R14,R1,MSGSAVE SAVE REGS 01379000
  1391. LA R15,106 SET MSG NUMBER 01380000
  1392. B MSGLKID1 FORMAT VARIABLES 01381000
  1393. SPACE 01382000
  1394. AXSM107 EQU * 01383000
  1395. STM R14,R1,MSGSAVE SAVE REGS 01384000
  1396. LA R15,107 SET MSG NUMBER 01385000
  1397. B MSGNN FORMAT NUMBER 01386000
  1398. SPACE 01387000
  1399. AXSM108 EQU * 01388000
  1400. STM R14,R1,MSGSAVE SAVE REGS 01389000
  1401. LA R15,108 SET MSG NUMBER 01390000
  1402. B MSGSPID FORMAT SPOOL ID 01391000
  1403. SPACE 01392000
  1404. MSGREQ DC 0F'0',X'80',AL3(0) SYNCH LOCK STARTS POSTED 01398000
  1405. DC CL4'REX ' MSG MGR TASK NAME 01399000
  1406. DC A(AXSMSG) MSG REQ ELEMENT ADDR 01400000
  1407. DC A(0) NO RESP BUFFER 01401000
  1408. SPACE 2 01402000
  1409. MSGSAVE DC 4F'0' MAIN SAVE AREA 01403000
  1410. MSGXSAVE DC 2F'0' PROLOG SAVE AREA 01404000
  1411. EJECT 01405000
  1412. *. 01406000
  1413. *---------------------------------------------------------------------* 01407000
  1414. * PARMGET -- LINE SCANNING SUBROUTINE * 01408000
  1415. *---------------------------------------------------------------------* 01409000
  1416. * 01410000
  1417. * ON ENTRY: R3=ADDRESS OF START OF STRING 01411000
  1418. * R5=ADDRESS OF END OF STRING 01412000
  1419. * 01413000
  1420. * ON EXIT: R3=FIRST NONDELIMETER CHARACTER SCANNED; 01414000
  1421. * IF NONE FOUND, END OF STRING 01415000
  1422. * R4=UNMODIFIED IF NO NONDELIMETER CHAR SCANNED; 01416000
  1423. * OTHERWISE, ADDRESS OF FIRST DELIMETER CHAR 01417000
  1424. * AFTER FIRST NONDELIMETER CHAR SCANNED; 01418000
  1425. * IF NONE, END OF STRING. 01419000
  1426. * R5=UNMODIFIED 01420000
  1427. * 01421000
  1428. * A DELIMETER CHAR IS ANY CHARACTER OF THE FORM B'0X000000' 01422000
  1429. *. 01423000
  1430. SPACE 01424000
  1431. PARMGET DC 0H'0' 01425000
  1432. LA R5,0(R5) CLEAR HIGH ORDER BYTE JUST IN CASE 01426000
  1433. BCTR R3,0 BUMP START OF STRING POINTER BACK FOR CONVENIENCE 01427000
  1434. PARMFIND EQU * 01428000
  1435. LA R3,1(R3) LOOK AT THE NEXT CHARACTER 01429000
  1436. CLR R3,R5 HAVE WE HIT THE END OF THE STRING? 01430000
  1437. BCR 11,R14 (BNL) YEP - LOOK NO MORE 01431000
  1438. TM 0(R3),X'BF' IS THIS CHARACTER A DELIMETER? 01432000
  1439. BZ PARMFIND YEP - KEEP LOOKING FOR A NONDELIMETER 01433000
  1440. LR R4,R3 OTHERWISE SET UP FOR NEXT PHASE OF SCAN 01434000
  1441. PARMSCAN EQU * 01435000
  1442. LA R4,1(R4) LOOK AT THE NEXT CHARACTER 01436000
  1443. CLR R4,R5 ARE WE AT THE END OF THE STRING YET? 01437000
  1444. BCR 11,R14 (BNL) RETURN IMMEDIATELY IF SO 01438000
  1445. TM 0(R4),X'BF' IS THIS CHARACTER A DELIMETER? 01439000
  1446. BNZ PARMSCAN KEEP SCANNING FOR A DELIMETER IF NOT 01440000
  1447. BR R14 OTHERWISE ALL DONE - RETURN 01441000
  1448. SPACE 3 01442000
  1449. *---------------------------------------------------------------------* 01443000
  1450. * TAGSETUP -- SET UP FOR SCAN OF FIRST TAG PARAMETER * 01444000
  1451. *---------------------------------------------------------------------* 01445000
  1452. SPACE 01446000
  1453. TAGSETUP DC 0H'0' 01447000
  1454. LA R3,AXSSPTAG+12 R3=ADDRESS OF ORDINARY START OF TAG 01448000
  1455. LR R5,R3 R5=START OF TAG DATA, TOO 01449000
  1456. AH R5,AXSSPTAG+6 OTHERWISE, R5=ADDR OF END TAG DATA 01452000
  1457. CLR R0,R0 SET CC = 0 01453000
  1458. BR R14 AND RETURN TO THE CALLER 01454000
  1459. EJECT 01455000
  1460. *. 01456000
  1461. * 01457000
  1462. * ENTRY NAME - 01458000
  1463. * 01459000
  1464. * HEXGET 01460000
  1465. * 01461000
  1466. * FUNCTION - 01462000
  1467. * 01463000
  1468. * CONVERT AND VALIDATE A HEX STRING 01464000
  1469. * 01465000
  1470. * CALLS TO OTHER ROUTINES - 01466000
  1471. * 01467000
  1472. * NONE 01468000
  1473. * 01469000
  1474. * ENTRY: 01470000
  1475. * 01471000
  1476. * R3,R4 = START AND END ADDR OF PARM 01472000
  1477. * R5 = END ADDR OF LINE 01473000
  1478. * R8 = (UNSIGNED) LOWER RANGE LIMIT 01474000
  1479. * R9 = (UNSIGNED) UPPER RANGE LIMIT 01475000
  1480. * 01476000
  1481. * EXIT: 01477000
  1482. * 01478000
  1483. * CC=0 => HEX NUMBER VALID (IN R0) WITHIN RANGE 01479000
  1484. * CC=1 => HEX NUMBER VALID (IN R0) OUT OF RANGE 01480000
  1485. * CC=2 => COUNT GREATER THAN 8, OR INVALID CHARS IN PARM 01481000
  1486. * CC=3 => COUNT 0 OR NEGATIVE 01482000
  1487. * 01483000
  1488. * CC=0: 01484000
  1489. * R0 = VALID HEX NUMBER 01485000
  1490. * R4 = COUNT -1 OF (VALID) PARM 01486000
  1491. * 01487000
  1492. * CC=1: 01488000
  1493. * R0 = VALID (OUT OF RANGE) HEX NUMBER 01489000
  1494. * R4 = COUNT-1 OF (OUT OF RANGE) PARM 01490000
  1495. * 01491000
  1496. * CC=2: 01492000
  1497. * R4 = COUNT -1 OF (INVALID) PARM 01493000
  1498. * 01494000
  1499. * CC=3: 01495000
  1500. * R4 = SAME AS ON ENTRY 01496000
  1501. * 01497000
  1502. * 01498000
  1503. * OPERATION - 01499000
  1504. * 01500000
  1505. * 1. VALIDATE PARAMETER 01501000
  1506. * 01502000
  1507. * 2. MOVE TO WORK AREA 01503000
  1508. * 01504000
  1509. * 3. CONVERT TO HEX 01505000
  1510. * 01506000
  1511. * 4. SET RETURN CODE AND RETURN 01507000
  1512. * 01508000
  1513. EJECT 01509000
  1514. * 01510000
  1515. * RESPONSES - 01511000
  1516. * 01512000
  1517. * NONE 01513000
  1518. * 01514000
  1519. * ERROR MESSAGES - 01515000
  1520. * 01516000
  1521. * NONE 01517000
  1522. * 01518000
  1523. *. 01519000
  1524. SPACE 2 01520000
  1525. HEXGET DC 0H'0' 01521000
  1526. SR R4,R3 GET LENGTH OF PARM 01522000
  1527. BNP HEXGETC3 ERROR 01523000
  1528. CLR R3,R5 END OF LINE? 01524000
  1529. BNL HEXGETC3 WENT TOO FAR 01525000
  1530. CL R4,AXSLIMIT TOO LONG? 01526000
  1531. BCTR R4,0 REDUCE BY ONE FOR CHAR OP 01527000
  1532. BH HEXGETC2 TOO LONG 01528000
  1533. XC AXSWORK(8),AXSWORK CLEAR WORK AREA 01529000
  1534. ST R15,AXSWORK+8 SAVE REG.15 CONTENTS 01530000
  1535. LA R15,AXSWORK+7 LAST CHAR OF TARGET 01531000
  1536. SLR R15,R4 FIRST CHAR OF TARGET 01532000
  1537. EX R4,AXSMOVE MOVE EBCDIC NUMBER TO WORK 01533000
  1538. L R15,AXSWORK+8 RESTORE REG.15 01534000
  1539. TR AXSWORK(8),AXSTOHEX TRANSLATE TO HEX 01535000
  1540. MVI AXSWORK+8,X'80' MOVE IN FIRST COMPARE 01536000
  1541. MVC AXSWORK+9(7),AXSWORK+8 AND PROPAGATE 01537000
  1542. NC AXSWORK+8(8),AXSWORK TEST FOR ILLEGAL CHAR 01538000
  1543. BNZ HEXGETC2 INVALID 01539000
  1544. PACK AXSWORK+16(5),AXSWORK(9) MOVE IN 01540000
  1545. L R0,AXSWORK+16 GET GENERATED NUMBER 01541000
  1546. CLR R0,R8 TOO LOW FOR RANGE 01542000
  1547. BL HEXGETC1 YES 01543000
  1548. CLR R0,R9 TOO HIGH FOR RANGE 01544000
  1549. BH HEXGETC1 YES 01545000
  1550. HEXGETC0 EQU * 01546000
  1551. CLR R0,R0 SET CC=0 01547000
  1552. BR R14 AND RETURN 01548000
  1553. SPACE 1 01549000
  1554. HEXGETC1 EQU * 01550000
  1555. OI AXSWORK+9,X'80' SET CC=1 01551000
  1556. BR R14 AND RETURN 01552000
  1557. SPACE 1 01553000
  1558. HEXGETC2 EQU * 01554000
  1559. LA R14,0(R14) CLEAR SIGN BIT 01555000
  1560. LTR R14,R14 SET CC=2 01556000
  1561. BR R14 AND RETURN 01557000
  1562. SPACE 1 01558000
  1563. HEXGETC3 EQU * 01559000
  1564. ALR R4,R3 PUT R4 BACK WHERE IT WAS 01560000
  1565. TM *+1,X'80' SET CC=3 01561000
  1566. BR R14 AND RETURN 01562000
  1567. EJECT 01563000
  1568. *. 01564000
  1569. * 01565000
  1570. * ENTRY NAME - 01566000
  1571. * 01567000
  1572. * DECGET 01568000
  1573. * 01569000
  1574. * FUNCTION - 01570000
  1575. * 01571000
  1576. * CONVERT AND VALIDATE A DECIMAL STRING 01572000
  1577. * 01573000
  1578. * CALLS TO OTHER ROUTINES - 01574000
  1579. * 01575000
  1580. * NONE 01576000
  1581. * 01577000
  1582. * ENTRY: 01578000
  1583. * 01579000
  1584. * R3,R4 = START AND END ADDR OF PARM 01580000
  1585. * R5 = END ADDR OF LINE 01581000
  1586. * R8 = (UNSIGNED) LOWER RANGE LIMIT 01582000
  1587. * R9 = (UNSIGNED) UPPER RANGE LIMIT 01583000
  1588. * 01584000
  1589. * EXIT: 01585000
  1590. * 01586000
  1591. * CC=0 => HEX NUMBER VALID (IN R0) WITHIN RANGE 01587000
  1592. * CC=1 => HEX NUMBER VALID (IN R0) OUT OF RANGE 01588000
  1593. * CC=2 => COUNT GREATER THAN 8, OR INVALID CHARS IN PARM 01589000
  1594. * CC=3 => COUNT 0 OR NEGATIVE 01590000
  1595. * 01591000
  1596. * CC=0: 01592000
  1597. * R0 = VALID HEX NUMBER 01593000
  1598. * R4 = COUNT -1 OF (VALID) PARM 01594000
  1599. * 01595000
  1600. * CC=1: 01596000
  1601. * R0 = VALID (OUT OF RANGE) HEX NUMBER 01597000
  1602. * R4 = COUNT-1 OF (OUT OF RANGE) PARM 01598000
  1603. * 01599000
  1604. * CC=2: 01600000
  1605. * R4 = COUNT -1 OF (INVALID) PARM 01601000
  1606. * 01602000
  1607. * CC=3: 01603000
  1608. * R4 = SAME AS ON ENTRY 01604000
  1609. * 01605000
  1610. * 01606000
  1611. * OPERATION - 01607000
  1612. * 01608000
  1613. * 1. VALIDATE PARAMETER 01609000
  1614. * 01610000
  1615. * 2. MOVE TO WORK AREA 01611000
  1616. * 01612000
  1617. * 3. CONVERT TO HEX 01613000
  1618. * 01614000
  1619. * 4. SET RETURN CODE AND RETURN 01615000
  1620. * 01616000
  1621. EJECT 01617000
  1622. * 01618000
  1623. * RESPONSES - 01619000
  1624. * 01620000
  1625. * NONE 01621000
  1626. * 01622000
  1627. * ERROR MESSAGES - 01623000
  1628. * 01624000
  1629. * NONE 01625000
  1630. * 01626000
  1631. *. 01627000
  1632. SPACE 2 01628000
  1633. DECGET EQU * 01629000
  1634. SR R4,R3 LENGTH OF PARM 01630000
  1635. BNP DECGETC3 NO GOOD 01631000
  1636. CLR R3,R5 ANY AT ALL? 01632000
  1637. BNL DECGETC3 NOPE - ERROR 01633000
  1638. CL R4,DECLIMIT TOO MUCH 01634000
  1639. BCTR R4,0 DOWN ONE IN CASE 01635000
  1640. BH DECGETC2 YEP 01636000
  1641. XC AXSWORK(16),AXSWORK CLEAR WORK AREA 01637000
  1642. ST R15,AXSWORK+16 SAVE CALLER'S REG.15 01638000
  1643. LA R15,AXSWORK+12 LAST CHAR ADDRESS 01639000
  1644. SLR R15,R4 FIRST CHAR ADDRESS 01640000
  1645. EX R4,AXSMOVE MOVE TO WORK AREA 01641000
  1646. L R15,AXSWORK+16 RESTORE CALLER'S REG.15 01642000
  1647. TR AXSWORK(13),AXSTOHEX TRANSLATE TO PACKABLE HEX 01643000
  1648. TR AXSWORK(13),AXSTODEC CLEAR INVALID DECIMAL 01644000
  1649. MVI AXSWORK+16,X'80' SET CHECKING FIELD 01645000
  1650. MVC AXSWORK+17(12),AXSWORK+16 SET WHOLE FILED 01646000
  1651. NC AXSWORK+16(13),AXSWORK CHECK FOR INVALID CHARS 01647000
  1652. BNZ DECGETC2 BAD NEWS - ERROR 01648000
  1653. OI AXSWORK+12,X'C0' SET SIGN FIELD 01649000
  1654. PACK AXSWORK+17(7),AXSWORK(13) CONVERT TO PACKED DEC 01650000
  1655. MVI AXSWORK+16,X'00' SET TOP BYTE TO ZERO 01651000
  1656. CLC AXSWORK+16(8),DECMAX TOO BIG? 01652000
  1657. BH DECGETC2 YEP - ERROR 01653000
  1658. CVB R0,AXSWORK+16 GET BINARY COUNT 01654000
  1659. CLR R0,R8 TOO LOW FOR RANGE? 01655000
  1660. BL DECGETC1 YES 01656000
  1661. CLR R0,R9 TOO HIGH FOR RANGE? 01657000
  1662. BH DECGETC1 YES 01658000
  1663. DECGETC0 EQU * 01659000
  1664. CLR R0,R0 SET CC=0 01660000
  1665. BR R14 AND RETURN 01661000
  1666. SPACE 01662000
  1667. DECGETC1 EQU * 01663000
  1668. OI AXSWORK+15,X'80' SET CC=1 01664000
  1669. BR R14 AND RETURN 01665000
  1670. SPACE 01666000
  1671. DECGETC2 EQU * 01667000
  1672. LA R14,0(R14) CLEAR SIGN 01668000
  1673. LTR R14,R14 SET CC=2 01669000
  1674. BR R14 AND RETURN 01670000
  1675. SPACE 01671000
  1676. DECGETC3 EQU * 01672000
  1677. ALR R4,R3 RESTORE R4 01673000
  1678. TM *+1,X'80' SET CC=3 01674000
  1679. BR R14 AND RETURN 01675000
  1680. SPACE 01676000
  1681. DECLIMIT DC F'10' MAX CHARS FOR INPUT 01677000
  1682. DECMAX DC PL8'2147483647' MAX POSITIVE FULLWORD 01678000
  1683. EJECT 01679000
  1684. *. 01680000
  1685. * 01681000
  1686. * ENTRY NAME - 01682000
  1687. * 01683000
  1688. * DECPUT 01684000
  1689. * 01685000
  1690. * FUNCTION - 01686000
  1691. * 01687000
  1692. * CONVERTS A HEX FULLWORD TO DECIMAL AND GENERATES AN 01688000
  1693. * EBCDIC REPRESENTATION OF IT, SUPPRESSING LEADING ZEROES 01689000
  1694. * TO A MINIMUM COUNT, OPTIONALLY SUPPLIED BY THE CALLER. 01690000
  1695. * 01691000
  1696. * CALLS TO OTHER ROUTINES - 01692000
  1697. * 01693000
  1698. * NONE 01694000
  1699. * 01695000
  1700. * OPERATION - 01696000
  1701. * 01697000
  1702. * 1. CONVERT TO DECIMAL AND UNPACK THE NUMBER 01698000
  1703. * 01699000
  1704. * 2. SUPRESS LEADING ZEROS 01700000
  1705. * 01701000
  1706. * 3. RETURN TO CALLER 01702000
  1707. * 01703000
  1708. * ENTRY: 01704000
  1709. * 01705000
  1710. * R0 = MINIMUM EBCDIC CHARACTER COUNT 01706000
  1711. * R1 = NUMBER TO BE CONVERTED TO DECIMAL EBCDIC 01707000
  1712. * R15 = OUTPUT (TARGET) FIELD 01708000
  1713. * 01709000
  1714. * EXIT: 01710000
  1715. * 01711000
  1716. * R0 = NUMBER OF CHARACTERS MOVED, AFTER 01712000
  1717. * SUPPRESSION OF LEADING ZEROS 01713000
  1718. * 01714000
  1719. * RESPONSES - 01715000
  1720. * 01716000
  1721. * NONE 01717000
  1722. * 01718000
  1723. * ERROR MESSAGES - 01719000
  1724. * 01720000
  1725. * NONE 01721000
  1726. * 01722000
  1727. *. 01723000
  1728. SPACE 2 01724000
  1729. DECPUT EQU * 01725000
  1730. STM R0,R4,DECPSAVE SAVE CALLER'S REGISTERS TO BE USED 01726000
  1731. CVD R1,AXSWORK SET PACKED DECIMAL IN STORAGE 01727000
  1732. UNPK AXSWORK+8(11),AXSWORK+2(6) CONVERT TO UNPACKED DEC 01728000
  1733. OI AXSWORK+18,X'F0' FORCE PROPER ZONE FOR EBCDIC 01729000
  1734. LA R3,AXSWORK+9 INITIALIZE SOURCE FIELD 01730000
  1735. LA R4,AXSWORK+18 INITIALIZE END OF SOURCE FIELD 01731000
  1736. LA R1,10 SET MAX DIGIT CHAR COUNT 01732000
  1737. S R1,DECPSAVE SET MAX SUPPRESSION LAPS 01733000
  1738. BNP DECPHIT NO SUPPRESSION AT ALL 01734000
  1739. DECPNEXT EQU * 01735000
  1740. CLI 0(R3),C'0' IS IT ZERO? 01736000
  1741. BNE DECPHIT NOPE - USE IT 01737000
  1742. CLR R3,R4 PAST THE LIMIT? 01738000
  1743. BNL DECPHIT YES - DO IT 01739000
  1744. LA R3,1(R3) BUMP TO NEXT CHAR 01740000
  1745. BCT R1,DECPNEXT AND CHECK IT 01741000
  1746. DECPHIT EQU * 01742000
  1747. SLR R4,R3 COUNT TO MOVE -1 01743000
  1748. EX R4,AXSMOVE MOVE NUMBER TO TARGET 01744000
  1749. LA R0,1(R4) RETURN COUNT 01745000
  1750. LM R1,R4,DECPSAVE+4 RESTORE CALLER'S REGS 01746000
  1751. BR R14 AND RETURN TO CALLER 01747000
  1752. SPACE 2 01748000
  1753. DECPSAVE DC 5F'0' DECPUT SAVE AREA 01749000
  1754. EJECT 01750000
  1755. *. 01751000
  1756. * 01752000
  1757. * ENTRY NAME - 01753000
  1758. * 01754000
  1759. * TODS370 01755000
  1760. * 01756000
  1761. * FUNCTION - 01757000
  1762. * 01758000
  1763. * CONVERT EBCDIC TO S/370 TOD 01759000
  1764. * 01760000
  1765. * CALLS TO OTHER ROUTINES - 01761000
  1766. * 01762000
  1767. * NONE 01763000
  1768. * 01764000
  1769. * ENTRY: 01765000
  1770. * 01766000
  1771. * R1=ADDRESS OF EBCDIC MM/DD/YYHH:MM:SS 01767000
  1772. * 01768000
  1773. * EXIT: 01769000
  1774. * 01770000
  1775. * REGS.0,1=S/370 FORMAT TIME OF DAY 01771000
  1776. * 01772000
  1777. * THIS ROUTINE ASSUMES THAT ALL EBCDIC DATES WITH TWO BYTE 01773000
  1778. * YEAR SPECIFICATIONS LESS THAN DECIMAL 42 REFER TO THE 01774000
  1779. * 21ST CENTURY, AND ALL OTHERS REFER TO THE 20TH CENTURY. 01775000
  1780. * 01776000
  1781. * OPERATION - 01777000
  1782. * 01778000
  1783. * 1. CONVERT TIME AND DATE TO DECIMAL 01779000
  1784. * 01780000
  1785. * 2. ACCUMLATE S/370 TOD 01781000
  1786. * 01782000
  1787. * RESPONSES - 01783000
  1788. * 01784000
  1789. * NONE 01785000
  1790. * 01786000
  1791. * ERROR MESSAGES - 01787000
  1792. * 01788000
  1793. * NONE 01789000
  1794. * 01790000
  1795. *. 01791000
  1796. SPACE 2 01792000
  1797. TODS370 DC 0H'0' 01793000
  1798. STM R2,R9,TODSSAVE SAVE CALLER'S REGISTER CONTENTS 01794000
  1799. MVC TODSDWD(2),0(R1) MOVE EBCDIC MONTHS TO WORK AREA 01795000
  1800. MVC TODSDWD+2(2),3(R1) MOVE EBCDIC DAYS TO WORK AREA 01796000
  1801. MVC TODSDWD+4(2),6(R1) MOVE EBCDIC YEARS TO WORK AREA 01797000
  1802. TR TODSDWD(3),DECDIGIT FORCE LEGAL EBCDIC DECIMAL DIGITS 01798000
  1803. PACK MMDDYY(4),TODSDWD(7) PACK THE DECIMAL DATE TO SAVE AREA 01799000
  1804. MVC TODSDWD(2),8(R1) MOVE EBCDIC HOURS TO WORK AREA 01800000
  1805. MVC TODSDWD+2(2),11(R1) MOVE EBCDIC MINUTES TO WORK AREA 01801000
  1806. MVC TODSDWD+4(2),14(R1) MOVE EBCDIC SECONDS TO WORK AREA 01802000
  1807. TR TODSDWD(6),DECDIGIT FORCE LEGAL EBCDIC DECIMAL DIGITS 01803000
  1808. PACK HHMMSS(4),TODSDWD(7) PACK THE DECIMAL TIME TO SAVE AREA 01804000
  1809. MVC TODSDWD(8),PL8ZERO SET EIGHT BYTE PACKED DECIMAL ZERO 01805000
  1810. MVO TODSDWD(8),MMDDYY(3) MAKE DATE GENUINE PACKED DECIMAL 01806000
  1811. CVB R5,TODSDWD R5=HEX REPRESENTATION OF DEC MMDDYY 01807000
  1812. SR R4,R4 CLEAR TOP HALF OF DIV FOR IMPENDING 01808000
  1813. D R4,F100 R4=YY PART, R5=MMDD PART 01809000
  1814. CLI MMDDYY+2,X'42' IS THE SPECIFIED DATE PAST YY 41? 01810000
  1815. BNL TODS20TH YEP-ASSUME TWENTIETH CENTURY (19XX) 01811000
  1816. AL R4,F100 BUMP THINGS UP TO THE NEXT CENTURY 01812000
  1817. TODS20TH EQU * 01813000
  1818. LA R7,365 R7=NUMBER OF DAYS IN A NON-LEAP YEAR 01814000
  1819. MR R6,R4 R7=NON-LEAP DYS TO START OF THIS YEA 01815000
  1820. LR R9,R4 R9=NUMBER OF FULL YEARS SINCE 1/1/00 01816000
  1821. BCTR R9,0 R9=NUMBER OF FULL YEARS SINCE 1/1/01 01817000
  1822. * N.B. - THE ABOVE WOULD NEVER DO FOR THE YEAR 1900. 01818000
  1823. SR R8,R8 CLEAR TOP HALF OF DIV FOR IMPENDING 01819000
  1824. D R8,F4 R9=LEAP DYS SINCE 1/1/00 IN PAST YRS 01820000
  1825. ALR R7,R9 R9=TOTAL DAYS TO START OF THIS YEAR 01821000
  1826. CL R8,F3 IS THIS YEAR A LEAP YEAR? 01822000
  1827. BNE TODSNORM NOPE-DON'T MESS WITH ANOTHER LEAP DA 01823000
  1828. CL R5,F300 IS MMDD PAST FEBRUARY? 01824000
  1829. BNH TODSNORM NOPE - DON'T ADD THE LEAP DAY 01825000
  1830. LA R7,1(R7) INCLUDE THIS YEAR'S LEAP DAY NOW 01826000
  1831. TODSNORM EQU * 01827000
  1832. SR R4,R4 CLEAR TOP HALF OF DIV FOR IMPENDING 01828000
  1833. D R4,F100 R4=DD PART, R5=MM PART 01829000
  1834. ALR R5,R5 DOUBLE MON NUM AS INDEX TO HW TABLE 01830000
  1835. LH R8,PERMONTH-2(R5) R8=DAYS IN THIS YEAR'S PAST MONTHS 01831000
  1836. BCTR R4,0 R4=NUM OF FULL DYS PAST IN THIS MON 01832000
  1837. ALR R8,R4 R8=TOTAL DAY COUNT INCLUD THIS MONTH 01833000
  1838. ALR R7,R8 R7=TOTAL DAYS SINCE 1/1/00 01834000
  1839. LA R3,FIRSTDAY(R7) NORMALIZE DAY COUNT FOR WEEKDAY COMP 01835000
  1840. SPACE 01836000
  1841. FIRSTDAY EQU 1 - JANUARY 1, 1900, WAS A MONDAY 01837000
  1842. SPACE 01838000
  1843. SR R2,R2 CLEAR TOP HALF OF DIV FOR IMPENDING 01839000
  1844. D R2,F7 R2=DAY OF WEEK (0-6) 01840000
  1845. LA R9,4 R9=HALF LEN OF ENTRY IN TIMEZONE TAB 01841000
  1846. LCR R9,R9 R9=STANDARD (-) VS. DAYLIGHT (+) IND 01842000
  1847. LA R4,2*4 R4=DISP TO APRIL IN PERMONTH TABLE 01843000
  1848. CLR R5,R4 FIND THIS MONTH'S RELATIONSHP TO APR 01844000
  1849. BL TODSTIME BEFORE - STANDARD TIME IND SET O.K. 01845000
  1850. BE TODSLOOK EQUAL - MUST LOOK CLOSELY 01846000
  1851. LA R4,2*10 R4=DISP TO OCTOBER IN PERMONTH TAB 01847000
  1852. CLR R5,R4 FINDTHIS MONTH'S RELATIONSHIP TO OCT 01848000
  1853. BH TODSTIME AFTER - STAN TIME INDICATOR SET O.K 01849000
  1854. BL TODSFLIP BEFORE - DAYLIGHT TIME - REVERSE IND 01850000
  1855. LCR R9,R9 REV IND TO ASUME DAYLITE FOR NOW 01851000
  1856. TODSLOOK EQU * 01852000
  1857. LH R4,PERMONTH(R5) R4=DAYS IN YEAR THROUGH END OF MONTH 01853000
  1858. SLR R4,8 R4=NUM OF DAYS REMNING IN THIS MON 01854000
  1859. S R4,F7 IS THIS THE LAST WEEK OF THE MONTH? 01855000
  1860. BNM TODSTIME NOPE - INDICATOR PROPERLY SET AS IS 01856000
  1861. LPR R4,R4 R4=NUM OF DYS SHORT OF A WEEK IN MON 01857000
  1862. CLR R2,R4 HAS THE LAST SUN OF THE MON GONE BY? 01858000
  1863. BNL TODSTIME NOPE - INDICATOR PROPERLY SET AS IS 01859000
  1864. LTR R2,R2 WELL, IS THIS SUNDAY? 01860000
  1865. BNZ TODSFLIP NOPE - LAST SUNDAY PASSED - REV IND 01861000
  1866. CLI HHMMSS,X'02' ARE WE ON NEW OR OLD TIME? 01862000
  1867. * THIS ASSUMES THAT ALL SPECIFICATIONS OF TIMES BETWEEN 01863000
  1868. * 1:00:00 A.M. AND 1:59:59 A.M. ON THE LAST SUNDAY OF 01864000
  1869. * OCTOBER WILL BE DAYLIGHT TIMES. 01865000
  1870. BL TODSTIME STILL ON OLD TIME - LEAVE IND AS IS 01866000
  1871. TODSFLIP EQU * 01867000
  1872. LCR R9,R9 REV THE STANDARD-DAYLIGHT TIME IND 01868000
  1873. TODSTIME EQU * 01869000
  1874. MVC TODSDWD(8),PL8ZERO SET EIGHT BYTE PACKED DECIMAL ZERO 01870000
  1875. MVO TODSDWD(8),HHMMSS(3) MAKE TIME GENUINE PACKED DECIMAL 01871000
  1876. CVB R5,TODSDWD R5=HEX REPRESENTATION OF HHMMSS 01872000
  1877. SR R4,R4 CLEAR TOP HALF OF DIV FOR IMPENDING 01873000
  1878. D R4,F100 R4=SS PART, R5=HHMM PART 01874000
  1879. LR R8,R4 SAVE NUM OF SECONDS PAST MIN IN R8 01875000
  1880. SR R4,R4 CLEAR RR4 AGAIN FOR IMPENDING DIVIDE 01876000
  1881. D R4,F100 R4=MM PART, R5=HH PART 01877000
  1882. LA R6,AXSZONE+4 R4=ADDR OF MIDDLE OF STANDARD ENTRY 01878000
  1883. ALR R9,R6 R9=ADDR OF PROP ENT (DAYLIGHT OR STA 01879000
  1884. SH R4,0(R9) R4=MINUTES ADJUSTED TO G.M.T. 01880000
  1885. LR R3,R4 SAVE ADJUSTED MIN IN R3 THROUGH MULT 01881000
  1886. M R4,F60 R5=NUM OF MINUTES IN THE FULL HOURS 01882000
  1887. ALR R5,R3 R5=TOTAL NUMBER OF FULL MINUTES 01883000
  1888. M R4,F60 R4,5=NUM OF SECONDS IN FULL MIN 01884000
  1889. ALR R5,R8 R5=LOW HALF OF TOTAL SEC SIN STA OF 01885000
  1890. * THE ABOVE QUANTITY REFERS TO THE START OF DAY AT THE G.M.T. 01886000
  1891. * ZONE, AND SO IT MAY BE NEGATIVE IF LOCAL TIME ZONE IS EAST 01887000
  1892. * OF THE INTERNATIONAL DATE LINE AND WEST OF THE G.M.T. ZONE. 01888000
  1893. BC 12,TODSFIT1 (NO CARRY) SKIP ADDITION OF THE CARRY 01889000
  1894. LA R4,1(R4) ADD IN THE CARRY TO THE 6R4 BIT ACCU 01890000
  1895. TODSFIT1 EQU * 01891000
  1896. M R6,F86400 R6,7=SEC IN FULL DAYS SINCE 1/1/00 01892000
  1897. ALR R6,R4 ADD IN TOP HALF OF SEC IN THIS DAY 01893000
  1898. ALR R7,R5 ADD IN BOT HALF OF SEC IN THIS DAY 01894000
  1899. BC 12,TODSFIT2 (NO CARRY) SKIP ADDITION OF THE CARR 01895000
  1900. LA R6,1(R6) ADD IN THE CARRY WHEN APPROPRIATE 01896000
  1901. TODSFIT2 EQU * REGS.6,7=TOTAL SECONDS SINCE 1/1/00 01897000
  1902. SLDL R6,1 MOVE BIT 32 OF TOTAL TO TOP REGISTER 01898000
  1903. SRL R7,1 MAKE LOW-ORDER 31 BITS POSITIVE 01899000
  1904. LR R5,R6 R5=HIGH ORDER PART OF ACCUMULATION 01900000
  1905. M R4,F500000 R5=MICROSECONDS IN HIGH HALF 01901000
  1906. M R6,F1000000 REGS.6,7=MICROSECONDS IN LOW HALF 01902000
  1907. ALR R6,R5 R6=TRUE HIGH HALF OF MICROSECONDS 01903000
  1908. SLDL R6,12 SHIFT TO GENERATE TRUE S/370 TOD 01904000
  1909. LR R0,R6 SET RETURN R0 TO HIGH ORDER HALF 01905000
  1910. LR R1,R7 SET RETURN R1 TO LOW ORDER HALF 01906000
  1911. LM R2,R9,TODSSAVE RESTORE CALLER'S REGISTERS 01907000
  1912. BR R14 AND RETURN WITH THE CONVERTED TIME 01908000
  1913. EJECT 01909000
  1914. PERMONTH DC Y(0*31+0*28+0*30,1*31+0*28+0*30,1*31+1*28+0*30) J,F,M 01910000
  1915. DC Y(2*31+1*28+0*30,2*31+1*28+1*30,3*31+1*28+1*30) A,M,J 01911000
  1916. DC Y(3*31+1*28+2*30,4*31+1*28+2*30,5*31+1*28+2*30) J,A,S 01912000
  1917. DC Y(5*31+1*28+3*30,6*31+1*28+3*30,6*31+1*28+4*30) O,N,D. 01913000
  1918. SPACE 01914000
  1919. DECDIGIT DC 240C'0',C'0123456789000000' 01915000
  1920. SPACE 01916000
  1921. TODSDWD DC D'0' DOUBLEWORD UTILITY WORK AREA 01917000
  1922. MMDDYY DC F'0' SAVE AREA FOR DECIMAL DATE 01918000
  1923. HHMMSS DC F'0' SAVE AREA FOR DECIMAL TIME 01919000
  1924. TODSSAVE DC 8F'0' SAVE AREA FOR CALL GENERAL REG 01920000
  1925. EJECT 01921000
  1926. *. 01922000
  1927. * 01923000
  1928. * ENTRY NAME - 01924000
  1929. * 01925000
  1930. * TODEBCD 01926000
  1931. * 01927000
  1932. * FUNCTION - 01928000
  1933. * 01929000
  1934. * CONVERT S/370 TOD TO EBCDIC DATE AND TIME 01930000
  1935. * 01931000
  1936. * CALLS TO OTHER ROUTINES - 01932000
  1937. * 01933000
  1938. * GTODEBCD - TO CONVERT THE TIME AND DATE 01934000
  1939. * 01935000
  1940. * OPERATION - 01936000
  1941. * 01937000
  1942. * 1. SAVE REGISTERS 01938000
  1943. * 01939000
  1944. * 2. ISSUE CALL TO SUPERVISOR ROUTINE FOR TIME CONVERSION 01940000
  1945. * 01941000
  1946. * 3. RESTORE REGISTERS AND RETURN. 01942000
  1947. * 01943000
  1948. * RESPONSES - 01944000
  1949. * 01945000
  1950. * NONE 01946000
  1951. * 01947000
  1952. * ERROR MESSAGES - 01948000
  1953. * 01949000
  1954. * NONE 01950000
  1955. * 01951000
  1956. *. 01952000
  1957. SPACE 01953000
  1958. TODEBCD DC 0H'0' 01954000
  1959. STM R13,R14,TODSAVE1 SAVE RETURN 01955000
  1960. LA R13,MMDDYYHH GET WORK ADDR ADDR FOR CALL 01956000
  1961. L R15,TCOM GET COMMON ROUTINE ADDR 01957000
  1962. L R15,GTODEBCD AND THE TIME CONVERT ADDR 01958000
  1963. BALR R14,R15 AND DO IT 01959000
  1964. LM R13,R14,TODSAVE1 RESTORE REGS 01960000
  1965. BR R14 AND RETURN 01961000
  1966. SPACE 01962000
  1967. MMDDYYHH DC D'0' HOLD NEW HOUR CALCULATION IN DEC 01963000
  1968. DC D'0' APPENDING MMDDYYHH TO MMSSMMMM 01964000
  1969. MMSSMMMM DC D'0' RECEIVE DEC MIN AND SEC 01965000
  1970. DAYNUMBR DC A(0) RECEIVE COMPUTED DAY OF WEEK 0->6 01966000
  1971. TODEBCON DC F'-1',A(0+4,AXSZONE+4) SEE BELOW 01967000
  1972. * DC F'-1' TO HOLD LAST CALCULATION ELAPSED HOURS 01968000
  1973. * DC A(0+4) SWITCH, USED AS AN INDEX, FOR STD VS. DLT TIME 01969000
  1974. * DC A(AXSZONE+4) EXTERNAL ADDRESS OF TIMEZONE DISP TABLE 01970000
  1975. TODSAVE DC 11F'0' TODEBCD ROUTINE SAVE AREA 01971000
  1976. SPACE 01972000
  1977. TODSAVE1 DC 2F'0' SAVE AREA 01973000
  1978. EJECT 01974000
  1979. *. 01975000
  1980. * 01976000
  1981. * ENTRY NAME - 01977000
  1982. * 01978000
  1983. * GSUCCESS 01979000
  1984. * 01980000
  1985. * FUNCTION - 01981000
  1986. * 01982000
  1987. * GET INACTIVE SUCCESSOR SPOOL FILE 01983000
  1988. * 01984000
  1989. * CALLS TO OTHER ROUTINES - 01985000
  1990. * 01986000
  1991. * DMTDRD - VIA DIAG 14 TO ISSUE SUCCESSOR SUBCODE 01987000
  1992. * 01988000
  1993. * ENTRY: 01989000
  1994. * 01990000
  1995. * R1=FILE ID OF PREDECESSOR FILE 01991000
  1996. * 01992000
  1997. * EXIT: 01993000
  1998. * 01994000
  1999. * COND CODE SET AS VM/370 SUCCESSOR FUNCTION 01995000
  2000. * 01996000
  2001. * OPERATION - 01997000
  2002. * 01998000
  2003. * 1. SAVE PREDESSOR FILE ID 01999000
  2004. * 02000000
  2005. * 2. ISSUE SUCCESSOR DIAG 02001000
  2006. * 02002000
  2007. * 3. IF NON OPEN FILE FOUND EXIT 02003000
  2008. * 02004000
  2009. * RESPONSES - 02005000
  2010. * 02006000
  2011. * NONE 02007000
  2012. * 02008000
  2013. * ERROR MESSAGES - 02009000
  2014. * 02010000
  2015. * NONE 02011000
  2016. * 02012000
  2017. *. 02013000
  2018. SPACE 2 02014000
  2019. GSUCCESS DC 0H'0' 02015000
  2020. USING SFBLOK,R1 GET SFBLOK ADDRESSABILITY 02016000
  2021. STM R1,R3,GSUCSAVE SAVE CALLER'S REGISTER CONTENTS 02017000
  2022. STH R1,AXSPREDC SAVE ID OF PREDECESSOR 02018000
  2023. LR R2,R1 R2=PREDECESSOR FILE ID NUMBER 02019000
  2024. LA R1,AXSSFB R1=BUFF ADDR FOR READ OF SFB AND TAG 02020000
  2025. LA R3,X'FFF' R3=SUBCODE FOR SUCCESSOR FUNCTION 02021000
  2026. GSUCNEXT EQU * 02022000
  2027. DIAG R1,R2,X'14' REQUEST FILE SUCCESSOR DESCRIPTOR 02023000
  2028. BC 7,GSUCEXIT QUIT IF NOTHING GOTTEN 02024000
  2029. TM SFBFLAG,SFBINUSE IS THIS FILE OPEN? 02025000
  2030. BZ GSUCEXIT NOPE - ALL DONE - EXIT 02026000
  2031. LH R2,SFBFILID R2=NEW PREDECESSOR ID 02027000
  2032. B GSUCNEXT AND GO TRY FOR ANOTHER 02028000
  2033. SPACE 02029000
  2034. GSUCEXIT EQU * 02030000
  2035. LM R1,R3,GSUCSAVE RESTORE CALLER'S REGISTER CONTENTS 02031000
  2036. BR R14 AND RETURN TO THE CALLER 02032000
  2037. SPACE 02033000
  2038. GSUCSAVE DC 3F'0' 02034000
  2039. SPACE 02035000
  2040. DROP R1 02036000
  2041. EJECT 02037000
  2042. *. 02038000
  2043. * 02039000
  2044. * ENTRY NAME - 02040000
  2045. * 02041000
  2046. * ACCEPT 02042000
  2047. * 02043000
  2048. * FUNCTION - 02044000
  2049. * 02045000
  2050. * INSPECT NEWLY ARRIVED FILES 02046000
  2051. * 02047000
  2052. * CALLS TO OTHER ROUTINES - 02048000
  2053. * 02049000
  2054. * NONE 02050000
  2055. * 02051000
  2056. * OPERATION - 02052000
  2057. * 02053000
  2058. * 1. SAVE PENDING COUNT FOR EACH LINK 02054000
  2059. * 02055000
  2060. * 2. SCAN FILE QUEUE 02056000
  2061. * 02057000
  2062. * 3. ENQUEUE THE FILES 02058000
  2063. * 02059000
  2064. * 4. COUNT FILES AS PENDING IF NO SLOTS ARE LEFT 02060000
  2065. * 02061000
  2066. * RESPONSES - 02062000
  2067. * 02063000
  2068. * DMTAXS101I FILE 'SPOOLID' ENQUEUED ON LINK 'LINKID' 02064000
  2069. * DMTAXS102I FILE 'SPOOLID' PENDING FOR LINK 'LINKID' 02065000
  2070. * 02066000
  2071. * ERROR MESSAGES - 02067000
  2072. * 02068000
  2073. * DMTAXS103E FILE 'SPOOLID' REJECTED -- INVALID DESTINATION 02069000
  2074. * ADDRESS 02070000
  2075. * 02071000
  2076. *. 02072000
  2077. SPACE 2 02073000
  2078. ACCEPT DC 0H'0' 02074000
  2079. USING SFBLOK,R6 GET SFBLOK ADDRESSABILITY 02075000
  2080. USING ROUTE,R1 GET ROUTABLE ADDRESSABILITY 02076000
  2081. STM R14,R6,ACCESAVE SAVE CALLER'S REGISTER CONTENTS 02077000
  2082. LH R1,AXSRDR AXS CONTROL RDR ADDR 02078000
  2083. BAL R14,VCLOSEH CLOSE TO CLEAR FLAGS IN VM 02079000
  2084. LA R6,AXSSFB GET OUR SFBLOCK ADDR 02080000
  2085. SPACE 02081000
  2086. L R8,TLINKS START OF LINK TABLE SECTION 02082000
  2087. L R1,0(R8) COUNT OF LINK TABLE ENTRIES 02083000
  2088. BCTR R1,0 DON'T COUNT LOCAL ENTRY 02084000
  2089. LTR R1,R1 ANY OTHERS LEFT? 02085000
  2090. BNP ACCEEXIT NO - CAN'T DO ANY ACCEPTING 02086000
  2091. LA R8,8(R8) ADDR OF LOCAL LINK TABLE 02087000
  2092. ACCESCAN EQU * 02088000
  2093. LA R8,LINKLEN(R8) ADDR OF NEXT LINK TABLE ENTRY 02089000
  2094. MVC LSPARE(2),LPENDING SAVE OLD PENDING COUNT 02090000
  2095. XC LPENDING(2),LPENDING CLEAR PENDING COUNT 02091000
  2096. BCT R1,ACCESCAN DO ALL LINK TABLE ENTRIES 02092000
  2097. SR R1,R1 START AT HEAD OF INPUT QUEUE 02093000
  2098. ACCEBUMP EQU * 02094000
  2099. BAL R14,GSUCCESS GET THE NEXT SFB+TAG IN THE SPOOL Q 02095000
  2100. BC 5,ACCEEXIT END OF QUEUE - DONE 02096000
  2101. BC 2,ACCEREDO FILE DISAPPEARED - NUTS 02097000
  2102. LH R1,SFBFILID GET THE FILID ADDRESS 02098000
  2103. BAL R14,TAGFIND ALREADY HAVE IT? 02099000
  2104. BC 8,ACCEBUMP YES - LOOK MORE 02100000
  2105. MVC AXSMSGVM(8),SFBORIG MOVE USERID INTO MSG 02101000
  2106. BAL R14,TAGSETUP SET REGS 3 AND 5 FOR PARM SCAN 02102000
  2107. BC 7,ACCEPURG NO TAG - GET RID OF IT 02103000
  2108. BAL R14,PARMGET GET THE FIRST TAG DATA PARAMETER 02104000
  2109. CLR R3,R5 WAS THERE ONE SPECIFIED? 02105000
  2110. BNL ACCEPURG NO - PURGE FILE AND TRY ANOTHER 02106000
  2111. SLR R4,R3 R4=CHAR COUNT OF FIRST PARAMETER 02107000
  2112. CL R4,AXSLIMIT IS IT TOO LONG? 02108000
  2113. BH ACCEPURG YES - DISCARD IT 02109000
  2114. BAL R14,GETROUTE SEE IF THERE IS AN INDIRECT ROUTE INDICATED 02110000
  2115. BZ ACCENORT THERE IS NOT - USE DEST AS LINK 02111000
  2116. MVC ACCELINK(8),ROUTNEXT MOVE IN THE APPROPRIATE LINK ID 02112000
  2117. B ACCEFIND AND GO GET A LINK TABLE ENTRY 02113000
  2118. SPACE 02114000
  2119. ACCENORT EQU * 02115000
  2120. MVC ACCELINK(8),AXSBLANK BLANK WORK FIELD 02116000
  2121. BCTR R4,0 DECREMENT FOR EX MVC 02117000
  2122. EX R4,ACCEMOVE MOVE IN THE DESTINATION AS THE LINK 02118000
  2123. ACCEFIND EQU * 02119000
  2124. LA R3,ACCELINK R3=ADDR OF START OF LINK ID FIELD 02120000
  2125. LA R4,8 R4=CHAR COUNT OF THE LINK ID 02121000
  2126. BAL R14,GETLINK GET A LINK TABLE ENTRY 02122000
  2127. BC 7,ACCEPURG NO LINK - PURGE THE FILE 02123000
  2128. BAL R14,GETSLOT TRY FOR A SLOT FOR THE NEW TAG 02124000
  2129. BZ ACCEPEND NO SLOT AVAILABLE-SET FILE AS PEND 02125000
  2130. BAL R14,TAGGEN OTHERWISE, GEN A TAG IN THE SLOT 02126000
  2131. BAL R14,TAGPLACE PUT THE NEW TAG IN THE LINK QUEUE 02127000
  2132. TM LFLAG,LACTIVE+LALERT GIVE DRIVER AN ALERT? 02128000
  2133. BNO ACCENEXT NOPE - DO NEXT 02129000
  2134. NI LFLAG,X'FF'-LALERT RESET ASYNCH FLAG 02130000
  2135. L R0,LACTTNME GET TASK NAME 02131000
  2136. L R15,ALERTREQ R15=ALERT SERVICE ENTRY 02132000
  2137. BALR R14,R15 REQUEST AN ALERT FOR WAITING TASK 02133000
  2138. ACCENEXT EQU * 02134000
  2139. LH R1,SFBFILID R1=FILE ID FOR LAST FILE 02135000
  2140. B ACCEBUMP LOOK AT NEXT FILE IF ANY 02136000
  2141. SPACE 02137000
  2142. ACCEEXIT EQU * 02138000
  2143. LM R14,R6,ACCESAVE RESTORE CALLER'S REGISTER CONTENTS 02139000
  2144. BR R14 AND RETURN TO THE CALLER 02140000
  2145. EJECT 02141000
  2146. ACCEPEND EQU * 02142000
  2147. LH R1,LPENDING R1=COUNT OF PREVIOUSLY PENDING FILES 02143000
  2148. LA R1,1(R1) BMP UP ONE FOR THE NEW ONE JUST SEEN 02144000
  2149. STH R1,LPENDING AND STORE THE NEW COUNT BACK 02145000
  2150. CLC LPENDING(2),LSPARE DOES THIS LOOK LIKE A NEW ONE? 02146000
  2151. BNH ACCENEXT NO MSG IF NOT 02147000
  2152. LH R1,SFBFILID SPOOL FILE ID FOR MSG 02148000
  2153. BAL R14,AXSM102 ISSUE PENDING MSG 02149000
  2154. B ACCENEXT GO GET ANOTHER NEW FILE 02150000
  2155. SPACE 02151000
  2156. ACCEPURG EQU * 02152000
  2157. LH R1,SFBFILID LAST FILE ID 02153000
  2158. BAL R14,VPURGE PURGE IT FROM VM/370 02154000
  2159. BAL R14,AXSM103 ISSUE PURGED MSG 02155000
  2160. LH R1,AXSPREDC BACK TO PREVIOUS ID 02156000
  2161. B ACCENEXT AND DO ANOTHER FILE 02157000
  2162. SPACE 02158000
  2163. ACCEREDO EQU * 02159000
  2164. L R8,TLINKS START OF LINK TABLE SECTION 02160000
  2165. L R1,0(R8) COUNT OF LINK TABLE ENTRIES 02161000
  2166. BCTR R1,0 DON'T COUNT FIRST 02162000
  2167. LA R8,8(R8) POINT AT FIRST (LOCAL) ENTRY 02163000
  2168. ACCERESC EQU * 02164000
  2169. LA R8,LINKLEN(R8) ADDR OF NEXT LINK TABLE ENTRY 02165000
  2170. XC LPENDING(2),LPENDING CLEAR PARTIAL PENDING COUNT 02166000
  2171. BCT R1,ACCERESC DO ALL TABLE ENTRIES 02167000
  2172. SR R1,R1 SET TO START AT BEGINNING OF QUEUE 02168000
  2173. B ACCEBUMP LOOK AT THE FIRST FILE 02169000
  2174. SPACE 02170000
  2175. ACCEMOVE MVC ACCELINK(0),0(R3) DEST TO LINK ID - TO BE EXECUTED 02171000
  2176. SPACE 2 02172000
  2177. ACCESAVE DC 9F'0' ACCEPT ROUTINE SAVE AREA 02173000
  2178. SPACE 02174000
  2179. ACCELINK DC CL8' ' FIELD FOR ACCEPT LINK ID 02175000
  2180. EJECT 02176000
  2181. *. 02177000
  2182. * 02178000
  2183. * ENTRY NAME - 02179000
  2184. * 02180000
  2185. * UNPEND 02181000
  2186. * 02182000
  2187. * FUNCTION - 02183000
  2188. * 02184000
  2189. * BRING IN A LINK'S PENDING TAGS 02185000
  2190. * 02186000
  2191. * CALLS TO OTHER ROUTINES - 02187000
  2192. * 02188000
  2193. * NONE 02189000
  2194. * 02190000
  2195. * ENTRY: 02191000
  2196. * 02192000
  2197. * R8=LINK TABLE ENTRY ADDRESS 02193000
  2198. * 02194000
  2199. * OPERATION - 02195000
  2200. * 02196000
  2201. * 1. SCAN THROUGH THE FILE QUEUE BRINGING IN THE 02197000
  2202. * SPECIFIED LINKS FILE TAGS 02198000
  2203. * 02199000
  2204. * 2. PLACE THE TAG ON THE TAQ QUEUE 02200000
  2205. * 02201000
  2206. * 3. UPDATE THE PENDING COUNT 02202000
  2207. * 02203000
  2208. * RESPONSES - 02204000
  2209. * 02205000
  2210. * DMTAXS107I NN PENDING FILES FOR LINK 'LINKID' MISSING 02206000
  2211. * 02207000
  2212. * ERROR MESSAGES - 02208000
  2213. * 02209000
  2214. * NONE 02210000
  2215. * 02211000
  2216. *. 02212000
  2217. SPACE 2 02213000
  2218. UNPEND DC 0H'0' 02214000
  2219. OC LPENDING(2),LPENDING ARE ANY FILES PENDING? 02215000
  2220. BCR 8,R14 (BZ) NOTH PEND - EASY COMPLETION 02216000
  2221. STM R14,R7,UNPESAVE OTHERWISE, SAVE CALLER'S REG CONTEN 02217000
  2222. LA R6,AXSSFB GET OUR SFB ADDRESS 02218000
  2223. SR R7,R7 INITIALIZE UNPEND COUNT 02219000
  2224. UNPEREDO EQU * 02220000
  2225. XC SFBFILID(2),SFBFILID CLEAR FILE ID 02221000
  2226. UNPESFB EQU * 02222000
  2227. LH R1,SFBFILID R1=ID OF LAST GOTTEN SFB 02223000
  2228. BAL R14,GSUCCESS GET THE NEXT INACTIVE FILE IN THE Q 02224000
  2229. BC 5,UNPECHEK THAT'S THE END OF THE LINE 02225000
  2230. BC 2,UNPEREDO FILE DISAPPEARED - RESTART 02226000
  2231. MVI UNPEDEST,C' ' BLANK THE FIRST DEST ID CHARACTER 02227000
  2232. MVC UNPEDEST+1(7),UNPEDEST BLANK THE ENTIRE FIELD 02228000
  2233. BAL R14,TAGSETUP SET REGS 3 AND 5 FOR TAG PARM SCAN 02229000
  2234. BAL R14,PARMGET LOCATE THE FIRST TAG DATA PARAMETER 02230000
  2235. CLR R3,R5 WAS THERE A PARAMETER THERE? 02231000
  2236. BNL UNPENOID NOPE - DON'T MESS WITH IT 02232000
  2237. SLR R4,R3 R4=PARAMETER CHARACTER COUNT 02233000
  2238. CL R4,F8 IS THE LENGTH ACCEPTABLE? 02234000
  2239. BNH UNPEOK YEP - LEAVE IT ALONE AS IT STANDS 02235000
  2240. LA R4,8 OTHERWISE, TRUNCATE IT AT MAX COUNT 02236000
  2241. UNPEOK EQU * 02237000
  2242. BCTR R4,0 BUMP CNT DOWN ONE FOR CHARACTER OP 02238000
  2243. EX R4,UNPEMOVE MOVE THE DEST ID INTO OUR FIELD 02239000
  2244. UNPENOID EQU * 02240000
  2245. CLC LINKID(8),UNPEDEST IS THIS DEFINITELY ONE OF OURS? 02241000
  2246. BE UNPESCAN YEP - GO SEE IF IT IS ALREADY IN 02242000
  2247. LA R4,1(R4) RESTORE DEST ID COUNT TO EXACTITUDE 02243000
  2248. BAL R14,GETROUTE SEE IF FILE IS ROUTED ON THIS LINK 02244000
  2249. BZ UNPESFB THIS IS DEFINITELY NOT OURS 02245000
  2250. CLC LINKID(8),ROUTNEXT IS IT FOR THIS LINK? 02246000
  2251. BNE UNPESFB NOPE - NOT OURS - GO GET ANOTHER ONE 02247000
  2252. B UNPESFB IGNORE THE FILE AND TRY ANOTHER 02248000
  2253. UNPESCAN EQU * 02249000
  2254. LH R1,SFBFILID GET NEW FILE ID 02250000
  2255. BAL R14,TAGFIND DO WE HAVE IT ALREADY? 02251000
  2256. BC 8,UNPESFB YEP - GET THE NEXT 02252000
  2257. BAL R14,GETSLOT TRY TO GET A FREE TAG SLOT 02253000
  2258. BZ UNPEFINI NONE AVAILABLE - ALL DONE 02254000
  2259. * R2 NOW HOLDS THE NEW TAG SLOT ADDRESS 02255000
  2260. BAL R14,TAGGEN BUILD A NEW TAG IN THE GOTTEN SLOT 02256000
  2261. BAL R14,TAGPLACE ENQUEUE THE TAG ON ITS LINK 02257000
  2262. LA R7,1(R7) INCREMENT ACCEPT COUNT 02258000
  2263. B UNPESFB AND GET NEXT FILE 02259000
  2264. SPACE 02260000
  2265. UNPECHEK EQU * 02261000
  2266. LH R1,LPENDING OLD PENDING COUNT 02262000
  2267. XC LPENDING(2),LPENDING CLEAR PENDING COUNT 02263000
  2268. SR R1,R7 REMAINING PENDING 02264000
  2269. BZ UNPEEXIT NONE - ALL SET 02265000
  2270. BAL R14,AXSM107 ISSUE NN PENDING MSG 02266000
  2271. B UNPEEXIT AND RETURN 02267000
  2272. UNPEFINI EQU * 02268000
  2273. LH R1,LPENDING OLD PENDING FILE COUNT 02269000
  2274. SR R1,R7 NEW PENDING FILE COUNT 02270000
  2275. STH R1,LPENDING SET NEW PEND COUNT IN LINK 02271000
  2276. UNPEEXIT EQU * 02272000
  2277. LM R14,R7,UNPESAVE RESTORE CALLER'S REGISTER CONTENTS 02273000
  2278. BR R14 AND RETURN TO THE CALLER 02274000
  2279. SPACE 02275000
  2280. UNPEMOVE MVC UNPEDEST(0),0(R3) JUSTIFY THE DEST ID - TO BE EXECUTED 02276000
  2281. SPACE 02277000
  2282. UNPESAVE DC 10F'0' UNPEND ROUTINE SAVE AREA 02278000
  2283. SPACE 02279000
  2284. UNPEDEST DC CL8' ' WORK AREA FOR DEST ID 02280000
  2285. EJECT 02281000
  2286. *. 02282000
  2287. * 02283000
  2288. * ENTRY NAME - 02284000
  2289. * 02285000
  2290. * GETROUTE 02286000
  2291. * 02287000
  2292. * FUNCTION - 02288000
  2293. * 02289000
  2294. * GET A ROUTING TABLE ENTRY 02290000
  2295. * 02291000
  2296. * CALLS TO OTHER ROUTINES - 02292000
  2297. * 02293000
  2298. * NONE 02294000
  2299. * 02295000
  2300. * OPERATION - 02296000
  2301. * 02297000
  2302. * 1. SCAN THE ROUTING TABLE TO A MATCH ON THE 02298000
  2303. * SUPPLIED LINKID. 02299000
  2304. * 02300000
  2305. * 2. IF FOUND RETURN WITH THE NEXT LOGICAL 02301000
  2306. * DESTINATION LINKID. 02302000
  2307. * 02303000
  2308. * RESPONSES - 02304000
  2309. * 02305000
  2310. * NONE 02306000
  2311. * 02307000
  2312. * ERROR MESSAGES - 02308000
  2313. * 02309000
  2314. * NONE 02310000
  2315. * 02311000
  2316. *. 02312000
  2317. SPACE 2 02313000
  2318. GETROUTE DC 0H'0' 02314000
  2319. LTR R4,R4 IS THE COUNT GREATER THAN ZERO? 02315000
  2320. BZ GETRMISS NOPE-CAN'T FIND ANY ENTRY LIKE THAT 02316000
  2321. MVI ROUTWANT+1,C' ' BLANK SEC CHAR OF THE GET ID FIELD 02317000
  2322. MVC ROUTWANT+2(6),ROUTWANT+1 BLANK REMAINDER OF THE FIELD 02318000
  2323. BCTR R4,0 DECREMENT THE COUNT FOR A CHAR OP 02319000
  2324. EX R4,GETRMOVE MOVE THE REQ ID TO THE GET ID FIELD 02320000
  2325. LA R4,1(R4) AND PUT THE CNT BACK THE WAY IT WAS 02321000
  2326. SPACE 02322000
  2327. L R15,TROUTE GET ROUTABLE ADDR 02323000
  2328. LA R1,ROUTSIZE-8(R15) AND ONE LESS THAN THE START 02324000
  2329. L R15,0(R15) AND THE NUMBER OF ENTRIES 02325000
  2330. GETRNEXT EQU * 02326000
  2331. LA R1,ROUTSIZE(R1) BUMP TO THE NEXT ENTRY 02327000
  2332. CLC ROUTWANT(8),ROUTDEST IS THIS THE DESIRED ENTRY? 02328000
  2333. BE GETRHIT YEP - GIVE IT BACK TO THE CALLER 02329000
  2334. BCT R15,GETRNEXT AND TRY THE NEXT 02330000
  2335. GETRMISS EQU * 02331000
  2336. SR R1,R1 CLEAR RET ROUTING TABLE ENTRY ADDRES 02332000
  2337. GETRHIT EQU * 02333000
  2338. LTR R1,R1 SET THE RETURN CONDITION CODE 02334000
  2339. BR R14 AND RETURN TO THE CALLER 02335000
  2340. SPACE 02336000
  2341. GETRMOVE MVC ROUTWANT(0),0(R3) MOVE IN REQ ID - EXECUTED ABOVE 02337000
  2342. EJECT 02338000
  2343. *. 02339000
  2344. * 02340000
  2345. * ENTRY NAME - 02341000
  2346. * 02342000
  2347. * GETLINK 02343000
  2348. * 02344000
  2349. * FUNCTION - 02345000
  2350. * 02346000
  2351. * GET LINK TABLE ENTRY 02347000
  2352. * 02348000
  2353. * CALLS TO OTHER ROUTINES - 02349000
  2354. * 02350000
  2355. * GLINKREQ - SUPERVISOR LINK TABLE SCAN ROUTINE 02351000
  2356. * 02352000
  2357. * OPERATION - 02353000
  2358. * 02354000
  2359. * 1. SETUP REGISTERS FOR GLINKREQ 02355000
  2360. * 02356000
  2361. * 2. BALR TO GLINKREQ 02357000
  2362. * 02358000
  2363. * 3. RESTORE REGS AND RETURN 02359000
  2364. * 02360000
  2365. * RESPONSES - 02361000
  2366. * 02362000
  2367. * NONE 02363000
  2368. * 02364000
  2369. * ERROR MESSAGES - 02365000
  2370. * 02366000
  2371. * NONE 02367000
  2372. * 02368000
  2373. *. 02369000
  2374. SPACE 2 02370000
  2375. GETLSAVE DC 7F'0' SAVE AREA 02371000
  2376. SPACE 2 02372000
  2377. GETLINK DC 0H'0' 02373000
  2378. STM R14,R4,GETLSAVE SAVE REGISTERS 02374000
  2379. LR R0,R4 GET THE LENGTH 02375000
  2380. LR R1,R3 AND THE PTR 02376000
  2381. LA R13,AXSCSAVE GET SAVE AREA ADDR 02377000
  2382. L R15,TCOM GET COMMON ROUTINE VECTOR 02378000
  2383. L R15,GLINKREQ AND THE GETLINK ENTRY 02379000
  2384. BALR R14,R15 GO TRY FIND IT 02380000
  2385. L R14,TLINKS GET START OF LINK TABLE CHAI @VA03308 02380010
  2386. LA R14,8(R14) POINT TO LOCAL LINK TABLE @VA03308 02380020
  2387. CLR R14,R1 DO WE POINT TO LOCAL @VA03308 02380030
  2388. BNE GETLINK1 NO-EVERYTHING OKAY @VA03308 02380040
  2389. LA R15,X'10' INDICATE ERROR @VA03308 02380050
  2390. GETLINK1 EQU * @VA03308 02380060
  2391. L R14,GETLSAVE RESTORE THE RETURN REG 02381000
  2392. LR R8,R1 SET LINK ADDR 02382000
  2393. LM R0,R4,GETLSAVE+8 RESTORE THE REST 02383000
  2394. LTR R15,R15 SET RETURN CONDITION CODE 02384000
  2395. BR R14 AND RETURN 02385000
  2396. EJECT 02386000
  2397. *. 02387000
  2398. * 02388000
  2399. * ENTRY NAME - 02389000
  2400. * 02390000
  2401. * GETSLOT 02391000
  2402. * 02392000
  2403. * FUNCTION - 02393000
  2404. * 02394000
  2405. * GET A FREE TAG QUEUE ELEMENT 02395000
  2406. * 02396000
  2407. * CALLS TO OTHER ROUTINES - 02397000
  2408. * 02398000
  2409. * NONE 02399000
  2410. * 02400000
  2411. * OPERATION - 02401000
  2412. * 02402000
  2413. * 1. CHECK TO SEE IF THIS LINK IS OVER HIS ALLOTED 02403000
  2414. * SLOTS OR ANY FREE SLOTS LEFT 02404000
  2415. * 02405000
  2416. * 2. IF SLOT IS AVAILABLE DEQUEUE IT AND RETURN 02406000
  2417. * ITS ADDRESS 02407000
  2418. * 02408000
  2419. * RESPONSES - 02409000
  2420. * 02410000
  2421. * NONE 02411000
  2422. * 02412000
  2423. * ERROR MESSAGES - 02413000
  2424. * 02414000
  2425. * NONE 02415000
  2426. * 02416000
  2427. *. 02417000
  2428. SPACE 2 02418000
  2429. GETSLOT DC 0H'0' 02419000
  2430. CLC LRESERVD(2),LTAKEN IS LINK BEYOND RESERVED SLOTS? 02420000
  2431. BNH GETSTEST YES-DON'T DECREMENT OVERALL HOLD CNT 02421000
  2432. LH R2,TAGAHOLD R2=CURRENT OVERALL HOLD COUNT 02422000
  2433. BCTR R2,0 BUMP DOWN 1 FOR RESV SLOT TO BE GOT 02423000
  2434. STH R2,TAGAHOLD AND STORE IT BACK FOR FUTURE REF 02424000
  2435. GETSGET EQU * 02425000
  2436. LH R2,LTAKEN R2=CNT OF TAKEN SLOTS FOR THIS LINK 02426000
  2437. LA R2,1(R2) ADD ONE FOR THIS ONE TO BE GOTTEN 02427000
  2438. STH R2,LTAKEN STORE THE CNT BACK FOR FUTURE REF 02428000
  2439. LH R2,TAGAGOT R2=OLD FREE SLOT COUNT 02429000
  2440. BCTR R2,0 DEC THE COUNT 1 FOR THE GOTTEN SLOT 02430000
  2441. STH R2,TAGAGOT AND STORE THE UPDATED COUNT BACK 02431000
  2442. L R2,TAGAFREE R2=ADDRESS OF A FREE LINK Q ELEMENT 02432000
  2443. MVC TAGAFREE(4),TAGNEXT DEQUEUE THE FREE QUEUE ELEMENT 02433000
  2444. GETSEXIT EQU * 02434000
  2445. LTR R2,R2 SET THE RETURN CONDITION CODE 02435000
  2446. BR R14 AND RETURN TO THE CALLER 02436000
  2447. EJECT 02437000
  2448. GETSTEST EQU * 02438000
  2449. SR R2,R2 CLEAR THE RET ELEM ADDR JUST IN CASE 02439000
  2450. CLC TAGAGOT(2),TAGAHOLD CAN WE GIVE THE LINK A FREE SLOT? 02440000
  2451. BH GETSGET YEP-STILL HAVE SOME SPARES-GIVE ON 02441000
  2452. B GETSEXIT OTHERWISE WE MUST DECLINE 02442000
  2453. EJECT 02443000
  2454. *. 02444000
  2455. * 02445000
  2456. * ENTRY NAME - 02446000
  2457. * 02447000
  2458. * FREESLOT 02448000
  2459. * 02449000
  2460. * FUNCTION - 02450000
  2461. * 02451000
  2462. * RETURN A TAQ QUEUE ELEMENT 02452000
  2463. * 02453000
  2464. * CALLS TO OTHER ROUTINES - 02454000
  2465. * 02455000
  2466. * NONE 02456000
  2467. * 02457000
  2468. * OPERATION - 02458000
  2469. * 02459000
  2470. * 1. QUEUE THE SLOT TO THE FREE CHAIN 02460000
  2471. * 02461000
  2472. * 2. UPDATE SLOT TAKEN AND HELD COUNTS 02462000
  2473. * 02463000
  2474. * 3. UPDATE PENDING FILE STATUS 02464000
  2475. * 02465000
  2476. * RESPONSES - 02466000
  2477. * 02467000
  2478. * NONE 02468000
  2479. * 02469000
  2480. * ERROR MESSAGES - 02470000
  2481. * 02471000
  2482. * NONE 02472000
  2483. * 02473000
  2484. *. 02474000
  2485. SPACE 2 02475000
  2486. FREESLOT DC 0H'0' 02476000
  2487. MVC TAGNEXT(4),TAGAFREE CHAIN THE FREE QUEUE TO ELEMENT 02477000
  2488. ST R2,TAGAFREE MAKE THE ELEM FIRST ON THE FREE Q 02478000
  2489. LH R2,TAGAGOT R2=OLD COUNT OF AVAILABLE SLOTS 02479000
  2490. LA R2,1(R2) ADD ONE FOR THE NEWLY FREED Q ELEM 02480000
  2491. STH R2,TAGAGOT STORE THE COUNT BACK FOR FUTURE REF 02481000
  2492. LH R2,LTAKEN R2=COUNT OF SLOTS ALLOCATED TO LINK 02482000
  2493. BCTR R2,0 DEC THE CNT FOR THE NEWLY FREED ELEM 02483000
  2494. STH R2,LTAKEN AND SET THE COUNT BACK AGAIN 02484000
  2495. CH R2,LRESERVD DID WE GET BACK A RESERVED SLOT? 02485000
  2496. BNL FREEEXIT NOPE-NO NEED TO DIDDLE THE HOLD COUN 02486000
  2497. LH R2,TAGAHOLD R2=OLD COUNT OF ELEMENTS TO BE HELD 02487000
  2498. LA R2,1(R2) ADD THIS ONE TO THE TOTAL HOLD COUNT 02488000
  2499. STH R2,TAGAHOLD STORE THE NEW CNT FOR FUTURE REF 02489000
  2500. FREEEXIT EQU * 02490000
  2501. LR R2,R14 SAVE RETURN ADDRESS 02491000
  2502. BAL R14,UNPEND MAKE SURE ALL LINKS FILES ARE IN 02492000
  2503. LR R14,R2 RESTORE RETURN ADDRESS 02493000
  2504. SR R2,R2 CLEAR TAG POINTER REG 02494000
  2505. BR R14 AND RETURN TO THE CALLER 02495000
  2506. EJECT 02496000
  2507. *. 02497000
  2508. * 02498000
  2509. * ENTRY NAME - 02499000
  2510. * 02500000
  2511. * TAGGEN 02501000
  2512. * 02502000
  2513. * FUNCTION - 02503000
  2514. * 02504000
  2515. * BUILD A FILE TAG FROM HYPERVISOR INFO 02505000
  2516. * 02506000
  2517. * CALLS TO OTHER ROUTINES - 02507000
  2518. * 02508000
  2519. * NONE 02509000
  2520. * 02510000
  2521. * OPERATION - 02511000
  2522. * 02512000
  2523. * 1. MOVE SFBLOK FIELDS TO TAG ELEMENT 02513000
  2524. * 02514000
  2525. * 2. SCAN THE TAG AND MOVE FIELDS INTO TAG ELEMENT 02515000
  2526. * 02516000
  2527. * 3. RETURN TO CALLER 02517000
  2528. * 02518000
  2529. * RESPONSES - 02519000
  2530. * 02520000
  2531. * NONE 02521000
  2532. * 02522000
  2533. * ERROR MESSAGES - 02523000
  2534. * 02524000
  2535. * NONE 02525000
  2536. * 02526000
  2537. *. 02527000
  2538. SPACE 2 02528000
  2539. TAGGEN DC 0H'0' 02529000
  2540. STM R14,R9,TAGGSAVE SAVE CALLER'S REGISTER CONTENTS 02530000
  2541. LA R6,AXSSFB GET OUR SFB ADDR 02531000
  2542. XC TAGBLOCK(4),TAGBLOCK CLEAR THE I/O AREA POINTER 02532000
  2543. XC TAGDEV(2),TAGDEV CLEAR VIRT DEV ADDR 02533000
  2544. L R15,TLINKS GET LINK TABLE CHAIN 02534000
  2545. LA R15,8(R15) AND THE HOST ENTRY 02535000
  2546. MVC TAGINLOC(8),LINKID-LINKTABL(R15) SET THIS LOCATION ID 02536000
  2547. MVC TAGLINK(8),LINKID SET LINK IDENTIFIER 02537000
  2548. LA R1,SFBDATE SET R1 TO POINT TO EBCDIC DATE,TIME 02538000
  2549. BAL R14,TODS370 CONV THE DATE,TIME TO S/370 FORMAT 02539000
  2550. STM R0,R1,TAGINTOD AND SET THE CREATION TIME IN THE TAG 02540000
  2551. MVC TAGINVM(8),SFBORIG SET ORIGINATING VIRT MACHINE 02541000
  2552. MVC TAGRECNM(4),SFBRECNO NUMBER OF RECORDS IN FILE 02542000
  2553. MVC TAGRECLN(2),SFBRECSZ MAX RECORD DATA LENGTH 02543000
  2554. MVC TAGINDEV(1),SFBTYPE ORIGINATING DEVICE TYPE 02544000
  2555. MVC TAGCLASS(1),SFBCLAS FILE OUTPUT CLASS 02545000
  2556. MVC TAGID(2),SFBFILID FILE ID NUMBER 02546000
  2557. MVC TAGCOPY(2),SFBCOPY NUMBER OF COPIES REQUESTED 02547000
  2558. MVC TAGNAME(12),SFBFNAME FILE NAME 02548000
  2559. MVC TAGTYPE(12),SFBFTYPE FILE TYPE 02549000
  2560. MVC TAGDIST(8),SFBDIST DISTRIBUTION CODE 02550000
  2561. MVC TAGFLAG(1),SFBFLAG SFB FIRST STATUS FIELD 02551000
  2562. MVC TAGFLAG2(1),SFBFLAG2 SFB SECOND STATUS FIELD 02552000
  2563. NI TAGFLAG2,X'FF'-SFBREQUE INITIALIZE QUEUEING BIT 02553000
  2564. MVC TAGPRIOR(2),=AL2(99) DEFAULT TO LOWEST PRIOR 02554000
  2565. SPACE 02555000
  2566. MVC TAGTOLOC(8),TAGINLOC DEFAULT TO LOCAL DEST 02556000
  2567. MVC TAGTOVM(8),=CL8'SYSTEM' DEFAULT TO 'SYSTEM' VM ID 02557000
  2568. SPACE 02558000
  2569. LA R3,AXSSPTAG+12 R3=START OF TAG DATA FIELD 02561000
  2570. LR R5,R3 R5=ADDR OF START ... 02562000
  2571. AH R5,AXSSPTAG+6 R5=ADDR OF END OF TAG DATA FIELD 02563000
  2572. BAL R14,PARMGET LOCATE THE FIRST PARAMETER 02564000
  2573. CLR R3,R5 WAS THERE ONE SPECIFIED? 02565000
  2574. BNL TAGGEXIT NOPE - ALL DONE 02566000
  2575. MVC TAGTOLOC(8),AXSBLANK CLEAR FIELD PRIOR TO MVC 02567000
  2576. SLR R4,R3 R4=LENGTH OF THE PARAMETER 02568000
  2577. CL R4,F8 IS THE LENGTH SUITABLE 02569000
  2578. BNH TAGGOK1 YEP - LEAVE IT ALONE 02570000
  2579. LA R4,8 OTHERWISE TRUNCATE IT AT MAX LENGTH 02571000
  2580. TAGGOK1 EQU * 02572000
  2581. BCTR 4,0 BUMP COUNT DOWN ONE FOR CHAR OP 02573000
  2582. LA R15,TAGTOLOC SET ADDR OF FIELD TO RECEIVE THE ID 02574000
  2583. EX R4,AXSMOVE MOVE THE SPECIFIED DEST ID TO THE TAG 02575000
  2584. SPACE 02576000
  2585. LA R3,1(R4,R3) R3=ADDR OF STA OF SCAN FOR NEXT PARM 02577000
  2586. BAL R14,PARMGET LOCATE THE NEXT PARAMETER IN THE TAG 02578000
  2587. CLR R3,R5 WAS THERE ONE MORE? 02579000
  2588. BNL TAGGEXIT NOPE - QUIT NOW 02580000
  2589. MVC TAGTOVM(8),AXSBLANK CLEAR FIELD PRIOR TO MVC 02581000
  2590. SLR R4,R3 R4=PARAMETER BYTE COUNT 02582000
  2591. CL R4,F8 IS THIS ONE'S LENGTH OK? 02583000
  2592. BNH TAGGOK2 YEP - USE IT AS IT STANDS 02584000
  2593. LA R4,8 SET THE CNT TO THE MAX ALLOWABLE 02585000
  2594. TAGGOK2 EQU * 02586000
  2595. BCTR R4,0 BUMP COUNT DOWN ONE FOR CHAR OP 02587000
  2596. LA R15,TAGTOVM SET THE RECEIVING FIELD ADDRESS 02588000
  2597. EX R4,AXSMOVE MOVE IN THE SPECIFIED DEST VMID 02589000
  2598. LM R8,R9,AXSPRRNG RANGE OF VALID PRIORITY 02590000
  2599. STH R9,TAGPRIOR SET DEFAULT AT TOP RANGE 02591000
  2600. LA R3,1(R4,R3) END OF CURRENT PARM 02592000
  2601. BAL R14,PARMGET TO START OF NEXT 02593000
  2602. CLR R3,R5 ANY MORE TO GO? 02594000
  2603. BNL TAGGEXIT NOPE - LET PRI DEFAULT 02595000
  2604. BAL R14,DECGET LOAD THE PRIORITY 02596000
  2605. BC 7,TAGGEXIT NO GOOD - SKIP IT 02597000
  2606. STH R0,TAGPRIOR SET REQUESTED PRIORITY 02598000
  2607. EJECT 02599000
  2608. TAGGEXIT EQU * 02600000
  2609. LM R14,R9,TAGGSAVE RESTORE CALLER'S REGISTER CONTENTS 02601000
  2610. BR R14 AND RETURN 02602000
  2611. SPACE 2 02603000
  2612. TAGGSAVE DC 12F'0' 02604000
  2613. EJECT 02605000
  2614. *. 02606000
  2615. * 02607000
  2616. * ENTRY NAME - 02608000
  2617. * 02609000
  2618. * TAGPLACE 02610000
  2619. * 02611000
  2620. * FUNCTION - 02612000
  2621. * 02613000
  2622. * SET A FILE TAG INTO A LINK QUEUE, IMMEDIATELY BEFORE 02614000
  2623. * THE FIRST TAG OF HIGHER NUMERICAL (LESSER) PRIORITY. 02615000
  2624. * 02616000
  2625. * CALLS TO OTHER ROUTINES - 02617000
  2626. * 02618000
  2627. * NONE 02619000
  2628. * 02620000
  2629. * OPERATION - 02621000
  2630. * 02622000
  2631. * 1. SCAN THE LINK'S INACTIVE FILE TAG QUEUE FOR 02623000
  2632. * A SPOT TO ENQUEUE THE TAG, SUCH THAT THE 02624000
  2633. * QUEUE WILL BE IN ORDER OF PRIORITY (THE FIRST 02625000
  2634. * TIME A TAG IS ENQUEUED IT IS PLACED AFTER ALL 02626000
  2635. * OTHER TAGS OF EQUAL PRIORITY; IF THE TAG IS 02627000
  2636. * SUBSEQUENTLY RE-ENQUEUED, IT IS PLACED BEFORE 02628000
  2637. * OTHER TAGS OF EQUAL PRIORITY). 02629000
  2638. * 02630000
  2639. * 2. ENQUEUE THE TAG, AND MARK IT AS HAVING BEEN ENQUEUED 02631000
  2640. * 02632000
  2641. * 3. IF THE TAG HADN'T BEEN PREVIOUSLY ENQUEUED, ISSUE 02633000
  2642. * MESSAGE 101. 02634000
  2643. * 02635000
  2644. * 4. RETURN TO CALLER 02636000
  2645. * 02637000
  2646. * RESPONSES - 02638000
  2647. * 02639000
  2648. * DMTAXS101I FILE 'SPOOLID' ENQUEUED ON LINK 'LINKID' 02640000
  2649. * 02641000
  2650. * ERROR MESSAGES - 02642000
  2651. * 02643000
  2652. * NONE 02644000
  2653. * 02645000
  2654. *. 02646000
  2655. SPACE 2 02647000
  2656. TAGPLACE DC 0H'0' 02648000
  2657. STM R14,R4,TAGPSAVE SAVE CALLER'S REGISTER CONTENTS 02649000
  2658. LA R3,LPOINTER-(TAGNEXT-TAG) INITIALIZE TAG POINTER 02650000
  2659. TAGPDIVE EQU * 02651000
  2660. LR R4,R3 SAVE ADDRESS OF LAST TAG SCANNED 02652000
  2661. ICM R3,B'1111',TAGNEXT-TAG(R4) ADDR OF NEXT TAG 02653000
  2662. BZ TAGPEND NONE - PUT AT END 02654000
  2663. CLC TAGPRIOR(2),TAGPRIOR-TAG(R3) BEFORE THIS? 02655000
  2664. BH TAGPDIVE NOT YET 02656000
  2665. BL TAGPEND DEFINITELY 02657000
  2666. TM TAGFLAG2,SFBREQUE BRAND NEW FILE @VA09075 02658100
  2667. BNO TAGPDIVE YES - PUT AT END OF EQ PRIOR 02659000
  2668. TAGPEND EQU * 02660000
  2669. ST R2,TAGNEXT-TAG(R4) CHAIN THE TAG TO THE PREVIOUS END 02661000
  2670. ST R3,TAGNEXT SET NEW TAG'S CHAINING FIELD 02662000
  2671. SPACE 02663000
  2672. TM TAGFLAG2,SFBREQUE HAVE WE ENQUEUED IT ALREADY? 02664000
  2673. BO TAGPEXIT YES - FORGET IT 02665000
  2674. OI TAGFLAG2,SFBREQUE NOW WE HAVE SEEN IT 02666000
  2675. LH R1,TAGID NEW SPOOL FILE ID 02667000
  2676. BAL R14,AXSM101 ISSUE ACCEPT MESSAGE 02668000
  2677. SPACE 2 02669000
  2678. TAGPEXIT EQU * 02670000
  2679. LM R14,R4,TAGPSAVE RESOTRE CALLER'S REGISTER CONTENTS 02671000
  2680. BR R14 AND RETURN 02672000
  2681. SPACE 02673000
  2682. TAGPSAVE DC 7F'0' TAGPLACE SAVE AREA 02674000
  2683. EJECT 02675000
  2684. *. 02676000
  2685. * 02677000
  2686. * ENTRY NAME - 02678000
  2687. * 02679000
  2688. * FILSELEC 02680000
  2689. * 02681000
  2690. * FUNCTION - 02682000
  2691. * 02683000
  2692. * SELECT A FILE TO BE READ FROM A LINK QUEUE 02684000
  2693. * 02685000
  2694. * CALLS TO OTHER ROUTINES - 02686000
  2695. * 02687000
  2696. * DMKDRD - VIA DIAG X'14' 02688000
  2697. * 02689000
  2698. * OPERATION - 02690000
  2699. * 02691000
  2700. * 1. SCAN THIS LINK'S TAQ QUEUE 02692000
  2701. * 02693000
  2702. * 2. DEQUEUE THE FIRST FILE FILE 02694000
  2703. * FOUND NOT IN HOLD WITH A MATCHING CLASS 02695000
  2704. * SPECIFICATION. 02696000
  2705. * 02697000
  2706. * 3. PLACE THE FILE IN THE SPECIFIED RDR 02698000
  2707. * 02699000
  2708. * RESPONSES - 02700000
  2709. * 02701000
  2710. * NONE 02702000
  2711. * 02703000
  2712. * ERROR MESSAGES - 02704000
  2713. * 02705000
  2714. * DMTAXS106E FILE 'SPOOLID' MISSING -- DEQUEUED 02706000
  2715. * FROM LINK 'LINKID' 02707000
  2716. * 02708000
  2717. *. 02709000
  2718. SPACE 2 02710000
  2719. FILSELEC DC 0H'0' 02711000
  2720. STM R14,R7,FILSSAVE SAVE CALLER'S REGS 02712000
  2721. SR R4,R4 INITIALIZE CLASS INDEX 02713000
  2722. SPACE 02714000
  2723. FILSLAP EQU * 02715000
  2724. LA R1,LPOINTER INITIALIZE PREDECESSOR 02716000
  2725. ICM R2,B'1111',LPOINTER FIRST FILE 02717000
  2726. BZ FILSNOGO NO FILES AT ALL 02718000
  2727. LA R3,LACTCLS1(R4) NEXT CLASS TO CHECK FOR 02719000
  2728. CLI 0(R3),C' ' ANY MORE TO LOOK FOR? 02720000
  2729. BE FILSNOGO NO FILE TO BE HAD 02721000
  2730. SR R0,R0 INITIALIZE CLASS REG 02722000
  2731. CLI 0(R3),C'*' ALL CLASS O.K.? 02723000
  2732. BE FILSCAN YES - SCAN FOR ANY 02724000
  2733. IC R0,0(R3) OTHERWISE SET PARTICULAR CLASS 02725000
  2734. EJECT 02726000
  2735. FILSCAN EQU * 02727000
  2736. LTR R0,R0 ALL CLASS SPECIFIED? 02728000
  2737. BZ FILSALL YEP - SKIP CLASS CHECK 02729000
  2738. CLM R0,B'0001',TAGCLASS THIS ONE MATCH? 02730000
  2739. BNE FILSKIP NO - TRY ANOTHER 02731000
  2740. FILSALL EQU * 02732000
  2741. TM TAGFLAG,SFBUHOLD+SFBSHOLD IN HOLD STATUS? 02733000
  2742. BZ FILSTRY NO - TRY TO GET IT 02734000
  2743. FILSKIP EQU * 02735000
  2744. LR R1,R2 MAKE NEW PREDECESSOR 02736000
  2745. ICM R2,B'1111',TAGNEXT GET NEXT TAG 02737000
  2746. BNZ FILSCAN INSPECT IT IF ONE IS THERE 02738000
  2747. SPACE 02739000
  2748. LA R4,1(R4) INCREMENT CLASS INDEX 02740000
  2749. LA R0,4 MAX INDEX 02741000
  2750. CLR R4,R0 HAVE WE LOOKED AT ALL? 02742000
  2751. BL FILSLAP NO - TRY ANOTHER CLASS 02743000
  2752. SPACE 02744000
  2753. FILSNOGO EQU * 02745000
  2754. SR R2,R2 CLEAR TAG RETURN REG 02746000
  2755. ST R2,FILSSAVE+16 SET IT TO BE RETURNED 02747000
  2756. LM R14,R7,FILSSAVE RESTORE CALLER'S REGS 02748000
  2757. TM *+1,X'80' SET CC=3 02749000
  2758. BR R14 AND RETURN 02750000
  2759. SPACE 02751000
  2760. FILSTRY EQU * 02752000
  2761. MVC TAGNEXT-TAG(4,R1),TAGNEXT DEQUEUE TAG 02753000
  2762. LH R5,TAGID DEQUEUED TAG'S SPOOL ID 02754000
  2763. LH R6,AXSRDR AXS CONTROL READER ADDR 02755000
  2764. LA R7,X'00C' SELECT SFB SUBCODE 02756000
  2765. DIAG R5,R6,X'14' DOES THE FILE STILL EXIST? 02757000
  2766. BC 8,FILSGOT YES - USE IT 02758000
  2767. BC 5,FILSKIP SYSTEM ERROR ON DIAG 02759000
  2768. BAL R14,FREESLOT FILE DISAPPEARED - FREE SLOT 02760000
  2769. LR R2,R1 BACK UP TO PREDECESSOR 02761000
  2770. LR R1,R5 SPOOL FILE ID FOR MSG 02762000
  2771. BAL R14,AXSM106 ISSUE DISAPPEARANCE MSG 02763000
  2772. B FILSKIP AND TRY ANOTHER FILE 02764000
  2773. SPACE 02765000
  2774. FILSGOT EQU * 02766000
  2775. LH R1,AXSRDR VIRT ADDR OF AXS CONTROL RDR 02767000
  2776. BAL R14,VCLOSEH RESET VM/370 STATUS FLAGS 02768000
  2777. ST R2,FILSSAVE+16 SET RETURN REG.2 02769000
  2778. LM R14,R7,FILSSAVE RESTORE CALLER'S REGS 02770000
  2779. CLR R2,R2 SET CC=0 02771000
  2780. BR R14 AND RETURN 02772000
  2781. SPACE 02773000
  2782. FILSSAVE DC 10F'0' FILSELEC ROUTINE SAVE AREA 02774000
  2783. EJECT 02775000
  2784. *. 02776000
  2785. * 02777000
  2786. * ENTRY NAME - 02778000
  2787. * 02779000
  2788. * TAGFIND 02780000
  2789. * 02781000
  2790. * FUNCTION - 02782000
  2791. * 02783000
  2792. * LOCATE A FILE WITH SPOOLID MATCHING THAT SUPPLIED BY 02784000
  2793. * THE CALLER, WITHIN THE INTERNAL FILE TAG QUEUES. 02785000
  2794. * 02786000
  2795. * CALLS TO OTHER ROUTINES - 02787000
  2796. * 02788000
  2797. * NONE 02789000
  2798. * 02790000
  2799. * ENTRY: 02791000
  2800. * R1 = SPOOL ID TO BE LOCATED 02792000
  2801. * 02793000
  2802. * EXIT: 02794000
  2803. * 02795000
  2804. * R2 = TAG ADDRESS IF FOUND (CC=0) 02796000
  2805. * R2 = SAME AS ENTRY IF NOT FOUND (CC=3) 02797000
  2806. * 02798000
  2807. * OPERATION - 02799000
  2808. * 02800000
  2809. * 1. SCAN THE FILE TAG QUEUE FOR EACH 02801000
  2810. * LINK. 02802000
  2811. * 02803000
  2812. * 2. CHECK FOR MATCH AGAINST SUPPLIED SPOOLID 02804000
  2813. * 02805000
  2814. * 3. IF NOT FOUND, RETURN WITH ERROR 02806000
  2815. * 02807000
  2816. * RESPONSES - 02808000
  2817. * 02809000
  2818. * NONE 02810000
  2819. * 02811000
  2820. * ERROR MESSAGES - 02812000
  2821. * 02813000
  2822. * NONE 02814000
  2823. * 02815000
  2824. *. 02816000
  2825. SPACE 1 02817000
  2826. TAGFIND EQU * 02818000
  2827. ST R2,TAGFSAVE SAVE CALLER'S TAG REG 02819000
  2828. STM R7,R8,TAGFSAVE+4 AND TWO MORE 02820000
  2829. L R8,TLINKS ADDR OF START OF LINK TABLE 02821000
  2830. L R7,0(R8) COUNT OF LINK TABLE ENTRIES 02822000
  2831. BCTR R7,0 SKIP LOCAL LINK 02823000
  2832. LTR R7,R7 ANY LEFT 02824000
  2833. BNP TAGFASCN NO LINKS AT ALL 02825000
  2834. LA R8,8+LINKLEN(R8) ADDR OF FIRST LINK TABLE 02826000
  2835. EJECT 02827000
  2836. TAGFLINK EQU * 02828000
  2837. SPACE 02829000
  2838. LA R2,LPOINTER INITIALIZE FILE TAG POINTER 02830000
  2839. TAGFFILE EQU * 02831000
  2840. ICM R2,B'1111',TAGNEXT POINT TO NEXT FILE TAG 02832000
  2841. BZ TAGFNEXT ALL DONE - NEXT LINK 02833000
  2842. CH R1,TAGID IS THIS THE ONE? 02834000
  2843. BNE TAGFFILE NO - TRY NEXT 02835000
  2844. SPACE 02836000
  2845. * FOUND THE SOUGHT FILE 02837000
  2846. TAGFHIT EQU * 02838000
  2847. CLR R1,R1 SET CC=0 02839000
  2848. LM R7,R8,TAGFSAVE+4 RESTORE CALLER'S REGS.7,8 02840000
  2849. BR R14 AND RETURN TO THE CALLER 02841000
  2850. SPACE 02842000
  2851. TAGFNEXT EQU * 02843000
  2852. LA R8,LINKLEN(R8) POINT TO NEXT LINK TABLE 02844000
  2853. BCT R7,TAGFLINK BACK FOR EACH LINK TABLE 02845000
  2854. SPACE 02846000
  2855. TAGFASCN EQU * 02847000
  2856. LA R2,TAGACIN START OF ACTIVE INPUT QUEUE 02848000
  2857. TAGFANXT EQU * 02849000
  2858. ICM R2,B'1111',TAGNEXT TO NEXT TAG 02850000
  2859. BZ TAGFMISS NONE FOUND 02851000
  2860. CH R1,TAGID IS THIS THE ONE WE WANT? 02852000
  2861. BNE TAGFANXT NOPE - TRY ANOTHER 02853000
  2862. B TAGFHIT YES - RETURN IT 02854000
  2863. SPACE 02855000
  2864. TAGFMISS EQU * 02856000
  2865. * FILE NOT FOUND 02857000
  2866. TM *+1,X'80' SET CC=3 02858000
  2867. L R2,TAGFSAVE RESTORE CALLER'S REG.2 02859000
  2868. LM R7,R8,TAGFSAVE+4 RESTORE CALLER'S REGS.7,8 02860000
  2869. BR R14 AND RETURN 02861000
  2870. SPACE 02862000
  2871. TAGFSAVE DC 3F'0' TAGFIND ROUTINE SAVE AREA 02863000
  2872. EJECT 02864000
  2873. *. 02865000
  2874. * 02866000
  2875. * ENTRY NAME - 02867000
  2876. * 02868000
  2877. * DEFINE 02869000
  2878. * 02870000
  2879. * FUNCTION - 02871000
  2880. * 02872000
  2881. * GET A VIRTUAL SPOOL DEVICE 02873000
  2882. * 02874000
  2883. * CALLS TO OTHER ROUTINES - 02875000
  2884. * 02876000
  2885. * DMKCFM - VIA DIAG X'08' 02877000
  2886. * 02878000
  2887. * ENTRY: 02879000
  2888. * 02880000
  2889. * R1=0 FOR READER DEVICE DEFINE 02881000
  2890. * DEVICE TYPE CODE FOR OUTPUT DEVICE 02882000
  2891. * 02883000
  2892. * EXIT: 02884000
  2893. * 02885000
  2894. * R1=HEXADECIMAL ADDRESS OF NEW DEVICE 02886000
  2895. * R15=RETURN CODE 0 IF SUCCESSFUL 02887000
  2896. * RETURN CODE 16 IF TYPE CODE NOT RECOGNIZED 02888000
  2897. * 02889000
  2898. * DEVICE ADDRESSES X'20' - X'BF' ARE ASSIGNED 02890000
  2899. * 02891000
  2900. * 02892000
  2901. * OPERATION - 02893000
  2902. * 02894000
  2903. * 1. SCAN THE DEVICE TABLE FOR A MATCH ON THE CODE 02895000
  2904. * SUPPLIED BY THE USER. 02896000
  2905. * IF FOUND, MOVE EBCDIC NAME TO COMMAND LINE 02897000
  2906. * 02898000
  2907. * 2. SCAN TO SEE IF THE DEVICE ALREADY IN USE. IF IT 02899000
  2908. * IS UP THE DEVADDR BY ONE AND TRY AGAIN. 02900000
  2909. * 02901000
  2910. * 3. CONTRUCT THE COMMAND LINE AND ISSUE DIAG 02902000
  2911. * 02903000
  2912. * RESPONSES - 02904000
  2913. * 02905000
  2914. * NONE 02906000
  2915. * 02907000
  2916. * ERROR MESSAGES - 02908000
  2917. * 02909000
  2918. * NONE 02910000
  2919. * 02911000
  2920. *. 02912000
  2921. SPACE 2 02913000
  2922. DEFINE DC 0H'0' 02914000
  2923. SR R15,R15 CLEAR RETURN CODE TO START 02915000
  2924. STM R2,R5,DEFISAVE SAVE CALLER'S REGISTER CONTENTS 02916000
  2925. LA R3,DEFITYPS R3=ADDRESS OF START OF TYPE TABLE 02917000
  2926. LA R4,8 R4=LENGTH OF A TYPE TABLE ENTRY 02918000
  2927. LA R5,DEFITEND R5=ADDR OF END OF TYPE TABLE 02919000
  2928. DEFITTRY EQU * 02920000
  2929. EX R1,DEFITCLI IS THIS A MATCHING TABLE ENTRY? 02921000
  2930. BE DEFITGOT YEP - USE IT 02922000
  2931. BXLE R3,R4,DEFITTRY KEEP LOOKING THROUGH THE TABLE 02923000
  2932. LA R15,X'10' SET RET CODE TO UNRECOGN DEV TYPE 02924000
  2933. B DEFIEXIT AND RETURN TO THE CALLER 02925000
  2934. SPACE 02926000
  2935. DEFITGOT EQU * 02927000
  2936. MVC DEFILINE+4(7),1(R3) MOVE TYPE DESCRIPTOR TO COMMAND LINE 02928000
  2937. SPACE 02929000
  2938. DEFIREDO EQU * 02930000
  2939. LH R1,DEFICUU R1=LAST HEX DEVICE ADDRESS USED 02931000
  2940. LA R1,1(R1) BUMP UP TO NEXT SEQ ADDR 02932000
  2941. CH R1,DEFIULIM DID THAT GO PAST THE UPPER LIMIT? 02933000
  2942. BL DEFISCAN NOPE - USE IT AS IT STANDS 02934000
  2943. LH R1,DEFILLIM OTHERWISE, BACK TO BOTTOM LIMIT 02935000
  2944. DEFISCAN EQU * 02936000
  2945. STH R1,DEFICUU STORE NEXT ADDRESS TO USE @VA03274 02936010
  2946. LA R2,TAGACIN SET TO SCAN ACTIVE INPUT 02937000
  2947. DEFIINXT EQU * 02938000
  2948. ICM R2,B'1111',TAGNEXT TO THE NEXT TAG 02939000
  2949. BZ DEFIIOK NOT IN ACTIVE INPUT QUEUE 02940000
  2950. CH R1,TAGDEV DEV ADDR IN USE HERE? 02941000
  2951. BNE DEFIINXT TRY THE NEXT TAG IF NOT 02942000
  2952. B DEFIREDO TRY ANOTHER ADDR IF SO 02943000
  2953. DEFIIOK EQU * 02944000
  2954. LA R2,TAGACOUT SET TO SCAN ACTIVE OUTPUT 02945000
  2955. DEFIONXT EQU * 02946000
  2956. ICM R2,B'1111',TAGNEXT TO THE NEXT TAG 02947000
  2957. BZ DEFIADOK NOT IN EITHER ACTIVE QUEUE 02948000
  2958. CH R1,TAGDEV DEV ADDR IN USE HERE? 02949000
  2959. BNE DEFIONXT TRY THE NEXT TAG IF NOT 02950000
  2960. B DEFIREDO TRY ANOTHER ADDR IF SO 02951000
  2961. DEFIADOK EQU * 02952000
  2962. UNPK DEFILINE+13(3),DEFICUU+1(2) UNPACK ADDRESS TO COMMAND 02954000
  2963. TR DEFILINE+13(2),AXSTOEBC-240 AND TRANSLATE TO LEGAL EBCD 02955000
  2964. LA R3,DEFILINE R3=ADDRESS OF DEFINE COMMAND LINE 02956000
  2965. LA R4,L'DEFILINE R4=LENGTH OF COMMAND LINE 02957000
  2966. DIAG R3,R4,X'08' ISSUE DEFINE COMMAND TO VM/370 02958000
  2967. LTR R4,R4 WAS THAT DEV ALREADY DEFINED, MAYBE? 02959000
  2968. BNZ DEFIREDO YEP - TRY THE NEXT ADDRESS 02960000
  2969. DEFIEXIT EQU * 02961000
  2970. LM R2,R5,DEFISAVE RESTORE CALLER'S REGISTER CONTENTS 02962000
  2971. BR R14 AND RETURN TO THE CALLER 02963000
  2972. SPACE 02964000
  2973. DEFITCLI CLI 0(R3),X'00' TEST DEVICE TYPE - TO BE EXECUTED 02965000
  2974. EJECT 02966000
  2975. DEFITYPS DC 0F'0' 02967000
  2976. DC AL1(0),CL7'RDR' 02968000
  2977. DC AL1(TYPPRT),CL7'PRT' 02969000
  2978. DC AL1(TYP1403),CL7'1403' 02970000
  2979. DC AL1(TYP3203),CL7'3203' @V386298 02970500
  2980. DC AL1(TYP3211),CL7'3211' 02971000
  2981. DC AL1(TYPPUN),CL7'PUN' 02972000
  2982. DEFITEND DC AL1(TYP2540P),CL7'PUN' 02973000
  2983. SPACE 02974000
  2984. DEFICUU DC 0H'0',X'001F' MAKE FIRST DEFINED ADDRESS X'020' 02975000
  2985. DEFILLIM DC 0H'0',X'0020' LOWEST DEFINABLE DEV ADDR 02976000
  2986. DEFIULIM DC 0H'0',X'00C0' MAKE LAST DEFINED ADDRESS X'0BF' 02977000
  2987. SPACE 02978000
  2988. DEFISAVE DC 4F'0' DEFINE ROUTINE SAVE AREA 02979000
  2989. SPACE 02980000
  2990. DEFILINE DC C'DEF TYP 0UU',X'00' 02981000
  2991. EJECT 02982000
  2992. *. 02983000
  2993. * 02984000
  2994. * ENTRY NAME - 02985000
  2995. * 02986000
  2996. * DETACH 02987000
  2997. * 02988000
  2998. * FUNCTION - 02989000
  2999. * 02990000
  3000. * UNDEFINE A VIRTUAL SPOOL DEVICE 02991000
  3001. * 02992000
  3002. * CALLS TO OTHER ROUTINES - 02993000
  3003. * 02994000
  3004. * DMKCFM - VIA DIAG X'08' 02995000
  3005. * 02996000
  3006. * ENTRY: 02997000
  3007. * 02998000
  3008. * R1=CUU DEVICE ADDRESS OF DEVICE TO BE DETACHED 02999000
  3009. * 03000000
  3010. * 03001000
  3011. * OPERATION - 03002000
  3012. * 03003000
  3013. * 1. CONVERT THE DEVICE ADDRESS TO EBCDIC 03004000
  3014. * 03005000
  3015. * 2. MOVE INTO COMMAND AND ISSUE DIAG 03006000
  3016. * 03007000
  3017. * RESPONSES - 03008000
  3018. * 03009000
  3019. * NONE 03010000
  3020. * 03011000
  3021. * ERROR MESSAGES - 03012000
  3022. * 03013000
  3023. * NONE 03014000
  3024. * 03015000
  3025. *. 03016000
  3026. SPACE 2 03017000
  3027. DETACH DC 0H'0' 03018000
  3028. STM R1,R2,DETASAVE SAVE CALLER'S REGISTER CONTENTS 03019000
  3029. UNPK DETALINE+3(5),DETASAVE+2(3) UNPACK DEVICE ADDRESS 03020000
  3030. MVI DETALINE+3,C' ' RESTORE CLOBBERED BLANK 03021000
  3031. TR DETALINE+4(3),AXSTOEBC-240 TRANSLATE TO LEGAL EBCDIC 03022000
  3032. LA R1,DETALINE R1=ADDRESS OF CLOSE COMMAND LINE 03023000
  3033. LA R2,L'DETALINE R2=CHAR COUNT FOR CLOSE COMMAND LINE 03024000
  3034. DIAG R1,R2,X'08' ISSUE CLOSE COMMAND TO VM/370 03025000
  3035. DETAEXIT EQU * 03026000
  3036. LM R1,R2,DETASAVE RESTORE CALLER'S REGISTER CONTENTS 03027000
  3037. BR R14 AND RETURN TO THE CALLER 03028000
  3038. SPACE 03029000
  3039. DETASAVE DC 2F'0' 03030000
  3040. SPACE 03031000
  3041. DETALINE DC C'DET CUU',X'00' COMMAND LINE FOR CLOSE AND DETACH 03032000
  3042. EJECT 03033000
  3043. *. 03034000
  3044. * 03035000
  3045. * ENTRY NAME - 03036000
  3046. * 03037000
  3047. * VCHANGE 03038000
  3048. * 03039000
  3049. * FUNCTION - 03040000
  3050. * 03041000
  3051. * CHANGE VM/370 FILE ATTRUBUTES 03042000
  3052. * 03043000
  3053. * CALLS TO OTHER ROUTINES - 03044000
  3054. * 03045000
  3055. * DMKCFM - VIA DIAG X'08' 03046000
  3056. * 03047000
  3057. * ENTRY: 03048000
  3058. * 03049000
  3059. * R1 = SPOOL ID FOR FILE TO BE CHANGED 03050000
  3060. * 03051000
  3061. * CALLER MUST SET VCHCNTRL OPTION AREAS PRIOR 03052000
  3062. * TO CALL 03053000
  3063. * 03054000
  3064. * 03055000
  3065. * OPERATION - 03056000
  3066. * 03057000
  3067. * 1. PROCESS VARIOUS CHANGE OPTIONS 03058000
  3068. * 03059000
  3069. * 2. CONTRUCT COMMAND LINE AND ISSUE DIAG 03060000
  3070. * 03061000
  3071. * RESPONSES - 03062000
  3072. * 03063000
  3073. * NONE 03064000
  3074. * 03065000
  3075. * ERROR MESSAGES - 03066000
  3076. * 03067000
  3077. * NONE 03068000
  3078. * 03069000
  3079. *. 03070000
  3080. SPACE 2 03071000
  3081. VCHANGE DC 0H'0' 03072000
  3082. STM R14,R2,VCHASAVE SAVE CALLER'S REGS 03073000
  3083. SPACE 03074000
  3084. LA R0,4 SET MINIMUM TRUNCATION 03075000
  3085. LA R15,VCHALINE+5 SET DECIMAL EBCDIC TARGET 03076000
  3086. BAL R14,DECPUT CONVERT AND STOW SPOOL ID 03077000
  3087. SPACE 03078000
  3088. MVI VCHALVAR,C' ' BLANK FIRST VARIABLE CHAR 03079000
  3089. MVC VCHALVAR+1(L'VCHALVAR-1),VCHALVAR BLANK ENTIRE LINE 03080000
  3090. LA R2,VCHALVAR INITIALIZE LOAD POINTER 03081000
  3091. VCHAHO EQU * 03082000
  3092. CLI VCHCHO,X'FF' CHANGE HOLD STATUS? 03083000
  3093. BE VCHACL NO - TRY CLASS 03084000
  3094. MVC 0(3,R2),=CL3'NOH' ASSUME NOHOLD 03085000
  3095. TM VCHCHO,X'C0' CORRECT ASSUMPTION? 03086000
  3096. BZ VCHAHONX YES - PROCEED 03087000
  3097. MVC 0(3,R2),=CL3'HO' RESET TO HOLD 03088000
  3098. VCHAHONX EQU * 03089000
  3099. LA R2,4(R2) MOVE LOAD POINTER AHEAD 03090000
  3100. SPACE 03091000
  3101. VCHACL EQU * 03092000
  3102. CLI VCHCCL,X'FF' CHANGE CLASS? 03093000
  3103. BE VCHACO NO - TRY COPY 03094000
  3104. MVC 0(2,R2),=CL2'CL' SET CLASS KEYWORD 03095000
  3105. MVC 3(1,R2),VCHCCL AND NEW CLASS 03096000
  3106. LA R2,5(R2) MOVE LOAD POINTER AHEAD 03097000
  3107. SPACE 03098000
  3108. VCHACO EQU * 03099000
  3109. CLI VCHCCO,X'FF' CHANGE COPIES? 03100000
  3110. BE VCHADI NO - TRY DIST CODE 03101000
  3111. MVC 0(2,R2),=CL2'CO' SET COPY KEYWORD 03102000
  3112. LA R15,3(R2) COPY NUMBER TARGET 03103000
  3113. LH R1,VCHCCO BINARY COPY NUMBER 03104000
  3114. LA R0,2 SET MIN TRUNC = 2 03105000
  3115. BAL R14,DECPUT CONVERT TO DECIMAL EBCDIC 03106000
  3116. LA R2,6(R2) MOVE LOAD POINTER AHEAD 03107000
  3117. SPACE 03108000
  3118. VCHADI EQU * 03109000
  3119. CLI VCHCDI,X'FF' CHANGE DIST CODE? 03110000
  3120. BE VCHANA NO - TRY NAME 03111000
  3121. MVC 0(2,R2),=CL2'DI' SET DIST KEYWORD 03112000
  3122. MVC 3(8,R2),VCHCDI MOVE IN NEW DIST CODE 03113000
  3123. LA R2,12(R2) MOVE LOAD POINTER AHEAD 03114000
  3124. SPACE 03115000
  3125. VCHANA EQU * 03116000
  3126. CLI VCHCNA,X'FF' CHANGE NAME? 03117000
  3127. BE VCHADOIT NO - EXECUTE CONSTRUCTED COMMAND 03118000
  3128. MVC 0(2,R2),=CL2'NA' SET NAME KEYWORD 03119000
  3129. MVC 3(24,R2),VCHCNA MOVE IN NEW NAME 03120000
  3130. LA R2,28(R2) MOVE LOAD POINTER AHEAD 03121000
  3131. SPACE 03122000
  3132. VCHADOIT EQU * 03123000
  3133. LA R1,VCHALVAR REG.1 = START OF VARIABLE LINE 03124000
  3134. SR R2,R1 TOTAL VARIABLE LINE CHAR COUNT 03125000
  3135. BNP VCHAEXIT NO CHANGE TO BE MADE 03126000
  3136. BCTR R2,0 BUMP BACK PAST FINAL BLANK 03127000
  3137. LA R2,L'VCHALINE(R2) TOTAL COMMAND LINE LEN 03128000
  3138. LA R1,VCHALINE START OF COMMAND LINE 03129000
  3139. DIAG R1,R2,X'08' EXECUTE VM/370 CHANGE COMMAND 03130000
  3140. SPACE 03131000
  3141. VCHAEXIT EQU * 03132000
  3142. LM R14,R2,VCHASAVE RESTORE CALLER'S REGS 03133000
  3143. BR R14 AND RETURN 03134000
  3144. SPACE 03135000
  3145. VCHASAVE DC 5F'0' VCHANGE SAVE AREA 03136000
  3146. SPACE 03137000
  3147. VCHALINE DC C'CH R NNNN ' VM/370 CHANGE COMMAND 03138000
  3148. VCHALVAR DC CL54' ' VARIABLE LINE AREA 03139000
  3149. EJECT 03140000
  3150. *. 03141000
  3151. * 03142000
  3152. * ENTRY NAME - 03143000
  3153. * 03144000
  3154. * VCLOSE 03145000
  3155. * 03146000
  3156. * FUNCTION - 03147000
  3157. * 03148000
  3158. * ISSUE VM/370 CLOSE COMMAND FOR A DEVICE 03149000
  3159. * 03150000
  3160. * CALLS TO OTHER ROUTINES - 03151000
  3161. * 03152000
  3162. * DMKCFM - VIA DIAG X'08' 03153000
  3163. * 03154000
  3164. * ENTRY: 03155000
  3165. * 03156000
  3166. * R1 = VIRTUAL ADDR OF DEVICE TO BE CLOSED 03157000
  3167. * (ON CALL TO VCLOSEH, NEGATIVE VALUE IN R1 03158000
  3168. * REQUESTS 'CLOSE RDR HOLD') 03159000
  3169. * R2 = ADDR OF TAG FOR FILE OCCUPYING DEVICE 03160000
  3170. * 03161000
  3171. * OPERATION - 03162000
  3172. * 03163000
  3173. * 1. PROCESS CLOSE HOLD, CLOSE PURGE DEPENDING ON 03164000
  3174. * R1 AT ENTRY. 03165000
  3175. * 03166000
  3176. * 2. CONTRUCT COMMAND LINE 03167000
  3177. * 03168000
  3178. * 3. ISSUE DIAG 03169000
  3179. * 03170000
  3180. * RESPONSES - 03171000
  3181. * 03172000
  3182. * NONE 03173000
  3183. * 03174000
  3184. * ERROR MESSAGES - 03175000
  3185. * 03176000
  3186. * NONE 03177000
  3187. * 03178000
  3188. *. 03179000
  3189. SPACE 2 03180000
  3190. VCLOSEP DC 0H'0' 03181000
  3191. STM R1,R3,VCLOSAVE SAVE CALLER'S REGS 03182000
  3192. MVC VCLOLVAR(3),=CL3'NOH' @VA05479 03182500
  3193. LA R2,L'VCLOLINE+3 @VA05479 03183000
  3194. B VCLOSE AND ISSUE THE VM/370 COMMAND 03184000
  3195. SPACE 2 03185000
  3196. VCLOSEH EQU * 03186000
  3197. STM R1,R3,VCLOSAVE SAVE CALLER'S REGS 03187000
  3198. MVC VCLOLVAR(3),=CL3'HO' SET HOLD KEYWORD IN LINE 03188000
  3199. LA R2,L'VCLOLINE+2 SET TO 'CLOSE CUU HO' 03189000
  3200. LTR R1,R1 CLOSE 'RDR' REQUESTED? 03190000
  3201. BNM VCLOSE NO - DO CLOSE DEVICE ADDR 03191000
  3202. MVC VCLOLINE+2(3),=CL3'RDR' SET 'RDR' IN COMMAND 03192000
  3203. B VCLOSEDO AND CLOSE ALL READERS 03193000
  3204. SPACE 2 03194000
  3205. VCLOSEO EQU * 03195000
  3206. STM R1,R3,VCLOSAVE SAVE CALLER'S REGS 03196000
  3207. LA R3,VCLOLVAR INITIALIZE LOAD POINTER 03197000
  3208. MVI VCLOLVAR,C' ' BLANK FIRST VARIABLE CHAR 03198000
  3209. MVC VCLOLVAR+1(L'VCLOLVAR-1),VCLOLVAR BLANK ALL 03199000
  3210. SPACE 03200000
  3211. VCLODI EQU * 03201000
  3212. CLC TAGDIST(8),AXSBLANK ANY DIST SPECIFIED? 03202000
  3213. BE VCLONA NO - TRY NAME 03203000
  3214. MVC 0(2,R3),=CL2'DI' SET DIST KEYWORD 03204000
  3215. MVC 3(8,R3),TAGDIST MOVE IN NEW DIST 03205000
  3216. LA R3,12(R3) MOVE LOAD POINTER AHEAD 03206000
  3217. SPACE 03207000
  3218. VCLONA EQU * 03208000
  3219. CLI TAGNAME,C' ' ANY NAME SPECIFIED? 03209000
  3220. BE VCLODOIT NO - SET COUNT AND GO 03210000
  3221. MVC 0(2,R3),=CL2'NA' SET NAME KEYWORD 03211000
  3222. MVC 3(24,R3),TAGNAME SET NEW NAME 03212000
  3223. LA R3,28(R3) MOVE LOAD POINTER AHEAD 03213000
  3224. SPACE 03214000
  3225. VCLODOIT EQU * 03215000
  3226. LA R1,VCLOLVAR ADDR OF START OF VARIABLE 03216000
  3227. SR R3,R1 TOTAL VARIABLE COUNT 03217000
  3228. BCTR R3,0 BUMP BACK PAST FINAL BLANK @VA03302 03217010
  3229. LA R2,L'VCLOLINE(R3) TOTAL COMMAND LINE COUNT 03218000
  3230. SPACE 2 03219000
  3231. VCLOSE EQU * 03220000
  3232. UNPK VCLOLINE+1(5),VCLOSAVE+2(3) SPREAD DEV ADDR 03221000
  3233. MVI VCLOLINE+1,C' ' FIX CLOBBERED CHAR 03222000
  3234. MVI VCLOLINE+5,C' ' AND FIX OTHER CHAR 03223000
  3235. TR VCLOLINE+2(3),AXSTOEBC-240 TRANSLATE ABCDEF 03224000
  3236. SPACE 03225000
  3237. VCLOSEDO EQU * 03226000
  3238. LA R1,VCLOLINE ADDR OF CLOSE COMMAND LINE 03227000
  3239. DIAG R1,R2,X'08' ISSUE VM/370 CLOSE COMMAND 03228000
  3240. SPACE 03229000
  3241. VCLOEXIT EQU * 03230000
  3242. LM R1,R3,VCLOSAVE RESTORE CALLER'S REGS @VM01166 03231010
  3243. BR R14 AND RETURN 03232000
  3244. SPACE 2 03233000
  3245. VCLOSAVE DC 3F'0' VCLOSE SAVE AREA 03234000
  3246. SPACE 03235000
  3247. VCLOLINE DC C'C CUU ' CLOSE COMMAND 03236000
  3248. VCLOLVAR DC CL39' ' VARIABLE LINE AREA 03237000
  3249. EJECT 03238000
  3250. *. 03239000
  3251. * 03240000
  3252. * ENTRY NAME - 03241000
  3253. * 03242000
  3254. * VPURGE 03243000
  3255. * 03244000
  3256. * FUNCTION - 03245000
  3257. * 03246000
  3258. * PURGE AN INACTIVE READER FILE FROM VM/370 SPOOL 03247000
  3259. * 03248000
  3260. * CALLS TO OTHER ROUTINES - 03249000
  3261. * 03250000
  3262. * DMKCFM - VIA DIAG X'08' 03251000
  3263. * 03252000
  3264. * ENTRY: 03253000
  3265. * 03254000
  3266. * R1 = SPOOL FILE ID OF FILE TO BE PURGED 03255000
  3267. * 03256000
  3268. * OPERATION - 03257000
  3269. * 03258000
  3270. * 1. CONSTRUCT COMMAND LINE 03259000
  3271. * 03260000
  3272. * 2. ISSUE DIAG 03261000
  3273. * 03262000
  3274. * RESPONSES - 03263000
  3275. * 03264000
  3276. * NONE 03265000
  3277. * 03266000
  3278. * ERROR MESSAGES - 03267000
  3279. * 03268000
  3280. * NONE 03269000
  3281. * 03270000
  3282. *. 03271000
  3283. SPACE 2 03272000
  3284. VPURGE DC 0H'0' 03273000
  3285. STM R14,R2,VPURSAVE SAVE CALLER'S REGS 03274000
  3286. SPACE 03275000
  3287. LA R0,4 SET MINIMUM TRUNCATION 03276000
  3288. LA R15,VPURLINE+6 SET DECIMAL EBCDIC TARGET 03277000
  3289. BAL R14,DECPUT CONVERT AND STOW SPOOL ID 03278000
  3290. SPACE 03279000
  3291. LA R1,VPURLINE VM/370 PURGE COMMAND LINE 03280000
  3292. LA R2,L'VPURLINE LENGTH OF PURGE COMMAND LINE 03281000
  3293. DIAG R1,R2,X'08' ISSUE VM/370 PURGE SPOOLID 03282000
  3294. SPACE 03283000
  3295. VPUREXIT EQU * 03284000
  3296. LM R14,R2,VPURSAVE RESTORE CALLER'S REGS 03285000
  3297. BR R14 AND RETURN 03286000
  3298. SPACE 2 03287000
  3299. VPURSAVE DC 5F'0' VPURGE ROUTINE SAVE AREA 03288000
  3300. SPACE 03289000
  3301. VPURLINE DC C'PUR R NNNN' VM/370 PURGE SPOOLID COMMAND 03290000
  3302. EJECT 03291000
  3303. *. 03292000
  3304. * 03293000
  3305. * ENTRY NAME - 03294000
  3306. * 03295000
  3307. * VSPOOL 03296000
  3308. * 03297000
  3309. * FUNCTION - 03298000
  3310. * 03299000
  3311. * SET VM/370 VIRTUAL SPOOL DEVICE OPTIONS 03300000
  3312. * 03301000
  3313. * CALLS TO OTHER ROUTINES - 03302000
  3314. * 03303000
  3315. * DMKCFM - VIA DIAG X'08' 03304000
  3316. * 03305000
  3317. * ENTRY: 03306000
  3318. * 03307000
  3319. * R1 = VIRTUAL SPOOL DEVICE ADDRESS 03308000
  3320. * R2 = FILE TAG FOR ASSOCIATED SPOOL FILE 03309000
  3321. * 03310000
  3322. * OPERATION - 03311000
  3323. * 03312000
  3324. * 1. MOVE THE SUPPLIED SPOOL FILE ATTRIBUTES INTO 03313000
  3325. * THE COMMAND LINE 03314000
  3326. * 03315000
  3327. * 2. ISSUE THE DIAG 03316000
  3328. * 03317000
  3329. * RESPONSES - 03318000
  3330. * 03319000
  3331. * NONE 03320000
  3332. * 03321000
  3333. * ERROR MESSAGES - 03322000
  3334. * 03323000
  3335. * NONE 03324000
  3336. * 03325000
  3337. *. 03326000
  3338. SPACE 2 03327000
  3339. VSPOOLR DC 0H'0' 03328000
  3340. STM R14,R3,VSPOSAVE SAVE CALLER'S REGS 03329000
  3341. SPACE 03330000
  3342. MVC VSPOLVAR(2),=CL2'CL' SET CLASS KEYWORD 03331000
  3343. MVI VSPOLVAR+2,C' ' SET BLANK DELIMETER 03332000
  3344. MVI VSPOLVAR+3,C'*' SET TO ALL CLASS CODE 03333000
  3345. CLM R14,B'0111',=AL3(OPENRET) CALL FROM OPEN? @VA05479 03333200
  3346. BE VSPHO PUT A HOLD ON IT @VA05479 03333500
  3347. LA R2,L'VSPOLINE+4 LENGTH OF 'SP CUU CL *' 03334000
  3348. B VSPOOL EXECUTE THE COMMAND 03335000
  3349. VSPHO MVC VSPOLVAR+4(3),=CL3' HO' @VA05479 03335100
  3350. LA R2,L'VSPOLINE+7 @VA05479 03335300
  3351. B VSPOOL @VA05479 03335500
  3352. SPACE 2 03336000
  3353. VSPOOLP EQU * 03337000
  3354. STM R14,R3,VSPOSAVE SAVE CALLER'S REGS 03338000
  3355. SPACE 03339000
  3356. LA R3,VSPOLVAR INITIALIZE LOAD POINTER 03340000
  3357. MVI VSPOLVAR,C' ' BLANK FIRST VARIABLE CHAR 03341000
  3358. MVC VSPOLVAR+1(L'VSPOLVAR-1),VSPOLVAR BLANK ALL 03342000
  3359. SPACE 03343000
  3360. CLI TAGTOVM,C' ' ANY DESTINATION VM ID GIVEN? 03344000
  3361. BE VSPPCL NO - TRY CLASS 03345000
  3362. MVC 0(2,R3),=CL2'TO' SET TO KEYWORD 03346000
  3363. MVC 3(8,R3),TAGTOVM MOVE THE VM ID TO THE LINE 03347000
  3364. LA R3,12(R3) MOVE THE LOAD POINTER AHEAD 03348000
  3365. SPACE 03349000
  3366. VSPPCL EQU * 03350000
  3367. CLI TAGCLASS,C' ' ANY CLASS GIVEN? 03351000
  3368. BE VSPPCO NOPE - TRY COPY 03352000
  3369. MVC 0(2,R3),=CL2'CL' MOVE IN CLASS KEYWORD 03353000
  3370. MVC 3(1,R3),TAGCLASS MOVE IN THE CLASS 03354000
  3371. LA R3,5(R3) MOVE LOAD POINTER AHEAD 03355000
  3372. SPACE 03356000
  3373. VSPPCO EQU * 03357000
  3374. CLC TAGCOPY(2),AXSBLANK ANY COPY SPECIFIED? 03358000
  3375. BE VSPPDOIT NO - GO EXECUTE AS IS 03359000
  3376. MVC 0(2,R3),=CL2'CO' MOVE IN COPY KEYWORD 03360000
  3377. LA R15,3(R3) SET DECIMAL EBCDIC TARGET 03361000
  3378. LA R0,2 SET MINIMUM TRUNCATION @VM01135 03362010
  3379. LH R1,TAGCOPY REQUESTED COPY COUNT @VM01135 03362510
  3380. BAL R14,DECPUT CONVERT AND STOW NUMBER 03363000
  3381. LA R3,4(R3) UNDATE LOAD POINTER 03364000
  3382. ALR R3,R0 ADD DECIMAL CHAR COUNT 03365000
  3383. SPACE 03366000
  3384. VSPPDOIT EQU * 03367000
  3385. LA R1,VSPOLVAR SET COMMAND LINE ADDR 03368000
  3386. SR R3,R1 TOTAL VAR CHAR COUNT 03369000
  3387. BNP VSPOEXIT QUIT IF NONE 03370000
  3388. BCTR R3,0 BACK ONE FOR A BLANK 03371000
  3389. LA R2,L'VSPOLINE(R3) SET TOTAL SPOOL COMMAND COUNT 03372000
  3390. SPACE 2 03373000
  3391. VSPOOL EQU * 03374000
  3392. UNPK VSPOLINE+2(5),VSPOSAVE+14(3) SPREAD HEX CUU 03375000
  3393. MVI VSPOLINE+2,C' ' FIX LEFT BAD CHAR 03376000
  3394. MVI VSPOLINE+6,C' ' AND FIX RIGHT BAD CHAR 03377000
  3395. TR VSPOLINE+3(3),AXSTOEBC-240 TRANSLATE ABCDEF 03378000
  3396. SPACE 03379000
  3397. LA R1,VSPOLINE SET SPOOL COMMAND LINE ADDR 03380000
  3398. DIAG R1,R2,X'08' ISSUE SPOOL COMMAND 03381000
  3399. SPACE 03382000
  3400. VSPOEXIT EQU * 03383000
  3401. LM R14,R3,VSPOSAVE RESTORE CALLER'S REGS 03384000
  3402. BR R14 AND RETURN 03385000
  3403. SPACE 2 03386000
  3404. VSPOSAVE DC 6F'0' VSPOOL ROUTINE SAVE AREA 03387000
  3405. SPACE 03388000
  3406. VSPOLINE DC CL7'SP CUU ' VM/370 SPOOL COMMAND 03389000
  3407. VSPOLVAR DC CL25' ' COMMAND VARIABLE AREA 03390000
  3408. EJECT 03391000
  3409. *. 03392000
  3410. * 03393000
  3411. * ENTRY NAME - 03394000
  3412. * 03395000
  3413. * VTAGD 03396000
  3414. * 03397000
  3415. * FUNCTION - 03398000
  3416. * 03399000
  3417. * SET A VM/370 TAG FOR A VIRTUAL SPOOL DEVICE 03400000
  3418. * 03401000
  3419. * CALLS TO OTHER ROUTINES - 03402000
  3420. * 03403000
  3421. * DMKCFM - VIA DIAG X'08' 03404000
  3422. * 03405000
  3423. * ENTRY: 03406000
  3424. * 03407000
  3425. * R1 = VIRTUAL ADDR OF A SPOOL OUTPUT DEVICE 03408000
  3426. * R2 = ADDR OF ASSOCIATED FILE TAG 03409000
  3427. * 03410000
  3428. * OPERATION - 03411000
  3429. * 03412000
  3430. * 1. MOVE SUPPLIED TAG INFO FROM THE INTERNAL TAG 03413000
  3431. * ELEMENT. 03414000
  3432. * 03415000
  3433. * 2. ISSUE THE DIAG 03416000
  3434. * 03417000
  3435. * RESPONSES - 03418000
  3436. * 03419000
  3437. * NONE 03420000
  3438. * 03421000
  3439. * ERROR MESSAGES - 03422000
  3440. * 03423000
  3441. * NONE 03424000
  3442. * 03425000
  3443. *. 03426000
  3444. SPACE 2 03427000
  3445. VTAGD DC 0H'0' 03428000
  3446. STM R14,R2,VTADSAVE SAVE CALLER'S REGS 03429000
  3447. SPACE 03430000
  3448. UNPK VTADLINE+7(5),VTADSAVE+14(3) SPREAD HEX CUU 03431000
  3449. MVI VTADLINE+7,C' ' FIX ONE CLOBBERED BLANK 03432000
  3450. MVI VTADLINE+11,C' ' AND FIX ANOTHER 03433000
  3451. TR VTADLINE+8(3),AXSTOEBC-240 TRANSLATE ABCDEF 03434000
  3452. SPACE 03435000
  3453. MVC VTADLINE+12(8),TAGTOLOC MOVE IN DEST LOC ID 03436000
  3454. MVC VTADLINE+21(8),TAGTOVM MOVE IN DEST VM ID 03437000
  3455. SPACE 03438000
  3456. LH R1,TAGPRIOR REG.1 = FILE PRIORITY 03439000
  3457. LA R0,2 SET MIN TRUNC TO 2 03440000
  3458. LA R15,VTADLINE+30 SET DECIMAL EBCDIC TARGET 03441000
  3459. BAL R14,DECPUT STOW DECIMAL EBCDIC PRIORITY 03442000
  3460. SPACE 03443000
  3461. LA R2,L'VTADLINE-5 SET MIN TAG LINE LEN 03444000
  3462. ALR R2,R0 UP FOR STOWED CHARS 03445000
  3463. LA R1,VTADLINE ADDR OF TAG COMMAND LINE 03446000
  3464. DIAG R1,R2,X'08' VM/370 'TAG DEV CUU ...' 03447000
  3465. SPACE 03448000
  3466. VTADEXIT EQU * 03449000
  3467. LM R14,R2,VTADSAVE RESTORE CALLER'S REGS 03450000
  3468. BR R14 AND RETURN 03451000
  3469. SPACE 2 03452000
  3470. VTADSAVE DC 5F'0' VTAGD ROUTINE SAVE AREA 03453000
  3471. SPACE 03454000
  3472. VTADLINE DC CL35'TAG DEV NNNN XXXXXXXX XXXXXXXX NNNNN' TAG CMD 03455000
  3473. EJECT 03456000
  3474. *. 03457000
  3475. * 03458000
  3476. * ENTRY NAME - 03459000
  3477. * 03460000
  3478. * VTAGF 03461000
  3479. * 03462000
  3480. * FUNCTION - 03463000
  3481. * 03464000
  3482. * SET A VM/370 TAG FOR AN INACTIVE SPOOL FILE 03465000
  3483. * 03466000
  3484. * CALLS TO OTHER ROUTINES - 03467000
  3485. * 03468000
  3486. * DMKCFM - VIA DIAG X'08' 03469000
  3487. * 03470000
  3488. * ENTRY: 03471000
  3489. * 03472000
  3490. * R2 = ADDR OF SPOOL FILE'S RSCS TAG 03473000
  3491. * 03474000
  3492. * OPERATION - 03475000
  3493. * 03476000
  3494. * 1. MOVE SUPPLIED TAG INFO FROM THE INTERNAL TAG 03477000
  3495. * ELEMENT. 03478000
  3496. * 03479000
  3497. * 2. ISSUE THE DIAG. 03480000
  3498. * 03481000
  3499. * RESPONSES - 03482000
  3500. * 03483000
  3501. * NONE 03484000
  3502. * 03485000
  3503. * ERROR MESSAGES - 03486000
  3504. * 03487000
  3505. * NONE 03488000
  3506. * 03489000
  3507. *. 03490000
  3508. SPACE 2 03491000
  3509. VTAGF DC 0H'0' 03492000
  3510. STM R14,R2,VTAFSAVE SAVE CALLER'S REGS 03493000
  3511. SPACE 03494000
  3512. LH R1,TAGID TAGABLE FILE'S SPOOL ID 03495000
  3513. LA R0,4 SET MIN TRUNC 4 03496000
  3514. LA R15,VTAFLINE+9 SET DECMIAL EBCDIC TARGET 03497000
  3515. BAL R14,DECPUT CONVERT AND STOW THE ID 03498000
  3516. SPACE 03499000
  3517. MVC VTAFLINE+14(8),TAGTOLOC SET THE DEST LOC ID 03500000
  3518. MVC VTAFLINE+23(8),TAGTOVM SET THE DEST VM ID 03501000
  3519. SPACE 03502000
  3520. LH R1,TAGPRIOR SPOOL FILE'S PRIORITY 03503000
  3521. LA R0,2 SET MIN TRUNC 2 03504000
  3522. LA R15,VTAFLINE+32 SET DECIMAL EBCDIC TARGET 03505000
  3523. BAL R14,DECPUT CONVERT AND STOW THE ID 03506000
  3524. SPACE 03507000
  3525. LA R2,L'VTAFLINE-5 SET MIN TAG LINE LEN 03508000
  3526. ALR R2,R0 UP FOR STOWED CHARS 03509000
  3527. LA R1,VTAFLINE ADDR OF TAG COMMAND LINE 03510000
  3528. DIAG R1,R2,X'08' VM/370 'TAG FILE NNNN ...' 03511000
  3529. SPACE 03512000
  3530. VTAFEXIT EQU * 03513000
  3531. LM R14,R2,VTAFSAVE RESTORE CALLER'S REGS 03514000
  3532. BR R14 AND RETURN 03515000
  3533. SPACE 2 03516000
  3534. VTAFSAVE DC 5F'0' VTAGF ROUTINE SAVE AREA 03517000
  3535. SPACE 03518000
  3536. VTAFLINE DC CL37'TAG FILE NNNN XXXXXXXX XXXXXXXX NNNNN' TAG CMD 03519000
  3537. EJECT 03520000
  3538. *---------------------------------------------------------------------* 03521000
  3539. * * 03522000
  3540. * CONSTANTS * 03523000
  3541. * * 03524000
  3542. *---------------------------------------------------------------------* 03525000
  3543. SPACE 03526000
  3544. AXSMSG DC 0F'0' 03527000
  3545. DC AL1(28),X'02' REQ ELMNT LEN, FUNC CODE 03528000
  3546. AXSMSGRC DC X'00' MSG ROUTING CODE 03529000
  3547. AXSMSGSC DC X'00' MSG SEVERITY CODE 03530000
  3548. AXSMSGLK DC CL8' ' OBJECT LINKID 03531000
  3549. AXSMSGVM DC CL8' ' OBJECT VMID 03532000
  3550. DC CL3'AXS' MODULE ID 03533000
  3551. AXSMSGAC DC CL1' ' MSG ACTION CODE 03534000
  3552. AXSMSGNM DC H'0',AL2(0) MSG NUMBER, SPARE 03535000
  3553. AXSMSGV0 DC CL8' ' FIRST VARIABLE FIELD 03536000
  3554. AXSMSGV1 DC CL8' ' SECOND VARIABLE FIELD 03537000
  3555. AXSMSGV2 DC CL8' ' THIRD VARIABLE FIELD 03538000
  3556. AXSMSGV3 DC CL8' ' FOURTH VARIABLE FIELD 03539000
  3557. AXSMSGV4 DC CL8' ' FIFTH VARIABLE FIELD 03540000
  3558. AXSMSGV5 DC CL8' ' SIXTH VARIABLE FIELD 03541000
  3559. AXSMSGVL EQU *-AXSMSGV0 TOTAL VAR AREA LEN 03542000
  3560. SPACE 3 03543000
  3561. AXSTOHEX DC X'00808080808080808080808080808080' X'00' SAME AS C'0' 03544000
  3562. DC (7*16)X'80' 03545000
  3563. DC X'800A0B0C0D0E0F808080808080808080' ABCDEF 03546000
  3564. DC (3*16)X'80' 03547000
  3565. DC X'800A0B0C0D0E0F808080808080808080' ABCDEF AGAIN 03548000
  3566. DC (2*16)X'80' 03549000
  3567. DC X'00010203040506070809808080808080' 0123456789 03550000
  3568. SPACE 03551000
  3569. AXSTODEC DC X'00010203040506070809808080808080' 03552000
  3570. SPACE 03553000
  3571. AXSTOEBC DC C'0123456789ABCDEF' TRANSLATE TABLE 03554000
  3572. SPACE 03555000
  3573. AXSALPHA DC (8*16)X'80' 03556000
  3574. DC X'80000000000000000000808080808080' ABCDEFGHI 03557000
  3575. DC X'80000000000000000000808080808080' JKLMNOPQR 03558000
  3576. DC X'80800000000000000000808080808080' STUVWXZY 03559000
  3577. DC 16X'80' 03560000
  3578. DC X'80000000000000000000808080808080' ABCDEFGHI 03561000
  3579. DC X'80000000000000000000808080808080' JKLMNOPQR 03562000
  3580. DC X'80800000000000000000808080808080' STUVWXYZ 03563000
  3581. DC X'00000000000000000000808080808080' 0123456789 03564000
  3582. SPACE 2 03565000
  3583. AXSZONE DC Y(0),CL6' ' DONT CONVERT TIME ZONE @VA03113 03566400
  3584. DC Y(0),CL6' ' ITS CORRECT AS IT IS @VA03113 03566800
  3585. SPACE 03568000
  3586. AXSTMASK DC AL1(AXSTMEND-*-1) LENGTH OF MASK 03569000
  3587. DC X'2120',C'/',X'2020',C'/',X'2020' EDIT MASK 03570000
  3588. DC X'22' FIELD SEPARATOR 03571000
  3589. DC X'2120',C':',X'2020',C':',X'2020' 03572000
  3590. DC C'0' BLANK @VA03113 03573500
  3591. AXSTMEND EQU * 03574000
  3592. SPACE 2 03575000
  3593. AXSLIMIT DC F'8' MAX PARM LENGTH 03576000
  3594. SPACE 03577000
  3595. AXSPRRNG DC F'00',F'99' RANGE OF VALID PRIORITIES 03578000
  3596. SPACE 03579000
  3597. AXSBLANK DC CL8' ' GENERAL PURPOSE BLANK FIELD 03580000
  3598. SPACE 2 03581000
  3599. AXSWORK DC 4D'0' NUMBER MAINPULATION WORK AREA 03582000
  3600. SPACE 03583000
  3601. AXSSFB DC 13D'0' 'SFBSIZE' BUF FOR VM/370 SFB READ @VMI0049 03584100
  3602. AXSSPTAG DC XL148'00' BUFFER FOR HYPERVISOR TAG READ 03585000
  3603. SPACE 2 03586000
  3604. VCHCNTRL DC 0F'0' CHANGE ROUTINE CONTROL TABLE 03587000
  3605. VCHCHO DC X'FF' HOLD FLAGS SPECIFICATION 03588000
  3606. VCHCCL DC X'FF' CLASS SPECIFICATION 03589000
  3607. VCHCCO DC 2X'FF' COPY COUNT SPECIFICATION 03590000
  3608. VCHCDI DC 8X'FF' DIST CODE SPECIFICATION 03591000
  3609. VCHCNA DC 24X'FF' FILE NAME (TYPE) SPECIFICATION 03592000
  3610. VCHCLEN EQU *-VCHCNTRL LENGTH OF CHANGE CONTROL TABLE 03593000
  3611. SPACE 2 03594000
  3612. AXSPREDC DC H'0' PREDECESSOR SPOOL FILE ID 03595000
  3613. SPACE 03596000
  3614. AXSRDR DC H'0' AXS CONTROL READER ADDR 03597000
  3615. SPACE 03598000
  3616. ROUTWANT DC 0D'0',CL8' ' PADDING FIELD FOR REQUESTED ROUTE ID 03599000
  3617. LINKWANT DC 0D'0',CL8' ' PADDING FIELD FOR REQUESTED LINK ID 03600000
  3618. EJECT 03601000
  3619. TAGAREA DSECT 03602000
  3620. SPACE 1 03603000
  3621. *** TAGAREA - RSCS TAG AREA 03604000
  3622. * 03605000
  3623. * 0 +-----------------------------------------------+ 03606000
  3624. * | TAGAFREE | TAGACIN | 03607000
  3625. * 8 +-----------------------------------------------+ 03608000
  3626. * | TAGACOUT | TAGAGOT | TAGAHOLD | 03609000
  3627. * 10 +-----------------------------------------------+ 03610000
  3628. * 03611000
  3629. *** TAGAREA - RSCS TAG AREA 03612000
  3630. SPACE 1 03613000
  3631. TAGAFREE DC A(0) FREE SLOT QUEUE 03614000
  3632. TAGACIN DC A(0) ACTIVE INPUT QUEUE 03615000
  3633. TAGACOUT DC A(0) ACTIVE OUTPUT QUEUE 03616000
  3634. SPACE 03617000
  3635. TAGAGOT DC H'0' NUMBER FREE SLOTS LEFT 03618000
  3636. TAGAHOLD DC H'0' NUMBER SLOTS TO BE HELD 03619000
  3637. EJECT 03620000
  3638. COPY RSSEQU 03621000
  3639. EJECT 03622000
  3640. COPY SVECTORS 03623000
  3641. EJECT 03624000
  3642. COPY LINKTABL 03625000
  3643. EJECT 03626000
  3644. COPY ROUTE 03627000
  3645. EJECT 03628000
  3646. COPY TAG 03629000
  3647. EJECT 03630000
  3648. COPY IOTABLE 03631000
  3649. EJECT 03632000
  3650. COPY TASKE 03633000
  3651. EJECT 03634000
  3652. COPY SPOOL 03635000
  3653. EJECT 03636000
  3654. COPY DEVTYPES 03637000
  3655. END 03638000
ibm/vm370-lib/rscs/dmtaxs.assemble_src.txt ยท Last modified: 2023/08/06 13:38 by Site Administrator