Table of Contents

DMKCSV Source

References

Source Listing

DMKCSV.ASSEMBLE.txt
  1. CSV TITLE 'DMKCSV (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKCSV 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * DMKCSV CONTAINS THREE SPOOLING COMMAND FUNCTIONS AVAILABLE TO 00010000
  11. * TO CLASS G USERS. THE COMMANDS ARE ALSO PROCESSED 00011000
  12. * FOR CLASS D USERS IN A SLIGHTLY DIFFERENT FORMAT 00012000
  13. * 00013000
  14. * ATTRIBUTES - 00014000
  15. * 00015000
  16. * REENTRANT, PAGEABLE, CALLED VIA SVC 00016000
  17. * 00017000
  18. * ENTRY POINTS - 00018000
  19. * 00019000
  20. * DMKCSVOR - ORDER COMMAND 00020000
  21. * DMKCSVPU - PURGE COMMAND 00021000
  22. * DMKCSVTR - TRANSFER COMMAND 00022000
  23. * 00023000
  24. * ENTRY CONDITIONS - 00024000
  25. * 00025000
  26. * GPR9 = ADDRESS OF THE COMMAND LINE BUFFER; MUST BE PRESERVED 00026000
  27. * FOR CALLS TO DMKSCNFD 00027000
  28. * GPR12 = ADDRESS OF ENTRY POINT 00028000
  29. * GPR13 = ADDRESS OF SAVEAREA 00029000
  30. * 00030000
  31. * EXIT CONDITIONS - 00031000
  32. * 00032000
  33. * NORMAL - 00033000
  34. * GPR2 = 0 00034000
  35. * 00035000
  36. * ERROR - 00036000
  37. * 00037000
  38. * GPR2 = CONTAINS THE BINARY MESSAGE NUMBER 00038000
  39. * - EITHER AN OPTION IS ILLEGAL OR SOME CONDITION 00039000
  40. * EXISTS THAT MAKES IT IMPOSSIBLE TO EXECUTE THE COMMAND 00040000
  41. * A MESSAGE IS TYPED TO DESCRIBE THE ERROR; THE ERROR 00041000
  42. * MESSAGES THAT MAY OCCUR ARE LISTED WITH EACH COMMAND 00042000
  43. EJECT 00043000
  44. * 00044000
  45. * CALLS TO OTHER ROUTINES - 00045000
  46. * 00046000
  47. * DMKSCNFD - SCAN THE COMMAND LINE BUFFER FOR OPTIONS 00047000
  48. * DMKSTKIO - TO STACK A IOBLOK 00048000
  49. * DMKSPLDL - DELETE PURGED FILES FROM THE SYSTEM 00049000
  50. * DMKCVTDB - CONVERT DECIMAL SPOOLID NUMBERS TO BINARY 00050000
  51. * DMKCVTBD - CONVERT BINARY TO DECIMAL 00051000
  52. * DMKERMSG - WRITE ERROR MESSAGES 00052000
  53. * DMKCSOSD - TO START PUNCH OR PRINTER 00053000
  54. * DMKSCNAU - TO LOCATE USERID VMBLOK 00054000
  55. * DMKQCNWT - TO WRITE A MESSAGE AT CONSOLE 00055000
  56. * DMKUDRFU - TO VERIFY A USER 00056000
  57. * DMKFREE - TO OBTAIN A BLOCK OF FREE STORAGE 00057000
  58. * DMKFRET - TO RETURN A BLOCK OF STORAGE 00058000
  59. * DMKCKSPL - CHECKPOINT THE SFBLOK 00059000
  60. * EXTERNAL REFERENCES - 00060000
  61. * 00061000
  62. * DMKRSPRD - (ARSPRD) READER FILE CHAIN ANCHOR 00062000
  63. * DMKRSPPR - (ARSPPR) PRINTER FILE CHAIN ANCHOR 00063000
  64. * DMKRSPPU - (ARSPPU) PUNCH FILE CHAIN ANCHOR 00064000
  65. * DMKRSPDL - SPOOL DELETE CHAIN ANCHOR 00065000
  66. * DMKVIOIN - IOBIRA FOR IOBLOK 00066000
  67. * 00067000
  68. * TABLES / WORKAREAS - 00068000
  69. * 00069000
  70. * IOBLOK 00070000
  71. * VDEVBLOK AND SFBLOKS ARE UPDATED, ALTERED OR DELETED 00071000
  72. * 00072000
  73. * THE SAVEWRK FIELDS IN THE STANDARD SAVEAREA ARE USED BY THE 00073000
  74. * OPTION PROCESSING SUBROUTINES FOR THE FOLLOWING VALUES - 00074000
  75. * 00075000
  76. * SAVEWRK1 - FILE OUTPUT CLASS (1 BYTE) 00076000
  77. * SAVEWRK1+1 - NUMBER OF COPIES (1 BYTE) 00077000
  78. * SAVEWRK1+2 - SPOOLID NUMBER (HALF-WORD) 00078000
  79. * SAVEWRK2,3 - USERID OF FILE'S OWNER 00079000
  80. * SAVEWRK4 - ADDRESS OF FNAME FTYPE (24 BYTES) 00080000
  81. * SAVEWRK5 - USE VARIES WITH COMMAND 00081000
  82. * SAVEWRK6,7 - SAVE AREA FOR R0,R1 SCAN OPTIONS 00082000
  83. * SAVEWRK8,9 - USE VARIES WITH COMMAND 00083000
  84. * 00084000
  85. * REGISTER USAGE - 00085000
  86. * 00086000
  87. * ALL SUBROUTINES IN THE MODULE CONFORM GENERALLY TO THIS USAGE; 00087000
  88. * ANY INDIVIDUAL DEVIATIONS OR EXTENSIONS ARE LISTED WITH THE 00088000
  89. * COMMAND DESCRIPTION 00089000
  90. * 00090000
  91. * GPR0 = LENGTH OF OPTION - RETURNED FROM DMKSCNFD 00091000
  92. * GPR1 = ADDRESS OF OPTION - RETURNED FROM DMKSCNFD 00092000
  93. * GPR2 = SCRATCH 00093000
  94. * GPR3 = INTERNAL LINKAGE - 2ND LEVEL 00094000
  95. * GPR4 = INTERNAL LINKAGE - 1ST LEVEL 00095000
  96. * GPR5 = DEVICE TYPE FLAGS - LOGICAL SUM OF TYPES 00096000
  97. * GPR6 = POINTER TO PREVIOUS SFBLOK ON CHAIN 00097000
  98. * GPR7 = SFBLOK BASE 00098000
  99. * GPR8 = VDEVBLOK BASE 00099000
  100. * GPR9 = INPUT COMMAND LINE ADDRESS 00100000
  101. * GPR10 = ADDRESS OF IOBLOK 00101000
  102. * GPR11 = VMBLOK BASE 00102000
  103. * GPR12 = DMKCSV BASE 00103000
  104. * GPR13 = SAVEAREA BASE 00104000
  105. * GPR14 = EXTERNAL LINKAGE 00105000
  106. * GPR15 = EXTERNAL LINKAGE 00106000
  107. * 00107000
  108. * NOTES - 00108000
  109. * 00109000
  110. * NONE 00110000
  111. * 00111000
  112. * OPERATION - 00112000
  113. * 00113000
  114. * EACH COMMAND PROCESSOR IS ENTERED VIA A CALL FROM DMKCSV. THE 00114000
  115. * PROCESSING LOGIC IS EMBODIED IN A SERIES OF INTERNAL CALLS TO 00115000
  116. * A SET OF OPTION PROCESSORS AND LIST SCANNERS. IN GENERAL, 00116000
  117. * THE OPTION PROCESSORS ARE CALLED WHEN IT IS KNOWN, EITHER BY 00117000
  118. * POSITION OR KEYWORD, WHAT TYPE OF OPTION MUST APPEAR NEXT ON 00118000
  119. * THE COMMAND LINE. THE OPTION PROCESSORS SCAN FOR THE NEXT 00119000
  120. * FIELD, VERIFY ITS VALIDITY, AND SET UP INFORMATION FOR USE BY 00120000
  121. * THE LIST SCANNERS. SINCE THE OPERATIONAL DESCRIPTION OF EACH 00121000
  122. * OF EACH COMMAND PROCESSOR REFERENCES THESE SUBROUTINES, A LIST 00122000
  123. * OF THEIR NAMES AND FUNCTIONS IS GIVEN HERE; A DESCRIPTION OF 00123000
  124. * THE OPERATIONAL LOGIC AND REGISTER SETS FOR EACH SUBROUTINE 00124000
  125. * APPEAR AT THE END OF THE MODULE 00125000
  126. * 00126000
  127. * OPTION PROCESSORS - 00127000
  128. * 1. GETUSER - SAVE THE USER ID OF THE FILE'S OWNER 00128000
  129. * 2. GETYPE - SAVE THE FILE TYPE (OR DEVICE TYPE) 00129000
  130. * 3. GETCOPY - LOCATE AND SAVE THE NUMBER OF COPIES REQUESTED 00130000
  131. * 4. GETNAME - LOCATE AND SAVE THE FILE NAME (AND TYPE) 00131000
  132. * 5. GETID - LOCATE AND SAVE THE SPOOLID OR CLASS 00132000
  133. * 6. GETCLASS - LOCATE AND VERIFY THE CLASS REQUESTED (2ND LEVEL 00133000
  134. * ROUTINE) 00134000
  135. * 00135000
  136. * LIST SCANNING ROUTINES - 00136000
  137. * 2. GETFILE - LOCATE THE NEXT FILE OF THE CORRECT CLASS, ID, 00137000
  138. * AND OWNER 00138000
  139. * 3. GETCHAIN - LOCATE THE NEXT FILE CHAIN TO SEARCH (2ND 00139000
  140. * LEVEL ROUTINE) 00140000
  141. * 4. SETPEND - LOCATE AN AVAILABLE VIRTUAL READER AND 00141000
  142. * POST AN PENDING DEVICE END INTERRUPT 00142000
  143. * 00143000
  144. *. 00144000
  145. EJECT 00145000
  146. COPY OPTIONS 00146000
  147. SPACE 2 00147000
  148. COPY LOCAL OPTIONS 00148000
  149. DMKCSV CSECT 00149000
  150. ID DC CL8'DMKCSV' MODULE NAME 00150000
  151. SPACE 3 00151000
  152. EXTRN DMKSCNFD 00152000
  153. EXTRN DMKCKSPL @V304298 00153000
  154. EXTRN DMKCVTDB,DMKCVTBD,DMKSPLDL 00154000
  155. EXTRN DMKUDRFU,DMKERMSG 00155000
  156. EXTRN DMKCSOSD,DMKSCNAU 00156000
  157. EXTRN DMKVIOIN,DMKSTKIO @VM01016 00157000
  158. SPACE 3 00158000
  159. USING PSA,R0 00159000
  160. USING SFBLOK,R7 00160000
  161. USING BUFFER,R9 00161000
  162. USING VMBLOK,R11 00162000
  163. USING SAVEAREA,R13 00163000
  164. USING VDEVBLOK,R8 @VA09639 00163500
  165. EJECT 00164000
  166. *. 00165000
  167. * 00166000
  168. * SUBROUTINE NAME - 00167000
  169. * 00168000
  170. * DMKCSVOR 00169000
  171. * 00170000
  172. * FUNCTION - 00171000
  173. * 00172000
  174. * TO PLACE THE CLOSED SPOOL FILES FOR A GIVEN DEVICE TYPE 00173000
  175. * IN A SPECIFIED ORDER. FOR READER FILES, THE FILES WILL THEN 00174000
  176. * BE READ IN BY THE VIRTUAL READER IN THE SPECIFIED SEQUENCE; 00175000
  177. * FOR PRINTER OR PUNCH FILES, THEY WILL BE PROCESSED IN THAT 00176000
  178. * SEQUENCE, BUT NOT NECESSARILY AT ONCE. SPOOLID CAN BE 00177000
  179. * REPLACED BY CLASS. 00178000
  180. * 00179000
  181. * COMMAND LINE FORMAT - 00180000
  182. * 00181000
  183. * +-------+------------------------------------+ 00182000
  184. * | ORDER | <USERID> READER CLASS A ...... | 00183000
  185. * | ORD | <SYSTEM> PRINTER SPOOLID ...... | 00184000
  186. * | | PUNCH | 00185000
  187. * +-------+------------------------------------+ 00186000
  188. * 00187000
  189. * READER PRINTER PUNCH CLASS 00188000
  190. * R RDR P PRT PU PCH CL 00189000
  191. * 00190000
  192. * <USERID> AND <SYSTEM> ARE CLASS D USER OPTIONS 00191000
  193. * 00192000
  194. * OPERATION - 00193000
  195. * 00194000
  196. * 1. IF CLASS D USER, CALL GETUSER. 00195000
  197. * 2. CALL GETYPE- IF TYPE = 'ALL', EXIT 00196000
  198. * GIVING ERROR MSG006E. 00197000
  199. * 3. OR01- CALL GETID- IF NONE, GO TO STEP 6. 00198000
  200. * 4. OR01A,OR02,OR03- IF NOT CLASS D USER, GO TO STEP 6. 00199000
  201. * CALL GETFILE - TO LOCATE NEXT REQUESTED FILE. 00200000
  202. * IF NONE AND SEARCH IS BY SPOOLID, EXIT GIVING 00201000
  203. * MSG042E. IF NONE, GO TO STEP 3. 00202000
  204. * UNCHAIN THE SELECTED SPOOL FILE AND RECHAIN 00203000
  205. * TO THE PREVIOUS SELECTED FILE. 00204000
  206. * 5. OR04- IF SEARCH IS BY CLASS, GO TO STEP 4: 00205000
  207. * OTHERWISE, GO TO STEP 4. 00206000
  208. * 6. OR05- IF NO SPOOLID OR CLASS OPTION PRESENT, EXIT 00207000
  209. * GIVING MSG027E: OTHERWISE EXIT. 00208000
  210. * 7. OR06- CALL GETFILE - IF NONE AND 00209000
  211. * SEARCH IS BY SPOOLID, EXIT, GIVING MSG042E. 00210000
  212. * OTHERWISE GO TO STEP 3. 00211000
  213. * 8. OR06A- CALL INITSCAN TO LOCATE FIRST FILE FOR THIS 00212000
  214. * USER. UPDATE SEARCH START ADDRESS. IF THE FILE 00213000
  215. * IS THE REQUESTED FILE AND SEARCH IS BY SPOOLID, GO 00214000
  216. * TO STEP 3. IF SEARCH BY CLASS GO STEP 7. 00215000
  217. * UNCHAIN THE SELECTED SPOOL FILE BLOK, SAVE ADDRESS 00216000
  218. * OF SLOT IN CHAIN. 00217000
  219. * 9. CALL SFBSCAN TO LOCATE THE NEXT SPOOL FILE BLOK FOR 00218000
  220. * THIS USER. IF NONE, RECHAIN THE PREVIOUS UNCHAINED 00219000
  221. * SFBLOK. 00220000
  222. * UNCHAIN THIS SFBLOK AND CHAIN THE PREVIOUS UNCHAINED 00221000
  223. * BLOK IN TO THIS SLOT. 00222000
  224. * IF THE CURRENT UNCHAINED BLOK IS THE REQUESTED 00223000
  225. * SFBLOK, CHAIN IT INTO THE SLOT SAVED BY STEP 8, 00224000
  226. * AND GO TO STEP 8. OTHERWISE GO TO STEP 9. 00225000
  227. * 00226000
  228. * RESPONSE - 00227000
  229. * 00228000
  230. * NNNN FILES ORDERED 00229000
  231. * NO 00230000
  232. * 00231000
  233. * ERROR MESSAGES - 00232000
  234. * 00233000
  235. * DMKCSV003E INVALID OPTION - (OPTION) 00234000
  236. * DMKCSV006E INVALID DEVICE TYPE - (ADDR) 00235000
  237. * DMKCSV008E INVALID SPOOLID - (SPOOLID) 00236000
  238. * DMKCSV026E OPERAND MISSING OR INVALID 00237000
  239. * DMKCSV027E SPOOLID MISSING OR INVALID 00238000
  240. * DMKCSV028E CLASS MISSING OR INVALID 00239000
  241. * DMKCSV035E DEVICE TYPE MISSING OR INVALID 00240000
  242. * DMKCSV042E SPOOLID NNNN DOES NOT EXIST 00241000
  243. * 00242000
  244. *. 00243000
  245. EJECT 00244000
  246. DMKCSVOR RELOC 00245000
  247. SPACE 00246000
  248. BAL R4,CLEAR CLEAR SAVEWRK1,4-9, 00247000
  249. * SET VMUSER TO SAVEWK2-3, AND 00248000
  250. * SAVEWRK5(2) TO FFFF 00249000
  251. TM VMCLEVEL,VMCLASSD CLASS D USER ?? 00250000
  252. BZ OR00 NO -- 00251000
  253. L R3,FFS INDICATE TEST FOR USERID AND SYSTEM 00252000
  254. BAL R4,GETUSER GET USERID @V200930 00253000
  255. OR00 EQU * 00254000
  256. BAL R4,GETYPE GET DEVICE TYPE @V200930 00255000
  257. EX R5,CLIALL TYPE = ALL ?? 00256000
  258. BE MSG006E YES - INVALID TYPE 00257000
  259. SPACE 00258000
  260. LR R2,R7 SET WORK START REGISTER 00259000
  261. ST R7,SAVEWRK8 SAVE ADDRESS OF ANCHOR CHAIN 00260000
  262. BAL R4,COUNT UPDATE FILE COUNT 00261000
  263. SPACE 00262000
  264. OR01 EQU * 00263000
  265. BAL R4,GETID GET SPOOL ID @V200930 00264000
  266. BNZ OR05 NO MORE SPOOLID'S 00265000
  267. SPACE 00266000
  268. CLC SAVEWRK1+2(2),ZEROES OPTION = ALL ?? 1ST CHECK 00267000
  269. BNE OR01A NO 00268000
  270. CLI SAVEWRK1,X'00' OPTION = ALL ?? 2ND CHECK 00269000
  271. BE MSG008E OPTION WAS ALL - INVALID 00270000
  272. OR01A OI SAVEWRK5+3,X'80' INDICATE AT LEAST ONE SPOOLID 00271000
  273. CLI SAVEWRK2,X'40' CLASS D USER AND 'SYSTEM' ?? 00272000
  274. BH OR06 NO -- NORMAL PROCESSING 00273000
  275. OR02 EQU * 00274000
  276. SLR R15,R15 NOT COUNT ONLY IN GETFILE HRC022DK 00274690
  277. BAL R4,GETFILE GET NEXT SPOOL FILE @V200930 00275000
  278. LTR R7,R7 SFBLOK PRESENT ?? 00276000
  279. BNZ OR03 YES - PROCESS 00277000
  280. LR R7,R2 RESET SEARCH ADDRESS 00278000
  281. CLI SAVEWRK1,X'00' SEARCH BY CLASS 00279000
  282. BNE OR01 YES -- 00280000
  283. B MSG042E SPOOL ID NOT FOUND 00281000
  284. SPACE 00282000
  285. * GPR2 ADDRESS OF LAST SELECTED FILE 00283000
  286. OR03 EQU * GPR6 ADDRESS OF PREVIOUS SFBLOK 00284000
  287. * GPR7 ADDRESS OF CURRENT SFBLOK 00285000
  288. SPACE 00286000
  289. BAL R4,COUNT UPDATE FILE COUNT 00287000
  290. C R7,0(R2) IS THIS BLOK NEXT ON CHAIN 00288000
  291. BE OR04 YES - JUST UPDATE ADDRESS 00289000
  292. L R3,0(R2) ADDRESS OF FIRST FILE ON SEARCH 00290000
  293. * CHAIN 00291000
  294. MVC 0(4,R6),0(R7) UNCHAIN SELECTED FILE 00292000
  295. ST R3,0(R7) AND CHAIN BETWEEN THE 00293000
  296. ST R7,0(R2) END OF THE SELECTED AND SEARCH 00294000
  297. * CHAIN 00295000
  298. OR04 EQU * 00296000
  299. LR R2,R7 UPDATE SEARCH ADDRESS 00297000
  300. CLI SAVEWRK1,X'00' IS SEARCH BY CLASS ?? 00298000
  301. BNE OR02 YES -- GET NEXT FILE 00299000
  302. B OR01 GET NEXT SPOOLID 00300000
  303. SPACE 00301000
  304. OR05 EQU * 00302000
  305. TM SAVEWRK5+3,X'80' ANY SPOOLID ?? 00303000
  306. BZ MSG027E NO -- SPOOLID MISSING 00304000
  307. B CSVEXIT ALL DONE 00305000
  308. SPACE 3 00306000
  309. OR06 EQU * HERE TO PROCESS CLASS G USER ORDER COMMAND AND 00307000
  310. * CLASS D USER WITHOUT 'SYSTEM' OPTION 00308000
  311. L R7,SAVEWRK8 STARTING SEARCH ADDRESS 00309000
  312. SLR R15,R15 NOT COUNT ONLY IN GETFILE HRC022DK 00309690
  313. BAL R4,GETFILE GET NEXT SPOOL FILE @V200930 00310000
  314. LTR R7,R7 ANY FILE FOUND ?? 00311000
  315. BNZ OR06A YES --- 00312000
  316. CLI SAVEWRK1,X'00' SEARCH BY CLASS ?? 00313000
  317. BNE OR01 YES -- GET NEXT OPTION 00314000
  318. B MSG042E SPOOLID NOT FOUND 00315000
  319. SPACE 00316000
  320. OR06A BAL R14,INITSCAN LOCATE 1ST FILE FOR THIS USER 00317000
  321. SPACE 00318000
  322. ST R7,SAVEWRK8 SAVE ADDRESS OF FIRST USER BLOK 00319000
  323. BAL R4,COUNT UPDATE FILE COUNT 00320000
  324. CLC SAVEWRK1(1),SFBCLAS RIGHT CLASS ?? 00321000
  325. BE OR06 YES -- INORDER GET NEXT FILE 00322000
  326. CLC SAVEWRK1+2(2),SFBFILID RIGHT SPOOLID ?? 00323000
  327. BE OR01 YES -- GET NEXT SPOOLID 00324000
  328. BCTR R14,0 COUNT -1 00325000
  329. STH R14,SAVEWRK5 AND STORE 00326000
  330. * 00327000
  331. * SHIFT EACH FILE DOWN ONE TILL WE LOCATE CLASS OR ID EQUAL 00328000
  332. * 00329000
  333. MVC 0(4,R6),0(R7) UNCHAIN SPOOL FILE BLOK 00330000
  334. LR R2,R6 SAVE ADDRESS OF PREVIOUS SFBLOK 00331000
  335. SFBLOOP LR R3,R7 SAVE ADDRESS OF UNCHAIN SFBLOK 00332000
  336. BAL R14,SFBSCAN LOCATE THE NEXT FILE FOR THIS USER 00333000
  337. LTR R7,R7 FILE FOUND 00334000
  338. BZ RECHAIN NO - BETTER RECHAIN THE LAST BLOK 00335000
  339. * BACK 00336000
  340. MVC 0(4,R3),0(R7) UNCHAIN THIS BLOK AND 00337000
  341. ST R3,0(R6) AND CHAIN PREVIOUS UNCHAINED BLOK 00338000
  342. * INTO THIS SLOT- 00339000
  343. CLC SAVEWRK1(1),SFBCLAS IS THIS THE RIGHT CLASS ?? 00340000
  344. BE FILEQ YES -- 00341000
  345. CLC SAVEWRK1+2(2),SFBFILID IS THIS THE RIGHT SPOOLID ?? 00342000
  346. BE FILEQ YES - 00343000
  347. LR R6,R3 RESET SEARCH ADDRESS 00344000
  348. B SFBLOOP KEEPING SHIFTING AND LOOKING 00345000
  349. * FOR A EQUAL BLOK 00346000
  350. SPACE 2 00347000
  351. RECHAIN EQU * HERE TO RECHAIN THE UNCHAINED SFBLOK - 00348000
  352. * NO MORE FILES FOR THIS USER 00349000
  353. L R0,0(R2) ADDRESS OF SLOT FOR UNCHAINED SFBLOK 00350000
  354. ST R3,0(R2) RECHAIN UNCHAINED SFBLOK 00351000
  355. B OR01 GET NEXT OPTION - 00352000
  356. SPACE 2 00353000
  357. INITSCAN EQU * HERE TO LOCATE EACH SPOOL 00354000
  358. * FILE FOR THIS USER AND RETURN THE 00355000
  359. * ADDRESS IN GPR7 AND ADDRESS 00356000
  360. * OF PREVIOUS SFBLOK IN GPR6 00357000
  361. SPACE 00358000
  362. L R6,SAVEWRK8 ADDRESS TO START SEARCH 00359000
  363. SFBSCAN LR R7,R6 LOAD ADDRESS OF SEARCH START 00360000
  364. L R7,0(R7) ADDRESS OF NEXT SFBLOK 00361000
  365. LTR R7,R7 ANY MORE SFBLOKS ?? 00362000
  366. BCR 8,R14 NO - RETURN WITH R7 ZERO 00363000
  367. CLC SAVEWRK2(8),SFBUSER SFBLOK FOR THIS USER ?? 00364000
  368. BCR 8,R14 YES - GPR7 ADDRESS OF SPFLOK 00365000
  369. LR R6,R7 UPDATE PREVIOUS ADDRESS 00366000
  370. B SFBSCAN KEEP LOOKING 00367000
  371. SPACE 2 00368000
  372. FILEQ EQU * HERE IF ORDER FILE FOUND AND IS NOT IN CORRECT ORDER 00369000
  373. BAL R4,COUNT UPDATE FILE COUNT 00370000
  374. L R0,0(R2) CHAIN THE SELECTED FILE INTO 00371000
  375. ST R0,0(R7) CORRECT SLOT TO BE IN ORDER AS 00372000
  376. ST R7,0(R2) REQUESTED BY THE USER 00373000
  377. LR R6,R3 UPDATE ADDRESSES 00374000
  378. LR R2,R3 .. 00375000
  379. ST R7,SAVEWRK8 UPDATE NEW SEARCH START ADDRESS 00376000
  380. CLI SAVEWRK1,X'00' WAS SEARCH BY CLASS ?? 00377000
  381. BE OR01 NO - GET NEXT OPTION 00378000
  382. B OR06 SEARCH BY CLASS - GET NEXT FILE 00379000
  383. SPACE 00380000
  384. EJECT 00381000
  385. *. 00382000
  386. * 00383000
  387. * SUBROUTINE NAME - 00384000
  388. * 00385000
  389. * DMKCSVPU 00386000
  390. * 00387000
  391. * FUNCTION - 00388000
  392. * 00389000
  393. * TO DELETE SPOOL FILES FROM THE SYSTEM. FILES MAY BE PURGED BY 00390000
  394. * SPECIFIC DEVICE, BY DEVICE TYPE, OR BY SPOOLID. SPOOLID MAY BE 00391000
  395. * THE SPOOLID NUMBER(S), THE FILE CLASS, OR THE KEYWORD ALL. 00392000
  396. * 00393000
  397. * COMMAND LINE FORMAT - 00394000
  398. * 00395000
  399. * +-------+------------------------------------+ 00396000
  400. * | | READER CLASS A ..... | 00397000
  401. * | PURGE | <USERID> PRINTER SPOOLID ..... | 00398000
  402. * | PUR | <SYSTEM> PUNCH ALL | 00399000
  403. * | | ALL --- | 00400000
  404. * +-------+------------------------------------+ 00401000
  405. * 00402000
  406. * READER PRINTER PUNCH ALL CLASS 00403000
  407. * R RDR P PRT PU PCH ALL CL 00404000
  408. * 00405000
  409. * 00406000
  410. * <USERID> AND <SYSTEM> ARE CLASS D USER OPTIONS 00407000
  411. * 00408000
  412. * OPERATION - 00409000
  413. * 00410000
  414. * 1. IF CLASS D USER, CALL GETUSER. 00411000
  415. * 2. CALL GETYPE - IF TYPE = 'ALL', CALL DMKSCNFD TO LOCATE 00412000
  416. * SPOOLID, IF NONE OR IF 'ALL' AND LAST OPERAND, GO TO 00413000
  417. * STEP 4. 00414000
  418. * 3. PU02- CALL GETID- IF NONE AND NO PREVIOUS SPOOLID, 00415000
  419. * DEFAULT TO 'ALL' AND GO TO STEP 4. 00416000
  420. * IF SPOOLID IS 'ALL' AND IS THE LAST SPOOLID, GO TO 00417000
  421. * STEP 4. OTHERWISE, EXIT GIVING MSG003E. 00418000
  422. * 4. PU03,PU04,PU06- CALL GETFILE: IF NONE AND SEARCH IS 00419000
  423. * BY SPOOLID, EXIT GIVING ERROR MSG042E. IF SEARCH 00420000
  424. * BY CLASS GO TO STEP 6. 00421000
  425. * 5. PU05- UNCHAIN THE REQUESTED SPOOL FILE BLOK 00422000
  426. * AND CALL DMKSPLDL TO DELETE THE FILE. 00423000
  427. * IF SEARCH BY SPOOLID GO TO STEP 3: OTHERWISE, 00424000
  428. * GO TO STEP 4. 00425000
  429. * 6. PU07,PU08- IF TYPE = 'ALL', CALL GETCHAIN AND GO TO 00426000
  430. * STEP 4. 00427000
  431. * 7. PU09- EXIT 00428000
  432. * 00429000
  433. * RESPONSE - 00430000
  434. * 00431000
  435. * NNNN FILES PURGED 00432000
  436. * NO 00433000
  437. * 00434000
  438. * ERROR MESSAGES - 00435000
  439. * 00436000
  440. * DMKCSV003E INVALID OPTION - (OPTION) 00437000
  441. * DMKCSV006E INVALID DEVICE TYPE - (ADDR) 00438000
  442. * DMKCSV008E INVALID SPOOLID - (SPOOLID) 00439000
  443. * DMKCSV026E OPERAND MISSING OR INVALID 00440000
  444. * DMKCSV028E CLASS MISSING OR INVALID 00441000
  445. * DMKCSV035E DEVICE TYPE MISSING OR INVALID 00442000
  446. * DMKCSV042E SPOOLID NNNN DOES NOT EXIST 00443000
  447. *. 00444000
  448. SPACE 3 00445000
  449. DMKCSVPU RELOC 00446000
  450. SPACE 00447000
  451. BAL R4,CLEAR CLEAR SAVEWRK1,4-7, 00448000
  452. * VMUSER TO SAVEWRK2-3, 00449000
  453. * SAVEWRK5(2) TO FFFF 00450000
  454. TM VMCLEVEL,VMCLASSD CLASS D USER ?? 00451000
  455. BZ PU01 NO -- 00452000
  456. L R3,FFS INDICATE TEST FOR 'SYSTEM' 00453000
  457. BAL R4,GETUSER GET USERID @V200930 00454000
  458. PU01 EQU * 00455000
  459. BAL R4,GETYPE @V200930 00456000
  460. ST R7,SAVEWRK9 SAVE FILE ANCHOR ADDRESS 00457000
  461. EX R5,CLIALL TYPE = ALL ?? 00458000
  462. BNE PU01A NO -- 00459000
  463. OI SAVEWRK5+3,X'C0' SET SPOOLID AND ALL 00460000
  464. * TYPE EQUAL ALL NEXT OPTION MUST BE NONE OR ALL 00461000
  465. CALL DMKSCNFD 00462000
  466. BNZ IDBLK NONE -- 00463000
  467. C R0,F3 LENGTH OF 3 FOR 'ALL' 00464000
  468. BNE MSG003E NO -- INVALID OPTION 00465000
  469. CLC =C'ALL',0(R1) SPOOLID = 'ALL' ?? 00466000
  470. BNE MSG003E NO - INVALID OPTION 00467000
  471. IDBLK BAL R4,COUNT ZERO COUNT FIELD 00468000
  472. B PU02B CHECK FOR EXTRA OPTION 00469000
  473. PU01A EQU * 00470000
  474. BAL R4,COUNT ZERO COUNT FIELD 00471000
  475. PU02 EQU * 00472000
  476. BAL R4,GETID GET SPOOL ID @V200930 00473000
  477. BZ PU02A CLASS OR SPOOLID PRESENT 00474000
  478. TM SAVEWRK5+3,X'80' CLASS OR SPOOLID PROCESSED ?? 00475000
  479. BO PU09 YES -- 00476000
  480. OI SAVEWRK5+3,X'A0' DEFAULT TO ALL 00477000
  481. * SET 'ALL' AND SPOOLID PRESENT 00478000
  482. B PU03 GO GET FILE 00479000
  483. SPACE 00480000
  484. PU02A OI SAVEWRK5+3,X'80' INDICATE AT LEAST ON SPOOLID 00481000
  485. CLI SAVEWRK1,X'00' SPOOLID EQU ALL ?? 00482000
  486. BNE PU03 NO - 00483000
  487. CLC SAVEWRK1+2(2),ZEROES .. 00484000
  488. BNE PU03 NO -- SPOOLID NOT 'ALL' 00485000
  489. PU02B EQU * 00486000
  490. OI SAVEWRK5+3,X'20' INDICATE SPOOLID 'ALL' 00487000
  491. CALL DMKSCNFD CHECK FOR EXTRA OPTION 00488000
  492. BZ MSG003E YES -- INVALID OPTION 00489000
  493. PU03 L R7,SAVEWRK9 RESTORE FILE CHAIN POINTER 00490000
  494. PU04 EQU * 00491000
  495. SLR R15,R15 NOT COUNT ONLY IN GETFILE HRC022DK 00491690
  496. BAL R4,GETFILE GET NEXT SPOOL FILE @V200930 00492000
  497. LTR R7,R7 SFBLOK PRESENT ?? 00493000
  498. BZ PU06 NO - 00494000
  499. PU05 MVC 0(4,R6),SFBPNT UNCHAIN CURRENT SFBLOK 00495000
  500. CALL DMKSPLDL PURGE THIS FILE 00496000
  501. BAL R4,COUNT UPDATE FILE COUNT 00497000
  502. CLC SAVEWRK1+2(2),ZEROES SPOOLID PRESENT?? 00498000
  503. BNE PU02 YES -- GET NEXT OPTION 00499000
  504. B PU03 GET NEXT FILE 00500000
  505. SPACE 00501000
  506. PU06 CLC SAVEWRK1+2(2),ZEROES SPOOLID PRESENT ?? 00502000
  507. BNE MSG042E YES - SPOOL FILE NOT FOUND 00503000
  508. SPACE 00504000
  509. PU07 TM SAVEWRK5+3,X'40' TYPE = 'ALL' ?? 00505000
  510. BO PU08 YES -- 00506000
  511. TM SAVEWRK5+3,X'20' SPOOLID DEFAULT 'ALL' 00507000
  512. BO PU09 YES -- EXIT - NO MORE SPOOLIDS 00508000
  513. B PU02 NO - GET NEXT SPOOLID 00509000
  514. SPACE 00510000
  515. PU08 EQU * 00511000
  516. BAL R3,GETCHAIN GET NEXT ORDERED CHAIN @V200930 00512000
  517. LTR R6,R6 END OF PUNCH CHAIN 00513000
  518. BZ PU09 YES- EXIT 00514000
  519. ST R7,SAVEWRK9 SAVE ADDRESS OF NEW CHAIN 00515000
  520. B PU04 GET NEXT FILE 00516000
  521. SPACE 00517000
  522. SPACE 00518000
  523. PU09 B CSVEXIT 00519000
  524. EJECT 00520000
  525. SPACE 3 00521000
  526. * ***EXECUTED INSTRUCTIONS*** 00522000
  527. CLIALL CLI =AL1(CSVRDR+TYPPRT+TYPPUN),X'00' MASK = READER PRINTER 00523000
  528. * PUNCH 00524000
  529. TMRDR TM =AL1(CSVRDR),X'00' MASK = READER 00525000
  530. TMPRT TM =AL1(TYPPRT),X'00' MASK = PRINTER 00526000
  531. TMPUN TM =AL1(TYPPUN),X'00' MASK = PUNCH 00527000
  532. EJECT 00528000
  533. *. 00529000
  534. * 00530000
  535. * SUBROUTINE NAME - 00531000
  536. * 00532000
  537. * DMKCSVTR 00533000
  538. * 00534000
  539. * FUNCTION - 00535000
  540. * 00536000
  541. * TO TRANSFER A SPOOL FILE TO ANOTHER USER AND/OR HRC022DK 00537290
  542. * ANOTHER TYPE OF UNIT RECORD DEVICE WITHOUT PROCESSING HRC022DK 00537580
  543. * BY THE VIRTUAL MACHINE. SPOOLID MAY BE ID NUMBER, HRC022DK 00537870
  544. * CLASS, OR THE KEYWORD ALL. ONLY PRT FILES WILL BE HRC022DK 00538160
  545. * TRANSFERRED TO A PRINTER, AND ONLY PUN FILES TO A HRC022DK 00538450
  546. * PUNCH. DMP (SYSTEM DUMP) FILES AND RDR FILES MAY HRC022DK 00538740
  547. * ONLY BE TRANSFERRED TO ANOTHER READER. HRC022DK 00539030
  548. * 00540000
  549. * COMMAND LINE FORMAT - 00541000
  550. * 00542000
  551. * +----------+--------------------------------------------+HRC022DK 00543790
  552. * | TRANSFER | <USERID> <PRT> SPOOLID < TO > USERID <PRT> |HRC022DK 00544580
  553. * | TRAN | <SYSTEM> <PCH> CLASS A <FROM> ALL <PCH> |HRC022DK 00545370
  554. * | | <RDR> ALL <RDR> |HRC022DK 00546160
  555. * | | --- --- |HRC022DK 00546950
  556. * +----------+--------------------------------------------+HRC022DK 00547740
  557. * HRC022DK 00548530
  558. * HRC022DK 00549320
  559. * CLASS ALL TO FROM READER PRINTER PUNCH HRC022DK 00550110
  560. * CL ALL T F R RDR P PRT PU PCH HRC022DK 00550900
  561. * 00552000
  562. * 00553000
  563. * <USERID> AND <SYSTEM> ARE CLASS D USER OPTIONS 00554000
  564. * 00555000
  565. * OPERATION - 00556000
  566. * 00557000
  567. * 1. IF CLASS D USER, CALL GETUSER. 00558000
  568. * 2. CALL GETID 00559000
  569. * 3. CALL GETUSER 00560000
  570. * 4. CALL GETFILE: IF NONE AND SEARCH IS BY SPOOLID, 00561000
  571. * EXIT GIVING ERROR MSG042E. IF NONE, EXIT. 00562000
  572. * MOVE USERID TO SFBUSER. BAL R4 SETPEND TO LOCATE 00563000
  573. * VIRTUAL READER AND POST DEVICE END INTERRUPT. 00564000
  574. * NOTIFY SENDER AND RECEIVER. IF SEARCH BY CLASS OR ALL, 00565000
  575. * GO TO STEP 4: OTHERWISE EXIT 00566000
  576. * 00567000
  577. * RESPONSE - 00568000
  578. * 00569000
  579. * XXX FILE NNNN TRANSFERRED FROM USERID HRC022DK 00570390
  580. * FILE NNNN TRANSFERRED TO USERID XXX HRC022DK 00570780
  581. * HRC022DK 00571170
  582. * FILE NNNN CANNOT BE TRANSFERRED TO XXX HRC022DK 00571560
  583. * 00572000
  584. * NNNN FILES TRANSFERRED 00573000
  585. * NO 00574000
  586. * 00575000
  587. * ERROR MESSAGES - 00576000
  588. * 00577000
  589. * DMKCSV003E INVALID OPTION - (OPTION) 00578000
  590. * DMKCSV007E INVALID USERID - (USERID) 00579000
  591. * DMKCSV008E INVALID SPOOLID - (SPOOLID) 00580000
  592. * DMKCSV020E USERID MISSING OR INVALID 00581000
  593. * DMKCSV026E OPERAND MISSING OR INVALID 00582000
  594. * DMKCSV027E SPOOLID MISSING OR INVALID 00583000
  595. * DMKCSV028E CLASS MISSING OR INVALID 00584000
  596. * DMKCSV042E SPOOLID NNNN DOES NOT EXSIT 00585000
  597. * DMKCSV053E (USERID) NOT IN CP DIRECTORY 00586000
  598. *. 00587000
  599. EJECT 00588000
  600. DMKCSVTR RELOC 00589000
  601. SPACE 00590000
  602. BAL R4,CLEAR CLEAR SAVEWRK1,4-9, 00591000
  603. * VMUSER TO SAVEWRK2-3, 00592000
  604. * SAVEWRK5(2) TO X'FFFF' 00593000
  605. TM VMCLEVEL,VMCLASSD IS THIS A CLASS D USER ?? @V200930 00594000
  606. BZ TR01 NO, CONT @V200930 00595000
  607. L R3,FFS SET R3 TO SEARCH FOR USERID OR @V200930 00596000
  608. * SYSTEM 00597000
  609. BAL R4,GETUSER FIND USERID OR SYSTEM OR NEITHER @V200930 00598000
  610. TR01 EQU * HRC022DK 00599090
  611. MVC SAVEWRK8(8),BUFNXT-BUFFER(R9) SAVE SCAN POINTERSHRC022DK 00599180
  612. L R3,X40FFS SIGNAL TRANSFER CHAIN 1 HRC022DK 00599270
  613. BAL R4,GETYPE GET TYPE OF CHAIN 1 HRC022DK 00599360
  614. ST R7,SAVEWRK9 SAVE FOR LATER HRC022DK 00599450
  615. LR R10,R7 DUMMY CHAIN 2 ANCHOR FOR 'FROM' HRC022DK 00599540
  616. BAL R4,GETID GET SPOOL ID HRC022DK 00599630
  617. BZ TR02 SPOOLID PRESENT 00600000
  618. SPACE 00601000
  619. C R3,FFS CLASS D AND 1ST OPERAND UNKNOWN ?? 00602000
  620. BE MSG026E YES - OPERAND MISSING OR INVALID 00603000
  621. B MSG027E SPOOLID MISSING OR INVALID 00604000
  622. SPACE 00605000
  623. TR02 EQU * HRC022DK 00606990
  624. MVC SAVEWRK6(8),SAVEWRK2 SAVE SENDER ID 00609000
  625. CALL DMKSCNFD LOCATE KEYWORD 'TO' 00610000
  626. BNZ MSG020E USERID MISSING 00611000
  627. LR R3,R0 COUNT 00612000
  628. BCTR R3,0 -1 00613000
  629. EX R3,CLCTO TO ??? 00614000
  630. BE TR04 YES, TO USERID @V200930 00615000
  631. C R0,F4 MORE THAN 4 CHARS ?? @V200930 00616000
  632. BH TR05 YES, MUST BE USERID @V200930 00617000
  633. EX R3,CLCFROM IS IT FROM USERID ?? @V200930 00618000
  634. BNE TR05 NO, MUST BE USERID FOR TO @V200930 00619000
  635. OI SAVEWRK5+3,X'40' FLAG TO RECLAIM FILES @V200930 00620000
  636. B TR04 GET USERID @V200930 00621000
  637. SPACE 00622000
  638. TR05 BAL R4,GU02 VALIDATE THE USERID @V200930 00623000
  639. B TR05A CONT @V200930 00624000
  640. TR04 BAL R4,GETUSER GET AND VALIDATE THE USERID @V200930 00625000
  641. TR05A TM SAVEWRK5+3,X'40' IS IT A RECLAIM OF FILES ?? @V200930 00626000
  642. BO RC02 YES, DO RECLAIM @V200930 00627000
  643. BAL R4,COUNT ZERO COUNT FIELD 00628000
  644. L R10,SAVEWRK9 save chain 1 address HRC311DK 00628100
  645. MVC SAVEWRK8(8),SAVEWRK2 SAVE USER ID 00629000
  646. MVC SAVEWRK2(8),SAVEWRK6 MOVE IN SENDER ID 00630000
  647. L R3,XRIGHT24 SIGNAL TRANSFER CHAIN 2 HRC022DK 00630200
  648. BAL R4,GETYPE GET TYPE OF CHAIN 2 HRC022DK 00630400
  649. LR R4,R10 save chain 1 address HRC311DK 00630410
  650. LR R1,R10 save chain 1 address HRC311DK 00630420
  651. LR R10,R7 SAVE ANCHOR CHAIN 2 HRC022DK 00630600
  652. LR R7,R4 restore chain 1 address HRC311DK 00630810
  653. XC SAVEWRK7(4),SAVEWRK7 CLEAR FOR COUNT @VA06206 00631000
  654. L R15,X2048BND TELL GETFILE WE ARE COUNTING HRC022DK 00632690
  655. BAL R4,GETFILE COUNT FILES TO BE TRANSFERRED @VA06206 00633000
  656. SR R15,R15 RESET THE COUNTING SWITCH HRC022DK 00634590
  657. LR R7,R1 restore chain 1 address HRC311DK 00634689
  658. B TR06 START SEARCH HRC022DK 00634770
  659. SPACE , HRC022DK 00634860
  660. TRNOT EQU * HRC022DK 00634950
  661. LA R0,TRBADSIZ LENGTH IN DWDS WE NEED HRC022DK 00635040
  662. CALL DMKFREE GET THE MESSAGE BUFFER HRC022DK 00635130
  663. ST R8,TRANCH1-TRBADMSG(R1) SAVE CHAIN1 PTR IN BUFF HRC022DK 00635220
  664. LR R8,R1 MOVE THE MESSAGE BUFF ADDR HRC022DK 00635310
  665. USING TRBADMSG,R8 MESSAGE TO FREE STORAGE HRC022DK 00635400
  666. MVC TRBADMSG(L'MSG2INIT),MSG2INIT DITTO HRC022DK 00635490
  667. LH R1,SFBFILID GET FILEID HRC022DK 00635580
  668. CALL DMKCVTBD CONVERT TO DECIMAL HRC022DK 00635670
  669. STCM R1,B'1111',TRBADID STORE SPOOLID IN MESSAGE HRC022DK 00635760
  670. MVC TRBADC,=C'PRT' ASSUME TRYING TO GO TO PRT QUEUE HRC022DK 00635850
  671. EX R5,TMPRT WERE WE RIGHT ? HRC022DK 00635940
  672. BO TRNOTSET YES - SETUP MESSAGE HRC022DK 00636030
  673. MVC TRBADC,=C'PUN' NO - MUST HAVE BEEN GOING TO PCH HRC022DK 00636120
  674. TRNOTSET LA R0,TRBADL LENGTH OF MESSAGE HRC022DK 00636210
  675. LA R1,TRBADMSG POINT TO MESSAGE HRC022DK 00636300
  676. LA R2,NORET+DFRET TELL QCNWT TO RELEASE BUFF HRC022DK 00636390
  677. LA R3,TRBADSIZ NR DW'S IN MSG HRC022DK 00636480
  678. L R8,TRANCH1 RESTORE R8 AS CHAIN POINTER HRC022DK 00636570
  679. DROP R8 , HRC022DK 00636660
  680. CALL DMKQCNWT,PARM=NORET WRITE MESSAGE TO USER HRC022DK 00636750
  681. TR06 EQU * HRC022DK 00636840
  682. BAL R4,GETFILE GET NEXT SPOOL FILE @V200930 00638000
  683. LTR R7,R7 LAST SFBLOK ?? 00639000
  684. BZ TR09 YES - 00640000
  685. OI SAVEWRK5+3,X'80' INDICATE AT LEAST ONE FILE 00641000
  686. LR R9,R6 NOTE CURRENT PLACE IN THE QUEUE HRC022DK 00641040
  687. CR R8,R10 CHAIN 1 = CHAIN 2 ? HRC022DK 00641080
  688. BE GOTONE YES - GO MOVE THIS FILE HRC022DK 00641120
  689. EX R5,TMRDR GOING TO A RDR ? HRC022DK 00641160
  690. BO DEQUEUE YES - GO AND DEQUEUE HRC022DK 00641200
  691. TM SFBFLAG,SFBDUMP SYSTEM DUMP FILE ? HRC022DK 00641240
  692. BO TRNOT YES - MUST STAY ON RDR QUEUE HRC022DK 00641280
  693. CLI SFBTYPE,TYPRDR FILE OF TYPE RDR ? HRC022DK 00641320
  694. BE TRNOT YES - MUST STAY ON RDR QUEUE HRC022DK 00641360
  695. EX R5,TMPRT GOING TO A PRT ? HRC022DK 00641400
  696. BO CHKPRT YES - CHECK IT'S A PRT FILE HRC022DK 00641440
  697. TM SFBTYPE,TYPPRT FILE OF TYPE PRT ? HRC022DK 00641480
  698. BZ DEQUEUE NO - MUST BE A REAL PCH FILE HRC022DK 00641520
  699. B TRNOT YES - CAN'T GO TO A PCH QUEUE HRC022DK 00641560
  700. CHKPRT TM SFBTYPE,TYPPRT FILE OF TYPE PRT ? HRC022DK 00641600
  701. BZ TRNOT NO - CAN'T GO TO A PRT QUEUE HRC022DK 00641640
  702. DEQUEUE EQU * HRC022DK 00641680
  703. MVC 0(4,R6),SFBPNT UNCHAIN IT HRC022DK 00641720
  704. LR R6,R10 POINT TO CHAIN 2 HRC022DK 00641760
  705. B TR06A GO AND RECHAIN IT HRC022DK 00641800
  706. SPACE , HRC022DK 00641840
  707. GOTONE EQU * HRC022DK 00641880
  708. CLC SFBUSER(8),SAVEWRK8 USER TRAN OWN TO SELF 00642000
  709. BE TR06 NO -- MSG 00643000
  710. SPACE 00644000
  711. TR06C CLC SFBPNT,ZEROES LAST SFBLOK ON CHAIN ?? @V200930 00645000
  712. BE TR07 YES -- 00646000
  713. MVC 0(4,R6),SFBPNT UNCHAIN SELECTED SFBLOK 00647000
  714. TR06A L R14,0(R6) ADDRESS OF NEXT SFBLOK 00648000
  715. LTR R14,R14 IS THERE ONE ?? 00649000
  716. BZ TR06B NO -- 00650000
  717. LR R6,R14 UPDATE TO NEXT SFBLOK 00651000
  718. B TR06A KEEP LOOKING FOR END 00652000
  719. SPACE 00653000
  720. TR06B ST R7,0(R6) CHAIN SELECTED SFBLOK TO END 00654000
  721. SR R15,R15 CLEAR FORWARD 00655000
  722. ST R15,SFBPNT POINTER 00656000
  723. SPACE 00657000
  724. TR07 BAL R4,COUNT UPDATE FILE COUNT 00658000
  725. OI SFBFLAG,SFBINUSE TELL EVERYONE WE HAVE THE FILE HRC022DK 00658010
  726. LA R0,TRANSIZE LENGTH IN DWDS WE NEED @VA10097 00658020
  727. CALL DMKFREE GET THE MESSAGE BUFFER @VA10097 00658030
  728. ST R8,TRANCH1-TRANMSG(R1) SAVE CHAIN1 PTR IN BUFF @VA10097 00658040
  729. LR R8,R1 MOVE THE MESSAGE BUFF ADDR @VA10097 00658050
  730. USING TRANMSG,R8 MESSAGE TO FREE STORAGE @VA10097 00658060
  731. LA R3,1 INITIALIZE R3 @VA10097 00658070
  732. MVC TRANMSG(MSGINITL),MSGINIT INITIALIZE MESSAGE @VA10097 00658080
  733. OI SFBFLAG,SFBINUSE TELL EVERYONE WE HAVE THE FILE @VA09638 00658500
  734. MVC TRMSGUR(8),SFBUSER MOVE IN SENDER ID 00659000
  735. MVC SFBUSER(8),SAVEWRK8 MOVE USER ID TO SFBLOK 00660000
  736. LA R2,RDRCHN ASSUME FILE IS NOW ON RDR HRC022DK 00660100
  737. EX R5,TMRDR ARE WE CORRECT ? HRC022DK 00660200
  738. BO TRCKS YES - GO DO CHECKPOINT HRC022DK 00660300
  739. LA R2,PRTCHN ASSUME FILE IS NOW ON PRT HRC022DK 00660400
  740. EX R5,TMPRT ARE WE CORRECT ? HRC022DK 00660500
  741. BO TRCKS YES - GO DO CHECKPOINT HRC022DK 00660600
  742. LA R2,PCHCHN MUST BE NOW ON PCH HRC022DK 00660700
  743. TRCKS LA R2,CHGSFB(,R2) SIGNAL CHANGE FUNCTION HRC022DK 00660800
  744. CALL DMKCKSPL,PARM=CHGSFB CHECKPOINT @V304298 00661000
  745. LH R1,SFBFILID GET AND CONVERT NEW FILID 00662000
  746. CALL DMKCVTBD 00663000
  747. STCM R1,B'1111',TRMSGID STORE SPOOLID IN MSG 00664000
  748. MVC TRMSGF,=C'RDR' ASSUME NOW A RDR FILE HRC022DK 00664100
  749. EX R5,TMRDR WERE WE RIGHT ? HRC022DK 00664200
  750. BO MSGSET YES - GO SETUP MSG HRC022DK 00664300
  751. MVC TRMSGF,=C'PRT' ASSUME NOW A PRT FILE HRC022DK 00664400
  752. EX R5,TMPRT WERE WE RIGHT ? HRC022DK 00664500
  753. BO MSGSET YES - GO SETUP MSG HRC022DK 00664600
  754. MVC TRMSGF,=C'PUN' MUST BE NOW A PCH FILE HRC022DK 00664700
  755. MSGSET EQU * HRC022DK 00664800
  756. LA R0,8 LENGTH OF USERID 00665000
  757. LA R1,SAVEWRK8 ADDRESS OF THE TO 'USERID' 00666000
  758. CALL DMKSCNAU LOCATE USERID VMBLOK 00667000
  759. BNZ TRNOMSG @VA09926 00667500
  760. SWTCHVM SWITCH TO RECEIVER @VA09685 00668100
  761. TM VMMLEVEL,VMMSGON RECEIVER RECEIVING MESSAGES ?? 00672000
  762. BZ TRNOMSG NO - 00673000
  763. TM VMMLVL2,VMMIMSG USER WANT INFORMATION MSG ? @VM03039 00674000
  764. BZ TRNOMSG NO - SUPPRESS IT @VM03039 00675000
  765. MVC TRMCONST(6),=C' FROM ' 00676000
  766. LA R0,TRANL LENGTH OF MESSAGE 00678000
  767. LA R1,TRANMSG ADDRESS OF MESSAGE 00679000
  768. L R2,=A(NOTRESP) SET NON-RESPONSE MESSAGE @V60C2B8 00680000
  769. CALL DMKQCNWT,PARM=NORET(,R2) WRITE MSG TO RECEIVER @V60C2B8 00681000
  770. SPACE 00682000
  771. TRNOMSG EQU * 00683000
  772. L R1,SAVER11 GET CALLERS VMBLOK @V407510 00684000
  773. SWTCHVM SWITCH BACK TO CALLER @V407510 00685000
  774. MVC TRMCONST(6),=C' TO ' 00686000
  775. MVC TRMSGUR(8),SAVEWRK8 MOVE TO USER ID 00687000
  776. MVC TRMSGT,TRMSGF MOVE IN CORRECT CHAIN NAME HRC022DK 00687200
  777. TM SAVEWRK5+3,X'40' RECLAIMING FILE ? HRC022DK 00687400
  778. BO TR08 YES - SKIP MESSAGE HRC022DK 00687600
  779. CLC VMUSER(8),SAVEWRK8 TRANS TO SELF NO MSG 00688000
  780. BE TR08 YES - 00689000
  781. TM VMMLVL2,VMMIMSG USER WANT INFORMATION MSG ? @VM03039 00690000
  782. BZ TR08 NO - SUPPRESS IT @VM03039 00691000
  783. LA R0,TRANL LENGTH OF MESSAGE 00692000
  784. LR R1,R8 ADDRESS OF THE MESSAGE @VA10097 00693100
  785. LA R3,TRANSIZE NR DW'S IN MSG @VA10097 00693200
  786. LA R2,NORET+DFRET TELL QCNWT TO RELEASE BUFF @VA10097 00693300
  787. L R8,TRANCH1 RESTORE R8 AS CHAIN POINTER @VA10097 00693400
  788. CALL DMKQCNWT TELL SENDER @VA10097 00693500
  789. SLR R3,R3 THE BUFFER HAS BEEN FRETTED @VA10097 00693600
  790. TR08 EQU * 00695000
  791. LTR R1,R3 DO WE NEED TO RELEASE BUFF @VA10097 00695010
  792. BZ TR08A ALREADY GONE @VA10097 00695015
  793. LR R1,R8 GET BUFFER ADDR FOR DMKFRET @VA10097 00695020
  794. L R8,TRANCH1 RESTORE R8 AS CHAIN POINTER @VA10097 00695025
  795. DROP R8 FINISHED @VA10097 00695030
  796. LA R0,TRANSIZE NR OF DWDS IN MESSAGE BUFFER @VA10097 00695035
  797. CALL DMKFRET RELEASE MESSAGE BUFFER @VA10097 00695040
  798. TR08A DS 0H @VA10097 00695045
  799. TM VMCLEVEL,VMCLASSD IS THIS USER CLASS D? @VA10097 00695050
  800. BZ TR08AB NO; GO INDICATE THIS @VA10097 00695055
  801. L R3,FFS YES; LOAD 'CLASS D' FLAG @VA10097 00695060
  802. B *+8 NOW CONTINUE PROCESSING @VA10097 00695065
  803. TR08AB L R3,XRIGHT24 NOT CLASS D USER @VA10097 00695070
  804. EX R5,TMRDR GOING TO RDR ? HRC022DK 00695110
  805. BZ *+8 NO - SKIP THE INTERRUPT HRC022DK 00695150
  806. BAL R4,SETPEND POST DEVICE END INTERRUPT @VA09134 00695200
  807. NI SFBFLAG,255-SFBINUSE WE ARE DONE WITH THIS FILE @VA09638 00695500
  808. EX R5,TMRDR GOING TO A RDR ? HRC022DK 00695550
  809. BO NOSTART YES - DON'T TRY TO START READER HRC022DK 00695600
  810. TM SFBFLAG,SFBUHOLD+SFBSHOLD IS FILE HELD ? HRC022DK 00695650
  811. BNZ NOSTART YES - SKIP THE START HRC022DK 00695700
  812. C R10,SAVEWRK9 CHAIN 2 = CHAIN 1 HRC022DK 00695750
  813. BE NOSTART YES - NO NEED TO TRY STARTING HRC022DK 00695800
  814. CALL DMKCSOSD TRY TO START REAL PRT/PCH HRC022DK 00695850
  815. NOSTART EQU * HRC022DK 00695900
  816. CLC SAVEWRK1+2(2),ZEROES SPOOLID ?? 00696000
  817. BNE CSVEXIT YES EXIT -- 00697000
  818. LR R7,R9 RESUME AT SAME PLACE IN QUEUE HRC022DK 00698490
  819. TM SAVEWRK5+3,X'40' TRANSFER FILE FROM? @VA01375 00699000
  820. BO RC04 YES -- @VA01375 00700000
  821. CLC SAVEWRK5(2),SAVEWRK7 ARE THE COUNTS EQUAL @VA06206 00701000
  822. BNL CSVEXIT SURE ARE GET OUT @VA06206 00702000
  823. B TR06 TRANS FILE TO @VA01375 00703000
  824. TR09 CLC SAVEWRK1+2(2),ZEROES SEARCH BY SPOOLID ?? 00704000
  825. BE CSVEXIT NO -- EXIT 00705000
  826. TM SAVEWRK5+3,X'80' FILE FOUND ?? 00706000
  827. BZ MSG042E NO -- ERROR MSG DMKCSV042E 00707000
  828. B CSVEXIT EXIT 00708000
  829. SPACE 00709000
  830. MSGINIT DC C'RDR ' @VA10097 00710000
  831. DC C'FILE ' @VA10097 00710100
  832. DC CL5' ' @VA10097 00710200
  833. DC C'TRANSFERRED' @VA10097 00710300
  834. DC C' FROM ' @VA10097 00710400
  835. DC CL8' ' @VA10097 00710500
  836. MSGINITL EQU *-MSGINIT @VA10097 00710600
  837. DS 0H 00724000
  838. MSG2INIT DC C'FILE NNNN CANNOT BE TRANSFERRED TO XXX' HRC022DK 00724500
  839. SPACE 00725000
  840. RC02 BAL R4,COUNT ZERO COUNT @V200930 00726000
  841. L R7,SAVEWRK9 SET TO READER CHAIN HRC022DK 00727690
  842. RC04 DS 0H @VA09640 00728400
  843. SLR R15,R15 NOT COUNT ONLY IN GETFILE HRC022DK 00728690
  844. BAL R4,GETFILE GET A SPOOL FILE @VA09640 00728800
  845. LTR R7,R7 TEST FOR A FILE @V200930 00729000
  846. BZ TR09 NONE, RETURN @V200930 00730000
  847. OI SAVEWRK5+3,X'80' SHOW ONE FILE FOUND @V200930 00731000
  848. LR R9,R6 NOTE CURRENT PLACE IN THE QUEUE HRC022DK 00731500
  849. CLI SAVEWRK6,C' ' SYSTEM SEARCH FOR ALL USERS ?? @V200930 00732000
  850. BE RC03 YES .... WOW !! @V200930 00733000
  851. CLC SFBORIG,SAVEWRK6 DID THIS USER ORIGINATE FILE ??@V200930 00734000
  852. BNE RC04 NO, CONT @V200930 00735000
  853. RC03 CLC SFBUSER,SFBORIG DOES HE OWN IT ALREADY ?? @V200930 00736000
  854. BE RC04 YES, CONT @V200930 00737000
  855. MVC SAVEWRK8(8),SFBORIG SET NEW OWNER IN SAVEWRK8 @V200930 00738000
  856. B TR06C TRANSFER LOGIC @V200930 00739000
  857. EJECT 00740000
  858. *. 00741000
  859. **************************************** 00742000
  860. * 00743000
  861. * SUBROUTINES 00744000
  862. * 00745000
  863. **************************************** 00746000
  864. * 00747000
  865. * 00748000
  866. * 00749000
  867. * OPERATION OF GETUSER - 00750000
  868. * 00751000
  869. * 1. CALL DMKSCNFD TO LOCATE USERID: 00752000
  870. * IF NONE, EXIT GIVING ERROR MSG020E. 00753000
  871. * 2. IF GPR3 = FFS AND OPTION = 'SYSTEM', RETURN TO CALLER 00754000
  872. * 3. CALL DMKUDRFU: VERIFY USERID. 00755000
  873. * IF INVALID AND GPR3 = FFS, RETURN TO CALLER 00756000
  874. * IF INVALID OR MISSING EXIT GIVING ERROR MSG020E. 00757000
  875. * 4. MOVE USERID TO SAVEWRK2,3 AND RETURN TO CALLER. 00758000
  876. *. 00759000
  877. SPACE 3 00760000
  878. GETUSER EQU * HERE TO MOVE USERID TO SAVEWRK2,3 00761000
  879. SPACE 00762000
  880. GU01 EQU * 00763000
  881. C R3,FFS TEST FOR 'SYSTEM' OR 1ST USERID ? 00764000
  882. BNE *+10 NO -- 00765000
  883. MVC SAVEWRK6(8),BUFNXT-BUFFER(R9) SAVE SCAN POINTERS 00766000
  884. CALL DMKSCNFD LOCATE USERID 00767000
  885. BZ GU02 OPTION PRESENT 00768000
  886. C R3,FFS TEST FOR SYSTEM ?? 00769000
  887. BE GU02C YES -- 00770000
  888. B MSG020E USERID MISSING 00771000
  889. SPACE 00772000
  890. GU02 MVC SAVEWRK2(8),BLANKS RESET USERID SAVE AREA 00773000
  891. C R0,F8 LENGTH GREATER THAN EIGHT ?? 00774000
  892. BNH GU02A 00775000
  893. C R3,FFS TEST FOR 'SYSTEM' OR FIRST USERID ?? 00776000
  894. BE GU02C YES -- 00777000
  895. B MSG007E INVALID USERID MESSAGE 00778000
  896. SPACE 00779000
  897. GU02A C R3,FFS TEST FOR 'SYSTEM' ?? 00780000
  898. BNE GU02B NO -- 00781000
  899. C R0,F6 LENGTH OF 'SYSTEM' 00782000
  900. BNE GU02B NO -- WRONG LENGTH 00783000
  901. CLC =C'SYSTEM',0(R1) OPTION = 'SYSTEM' ?? 00784000
  902. BNE GU02B NO -- CONT 00785000
  903. BALR R3,R4 RESET GPR3 AND RETURN 00786000
  904. SPACE 00787000
  905. GU02B EQU * HRC022DK 00788080
  906. CL R0,F1 A ONE-CHARACTER USERID? HRC022DK 00788160
  907. BNE GU02E NO... HRC022DK 00788240
  908. CLI 0(R1),C'*' IS FOR MYSELF? HRC022DK 00788320
  909. BNE GU02E NO... HRC022DK 00788400
  910. LA R0,8 SETUP FOR 8 BYTE MOVE HRC022DK 00788480
  911. LA R1,VMUSER POINT TO MY OWN USERID HRC022DK 00788560
  912. B GU03 SKIP UN-NECESSARY VALIDATION HRC022DK 00788640
  913. GU02E EQU * HRC022DK 00788720
  914. SR R2,R2 PARM REG HRC022DK 00788800
  915. CALL DMKUDRFU VERIFY USER 00789000
  916. BZ GU03 VALID USERID 00790000
  917. TM SAVEWRK5+3,X'40' IS IT A RECLAIM FUNCTION ?? @V200930 00791000
  918. BZ GU02D NO, CONT @V200930 00792000
  919. C R0,F3 IS IT 3 CHARS ?? @V200930 00793000
  920. BNE GU02D NO, CONT @V200930 00794000
  921. CLC 0(3,R1),=CL3'ALL' IS IT ALL OPTION ?? @V200930 00795000
  922. BNE GU02D NO, CONT @V200930 00796000
  923. BALR R3,R4 RETURN WITH USERID BLANK @V200930 00797000
  924. GU02D DS 0H @V200930 00798000
  925. C R3,FFS CLASS D WITH USERID ?? 00799000
  926. BNE MSG053E NO -- INDICATE ERROR 00800000
  927. GU02C MVC SAVEWRK2(8),VMUSER MOVE IN CLASS D USERID 00801000
  928. MVC BUFNXT-BUFFER(8,R9),SAVEWRK6 RESET SCAN POINTERS 00802000
  929. BR R4 RETURN TO CALLER 00803000
  930. GU03 LR R14,R0 COUNT 00804000
  931. BCTR R14,0 -1 00805000
  932. EX R14,MVCID MOVE USER ID FROM COMMAND LINE TO 00806000
  933. * SAVEWRK2,3 00807000
  934. BALR R3,R4 RESET GPR3 AND RETURN TO CALLER 00808000
  935. SPACE 00809000
  936. MVCID MVC SAVEWRK2(0),0(R1) ***EXECUTED*** 00810000
  937. SPACE 3 00811000
  938. CLEAR XC SAVEWRK4(24),SAVEWRK4 CLEAR SAVEWRK AREA 00812000
  939. XC SAVEWRK1(4),SAVEWRK1 00813000
  940. MVC SAVEWRK2(8),VMUSER MOVE IN USERID 00814000
  941. MVC SAVEWRK5(2),FFS SET TO X'FFFF' 00815000
  942. BR R4 RETURN TO CALLER 00816000
  943. SPACE 3 00817000
  944. COUNT EQU * HERE TO UPDATE FILE COUNT 00818000
  945. LH R14,SAVEWRK5 GET COUNT 00819000
  946. LA R14,1(R14) UPDATE BY ONE AND 00820000
  947. STH R14,SAVEWRK5 STORE 00821000
  948. BR R4 RETURN TO CALLER 00822000
  949. EJECT 00823000
  950. *. 00824000
  951. * 00825000
  952. * OPERATION OF GETYPE - 00826000
  953. * 00827000
  954. * 1. CALL DMKSCNFD TO LOCATE DEVICE TYPE FIELD 00828000
  955. * 2. IF OPTION = 'READER', 'PRINT', 'PUNCH' OR 'ALL', SET 00829000
  956. * GPR5 = APPROPRIATE DEVICE TYPE AND GO TO STEP 3. 00830000
  957. * IF OPTION = 'ALL', SET GPR5 EQUAL TO CSVRDR+TYPPRT+ 00831000
  958. * TYPPUN, AND GO TO STEP 3. 00832000
  959. * IF TEST FOR SYSTEM OR 1ST USERID, EXIT GIVING MSG003E. 00833000
  960. * OTHERWISE EXIT GIVING MSG0006E. 00834000
  961. * 3. SET GPR6 TO FFS, CALL GETCHAIN (GPR6 WILL BE FILLED BY 00835000
  962. * GETCHAIN WITH THE APPROPRIATE FILE CHAIN ANCHOR) 00836000
  963. * 4. EXIT 00837000
  964. *. 00838000
  965. SPACE 3 00839000
  966. GETYPE EQU * 00840000
  967. SPACE 00841000
  968. GT01 LA R5,CSVRDR+TYPPRT+TYPPUN SET FOR ALL TYPE 00842000
  969. CALL DMKSCNFD LOCATE DEVICE TYPE FIELD 00843000
  970. STM R0,R1,SAVEWRK6 SAVE COUNT AND ADDRESS OF TYPE 00844000
  971. BZ GT02 OPTION PRESENT 00845000
  972. C R3,XRIGHT24 TRANS CHAIN 2? HRC022DK 00845300
  973. BE TRCHRDR2 YES, DEFAULT TO RDR HRC022DK 00845600
  974. C R3,FFS CLASS D USER ?? 00846000
  975. BE MSG026E YES -- OPERAND MISSING 00847000
  976. B MSG035E DEVICE TYPE MISSING 00848000
  977. SPACE 00849000
  978. GT02 EQU * 00850000
  979. * GPR1 ADDRESS OF TYPE 00851000
  980. LR R14,R0 GET OPTION COUNT 00852000
  981. BCTR R14,0 -1 00853000
  982. C R0,F2 COUNT LENGTH OF 2 00854000
  983. BE GT02A VALID FOR PUNCH 00855000
  984. BL GT02B VALID FOR READER PRINTER 00856000
  985. EX R14,CLCALL ALL ?? 00857000
  986. BE TYPALL YES, CHECK IF ITS TRANSFER HRC022DK 00858490
  987. LA R5,CSVRDR SET R5 TO READER TYPE 00859000
  988. EX R14,CLCRDR RDR ?? 00860000
  989. BE DEVIC YES 00861000
  990. LA R5,TYPPRT PRINTER MASK 00862000
  991. EX R14,CLCPRT PRT ?? 00863000
  992. BE DEVIC YES - 00864000
  993. SPACE 00865000
  994. LA R5,TYPPUN SET GPR5 TO PUNCH TYPE 00866000
  995. EX R14,CLCPCH PCH ?? 00867000
  996. BE DEVIC YES 00868000
  997. GT02A LA R5,TYPPUN PUNCH MASK 00869000
  998. EX R14,CLCPUN PUNCH ?? 00870000
  999. BE DEVIC YES - 00871000
  1000. SPACE 00872000
  1001. GT02B LA R5,TYPPRT SET GPR5 TO PRINTER TYPE 00873000
  1002. EX R14,CLCPRINT PRINTER ?? 00874000
  1003. BE DEVIC YES - 00875000
  1004. SPACE 00876000
  1005. LA R5,CSVRDR TYPE MASK FOR READER 00877000
  1006. EX R14,CLCREAD READER ?? 00878000
  1007. BE DEVIC 00879000
  1008. C R3,X40FFS TRANSFER CHAIN 1? HRC022DK 00879300
  1009. BE TRCHRDR1 YES, DEFAULT TO READER HRC022DK 00879600
  1010. C R3,FFS TEST FOR 'SYSTEM' OR 1ST USERID ? 00880000
  1011. BE MSG003E YES -- INVALID OPTION 00881000
  1012. B MSG006E INVALID DEVICE TYPE 00882000
  1013. SPACE 00883000
  1014. TYPALL C R3,XRIGHT24 TRANSFER CHAIN 2? HRC022DK 00883100
  1015. BE MSG006E YES, INVALID DEVICE TYPE HRC022DK 00883200
  1016. C R3,X40FFS TRANSFER CHAIN 1? HRC022DK 00883300
  1017. BNE DEVIC NO, NORMAL CALL HRC022DK 00883400
  1018. TRCHRDR1 MVC BUFNXT-BUFFER(8,R9),SAVEWRK8 RESTORE POINTER HRC022DK 00883500
  1019. TRCHRDR2 LA R5,CSVRDR SETUP DEFAULT READER HRC022DK 00883600
  1020. DEVIC EQU * HERE TO SET UP FILE POINTER 00884000
  1021. SPACE 00885000
  1022. GT05 L R6,FFS SET 1ST TIME SWITCH FOR GETCHAIN 00886000
  1023. BAL R3,GETCHAIN GET NEXT ORDERED CHAIN @V200930 00887000
  1024. SPACE 00888000
  1025. GT06 CR R2,R2 SET CC = ZERO 00889000
  1026. BR R4 RETURN TO CALLER 00890000
  1027. SPACE 3 00891000
  1028. SPACE 3 00892000
  1029. CLCALL CLC 0(0,R1),=C'ALL ' COMPARE FOR ALL 00893000
  1030. CLCRDR CLC 0(0,R1),=C'RDR ' COMPARE FOR RDR 00894000
  1031. CLCPCH CLC 0(0,R1),=C'PCH ' COMPARE FOR PCH 00895000
  1032. CLCPRT CLC 0(0,R1),=C'PRT ' COMPARE FOR PRT 00896000
  1033. CLCPRINT CLC 0(0,R1),=C'PRINTER ' COMPARE FOR PRINTER 00897000
  1034. CLCPUN CLC 0(0,R1),=C'PUNCH ' COMPARE FOR PUNCH 00898000
  1035. CLCREAD CLC 0(0,R1),=C'READER ' COMPARE FOR READER 00899000
  1036. CLCCLASS CLC 0(0,R1),=C'CLASS ' COMPARE FOR CLASS 00900000
  1037. CLCFROM CLC 0(0,R1),=C'FROM ' COMPARE FOR FROM @V200930 00901000
  1038. CLCTO CLC 0(0,R1),=C'TO ' COMPARE FOR TO 00902000
  1039. EJECT 00903000
  1040. *. 00904000
  1041. * OPERATION OF GETCLASS - 00905000
  1042. * 00906000
  1043. * 1. CALL DMKSCNFD TO LOCATE THE DESIRED CLASS 00907000
  1044. * 2. VERIFY THAT ONLY ONE CLASS IS GIVEN, AND TRT THE CLASS 00908000
  1045. * AGAINST A TABLE OF VALID CLASSES TO VERIFY ITS VALIDITY; 00909000
  1046. * THE FUNCTION TABLE IS SET TO STORE THE VALID CLASS IN GPR2 00910000
  1047. * IF CLASS IS MISSING OR INVALID, EXIT GIVING MSG028E. 00911000
  1048. * 3. IF ENTRY IS GTCLASSB, STORE CLASS IN SAVEWRK8, 00912000
  1049. * OTHERWISE STORE THE CLASS IN SAVEWRK1 AND EXIT. 00913000
  1050. * 4. NOTE THAT GETCLASS IS A 2ND LEVEL ROUTINE; LINKAGE IS VIA 00914000
  1051. * GPR3 00915000
  1052. *. 00916000
  1053. SPACE 3 00917000
  1054. GTCLASSB MVI SAVEWRK5+2,X'FF' INDICATE CLASS NOT SPOOLID 00918000
  1055. GETCLASS EQU * HERE TO LOCATE AND VERIFY CLASS 00919000
  1056. SPACE 00920000
  1057. GCL01 CALL DMKSCNFD 00921000
  1058. BNZ MSG028E CLASS MISSING - EXIT 00922000
  1059. SPACE 00923000
  1060. GCL02 C R0,F1 MUST BE ONLY ON CLASS COUNT=1 00924000
  1061. BNE MSG028E NO-- 00925000
  1062. CLI 0(R1),C'A' CLASS LOWER THAN A 00926000
  1063. BL MSG028E YES - INVALID CLASS 00927000
  1064. ST R2,TEMPR2 SAVE GPR2 00928000
  1065. TRT 0(1,R1),CLTABLE CLASS VALID ?? 00929000
  1066. BH GCL03 VALID 00930000
  1067. B MSG028E NO - INVALID CLASS 00931000
  1068. SPACE 00932000
  1069. GCL03 CLI SAVEWRK5+2,X'FF' STORE CLASS IN SAVEWRK5+2 ?? 00933000
  1070. BNE GCL04 NO STORE IN SAVEWRK1 00934000
  1071. STC R2,SAVEWRK5+2 SAVE CLASS CHARACTER 00935000
  1072. B GCL05 00936000
  1073. SPACE 00937000
  1074. GCL04 EQU * 00938000
  1075. STC R2,SAVEWRK1 SAVE CLASS 00939000
  1076. GCL05 CR R1,R1 CC = ZERO 00940000
  1077. L R2,TEMPR2 RESTORE GPR2 00941000
  1078. BR R3 RETURN TO CALLER 00942000
  1079. SPACE 3 00943000
  1080. ORG *-193 00944000
  1081. CLTABLE EQU * 00945000
  1082. ORG 00946000
  1083. DC C'ABCDEFGHI' 00947000
  1084. DC XL7'00' 00948000
  1085. DC C'JKLMNOPQR' 00949000
  1086. DC XL8'00' 00950000
  1087. DC C'STUVWXYZ' 00951000
  1088. DC XL6'00' 00952000
  1089. DC C'0123456789' 00953000
  1090. DC XL6'00' 00954000
  1091. DS 0H 00955000
  1092. SPACE 00956000
  1093. EJECT 00957000
  1094. *. 00958000
  1095. * 00959000
  1096. * OPERATION OF GETFILE - 00960000
  1097. * 00961000
  1098. * 1. UPON ENTRY, GPR7 = ADDRESS OF A POINTER TO THE NEXT SFBLOK 00962000
  1099. * TO TEST 00963000
  1100. * 2. LOAD GPR7 WITH POINTER TO NEXT BLOK; IF ZERO, EXIT 00964000
  1101. * 3. IF SAVEWRK2,3 EQUALS ZERO OR SFBUSER, GO TO STEP 4; 00965000
  1102. * OTHERWISE GO TO STEP 6 00966000
  1103. * 4. IF SAVEWRK1(1) EQUALS ZERO OR SFBCLAS,GO TO STEP 5; 00967000
  1104. * OTHERWISE GO TO STEP 6 00968000
  1105. * 5. IF SAVEWRK1+2(2) EQUALS ZERO OR SFBFILID, EXIT 00969000
  1106. * 5.5 IF R15(SWITCH) = X2048BND HRC022DK 00970690
  1107. * COUNT THE NUMBER OF SPOOL SPOOL FILE BLOCKS HRC022DK 00971280
  1108. * 6. IF NO MATCH, GO TO STEP 2 00972000
  1109. *. 00973000
  1110. SPACE 00974000
  1111. GETFILE EQU * HERE TO LOCATE THE REQUESTED FILE 00975000
  1112. * OR TO GET A COUNT OF THE NUMBER OF FILES TO 00976000
  1113. * BE TRANSFERRED,R10 FF IS SWITCH 00977500
  1114. SPACE 00978000
  1115. GF01 EQU * GPR7 = POINTER TO NEXT SFBLOK 00979000
  1116. GF02 LR R6,R7 SFBLOK PRESENT ?? 00980000
  1117. L R7,0(R7) 00981000
  1118. LTR R7,R7 00982000
  1119. BCR 8,R4 NO -RETURN TO CALLER WITH GPR7 ZERO 00983000
  1120. SPACE 00984000
  1121. GF03 TM SFBFLAG,SFBINUSE FILE IN USE ?? 00985000
  1122. BO GF02 GET NEXT FILE 00986000
  1123. CLI SAVEWRK2,X'40' USERID PRESENT ?? 00987000
  1124. BNH GF04 NO -- USE ALL FILES 00988000
  1125. CLC SAVEWRK2(8),SFBUSER USERID EQUALS ?? 00989000
  1126. BNE GF02 NO 00990000
  1127. SPACE 00991000
  1128. GF04 CLI SAVEWRK1,X'00' SEARCH BY CLASS ?? 00992000
  1129. BE GF05 NO 00993000
  1130. CLC SAVEWRK1(1),SFBCLAS CLASS EQUALS ?? 00994000
  1131. BNE GF02 NO - 00995000
  1132. SPACE 00996000
  1133. GF05 CLC SAVEWRK1+2(2),ZEROES SEARCH BY SPOOLID 00997000
  1134. BE TOTAL NO @VA06206 00998000
  1135. CLC SAVEWRK1+2(2),SFBFILID SPOOLID EQUAL ?? 00999000
  1136. BNE GF02 NO - 01000000
  1137. TOTAL EQU * @VA06206 01001000
  1138. C R15,X2048BND ARE WE COUNTING? (FROM TR05A) HRC022DK 01002690
  1139. BNE GF06 NOT TODAY @VA07375 01003000
  1140. LH R14,SAVEWRK7 GET THE COUNT @VA06206 01004000
  1141. LA R14,1(R14) UPDATE BY ONE @VA06206 01005000
  1142. STH R14,SAVEWRK7 STORE IT AWAY @VA06206 01006000
  1143. B GF02 KEEP ON TRUCKING @VA06206 01007000
  1144. SPACE 01009000
  1145. GF06 EQU * 01010000
  1146. BR R4 RETURN TO CALLER 01011000
  1147. EJECT 01012000
  1148. *. 01013000
  1149. * OPERATION OF GETID - 01014000
  1150. * 01015000
  1151. * 1. CALL DMKSCNFD TO LOCATE THE SPOOLID; ACCEPTABLE ID'S ARE - 01016000
  1152. * - A SPOOLID NUMBER 01017000
  1153. * - THE KEYWORD 'CLASS' FOLLOWED BY A VALID SPOOL CLASS 01018000
  1154. * - THE KEYWORD 'ALL' 01019000
  1155. * 2. SET SAVEWRK1, SAVEWRK1+2(2) = 0 01020000
  1156. * 3. IF OPTION = 'ALL', EXIT TO CALLER 01021000
  1157. * 4. IF OPTION = 'CL', CALL GETCLASS AND SAVE THE CLASS 01022000
  1158. * RETURNED IN GPR2 IN SAVEWRK1; THEN EXIT 01023000
  1159. * 5. IF OPTION = A SPOOLID NUMBER, CONVERT TO BINARY AND STORE 01024000
  1160. * IN SAVEWRK1+2(2) 01025000
  1161. * 6. RETURN TO CALLER. 01026000
  1162. *. 01027000
  1163. SPACE 3 01028000
  1164. GETID EQU * HERE TO LOCATE SPOOLID 01029000
  1165. SPACE 01030000
  1166. GI01 MVI SAVEWRK1,X'00' SET TO ALL 01031000
  1167. XC SAVEWRK1+2(2),SAVEWRK1+2 01032000
  1168. SPACE 01033000
  1169. GI02 CALL DMKSCNFD LOCATE SPOOLID 01034000
  1170. STM R0,R1,SAVEWRK6 SAVE COUNT AND ADDRESS 01035000
  1171. BCR 7,R4 NO MORE FILID, RETURN WITH CC 01036000
  1172. * NON-ZERO 01037000
  1173. SPACE 01038000
  1174. LR R14,R0 COUNT 01039000
  1175. BCTR R14,0 -1 01040000
  1176. C R0,F2 MIN FOR CLASS 01041000
  1177. BL GI05 NO - MUST BE FILE ID 01042000
  1178. BE GI04 YES - MIN FOR CLASS 01043000
  1179. SPACE 01044000
  1180. GI03 EX R14,CLCALL IS IT ALL ?? 01045000
  1181. BE GI06 YES GO TO RETURN 01046000
  1182. SPACE 01047000
  1183. GI04 EX R14,CLCCLASS IS IT CLASS ?? 01048000
  1184. BNE GI05 NO 01049000
  1185. BAL R3,GETCLASS GET CLASS AND VERIFY @V200930 01050000
  1186. B GI06 GO RETURN 01051000
  1187. SPACE 01052000
  1188. GI05 EQU * OPTION MUST BE FILED 01053000
  1189. C R0,F4 LENGTH GREATER THAN 4 ? 01054000
  1190. BH GI05A YES -- INVALID SPOOLID 01055000
  1191. CALL DMKCVTDB CONVERT TO BINARY 01056000
  1192. BZ VALID VALID SPOOLID 01057000
  1193. GI05A LM R0,R1,SAVEWRK6 RESTORE COUNT AND ADDRESS 01058000
  1194. C R3,FFS TEST FOR 'SYSTEM' OR 1ST USERID ? 01059000
  1195. BE MSG003E YES -- DMKCSV003E 01060000
  1196. B MSG008E INVALID SPOOLID 01061000
  1197. VALID STH R1,SAVEWRK1+2 SAVE BINARY VALUE (SPOOLID) 01062000
  1198. LTR R1,R1 SPOOLID ZERO ?? 01063000
  1199. BZ GI05A YES -- INVALID 01064000
  1200. SPACE 01065000
  1201. GI06 CR R12,R12 SET CC ZERO 01066000
  1202. BR R4 RETURN TO CALLER 01067000
  1203. EJECT 01068000
  1204. *. 01069000
  1205. * OPERATION OF GETCHAIN - 01070000
  1206. * 01071000
  1207. * 1. IF GPR5 = 0, SET GPR6 = 0 AND EXIT; 01072000
  1208. * 2. IF GPR6 = FFS, GO TO STEP 6; 01073000
  1209. * 3. IF GPR5 HAS CSVRDR BIT ON,REMOVE BIT, GO TO STEP 7; 01074000
  1210. * 4. IF GPR5 HAS TYPPRT BIT ON,REMOVE BIT, GO TO STEP 8; 01075000
  1211. * 5. REMOVE TYPPUN BIT IN GPR5, SET GPR6 TO ZERO, EXIT 01076000
  1212. * 6. IF GPR5 HAS CSVRDR BIT ON, LOAD GPR6 WITH ARSPRD, EXIT; 01077000
  1213. * 7. IF GPR5 HAS TYPPRT BIT ON, LOAD GPR6 WITH ARSPPR, EXIT; 01078000
  1214. * 8. IF GPR5 HAS TYPPUN BIT ON, LOAD GPR6 WITH ARSPPU,EXIT; 01079000
  1215. * 9. SET GPR6 = 0, EXIT 01080000
  1216. *. 01081000
  1217. SPACE 3 01082000
  1218. GETCHAIN EQU * HERE TO GET NEXT FILE CHAIN ANCHOR POINTER 01083000
  1219. SPACE 01084000
  1220. GC01 LTR R5,R5 FILE TYPE ZERO ?? 01085000
  1221. BNZ GC02 NO-- 01086000
  1222. SR R6,R6 YES - ZERO GPR6 01087000
  1223. BR R3 RETURN TO CALLER 01088000
  1224. SPACE 01089000
  1225. GC02 C R6,FFS 1ST TIME SWITCH ON ?? 01090000
  1226. BE GC06 YES - DO NOT RESET ANY BITS, JUST 01091000
  1227. * LOAD GPR6 01092000
  1228. SPACE 01093000
  1229. GC03 LR R6,R5 SAVE R5 FOR CHANGE COMPARE 01094000
  1230. N R5,=A(255-CSVRDR) REMOVE READER BIT 01095000
  1231. CR R6,R5 WAS IT ON ?? 01096000
  1232. BNE GC07 NO 01097000
  1233. SPACE 01098000
  1234. GC04 N R5,=A(255-TYPPRT) REMOVE PRINTER BIT 01099000
  1235. CR R6,R5 WAS IT ON ?? 01100000
  1236. BNE GC08 NO 01101000
  1237. SPACE 01102000
  1238. GC05 SR R5,R5 REMOVE PUNCH BIT 01103000
  1239. SR R6,R6 SET GPR6 TO ZERO 01104000
  1240. BR R3 RETURN TO CALLER - END OF CHAIN 01105000
  1241. SPACE 01106000
  1242. GC06 L R7,ARSPRD LOAD READER FILE CHAIN POINTER 01107000
  1243. * ANCHOR 01108000
  1244. EX R5,TMRDR READER BIT ON ?? 01109000
  1245. BCR 7,R3 YES - RETURN TO CALLER 01110000
  1246. SPACE 01111000
  1247. GC07 L R7,ARSPPR LOAD PRINTER FILE CHAIN POINTER 01112000
  1248. * ANCHOR 01113000
  1249. EX R5,TMPRT PRINTER BIT ON ?? 01114000
  1250. BCR 7,R3 YES - RETURN TO CALLER 01115000
  1251. SPACE 01116000
  1252. GC08 L R7,ARSPPU LOAD PUNCH FILE CHAIN POINTER ANCHOR 01117000
  1253. EX R5,TMPUN PUNCH BIT ON ?? 01118000
  1254. BCR 7,R3 YES - RETURN TO CALLER 01119000
  1255. GC09 SLR R6,R6 SET GPR6 = ZERO - ALL DONE @VA01375 01120000
  1256. SLR R7,R7 .. @VA01375 01121000
  1257. BR R3 RETURN TO CALLER @VA01375 01122000
  1258. EJECT 01123000
  1259. *. 01124000
  1260. * OPERATOR OF SETPEND - 01125000
  1261. * 01126000
  1262. * 1. IF SPOOL FILE (SFBLOK) IS IN USER HOLD STATUS; 01127000
  1263. * RETURN TO CALLER. 01128000
  1264. * 2. LOCATE AN AVAILABLE VIRTUAL READER, CONSTRUCT AN 01129000
  1265. * IOBLOK CONTAINING A DEVICE END INTERRUPT AND STACK IT 01130000
  1266. * FOR THE OPPROPRIATE VIRTUAL DEVICE VIA CALL TO 01131000
  1267. * DMKSTKIO. 01132000
  1268. *. 01133000
  1269. SPACE 3 01134000
  1270. SETPEND EQU * HERE TO POST PENDIN INTERRUPT @VM01016 01135000
  1271. SPACE 01136000
  1272. USING VCHBLOK,R6 @VM01016 01137000
  1273. USING VCUBLOK,R9 @VM01016 01138000
  1274. USING IOBLOK,R10 @VM01016 01139000
  1275. USING VDEVBLOK,R8 @VA10097 01139500
  1276. SPACE 01141000
  1277. ST R11,TEMPR3 SAVE CALLERS VMBLOK POINTER @VA04139 01142000
  1278. CLC SFBUSER,VMUSER ONLY THE OWNER GETS THE INT. @VA04139 01143000
  1279. BE SAMEUSER BRANCH IF SAME USER, ALL OK! @VA04139 01144000
  1280. LA R0,8 SET UP TO ... @VA04139 01145000
  1281. LA R1,SFBUSER FIND THE VMBLOK OF... @VA04139 01146000
  1282. CALL DMKSCNAU THE USER TO GET THE INT. @VA04139 01147000
  1283. BNZR R4 IF NOT LOGED ON RETURN @VA04139 01148000
  1284. ST R11,TEMPR3 RESAVE CALLERS VMBLOK POINTER @VA04139 01149000
  1285. CHARGE SWITCH,1 SWITCH TIMING TO RECEIVER @V407510 01150000
  1286. SAMEUSER STM R4,R5,TEMPR4 SAVE CALLERS REGS @VA04139 01151000
  1287. STM R8,R10,TEMPR8 SAVE CALLERS R8 THUR R10 HRC022DK 01151500
  1288. SR R1,R1 CLEAR CHANNEL TABLE INDEX @VM01016 01152000
  1289. LA R4,2 GET GENERAL INDEX INCREMENT @VM01016 01153000
  1290. LA R5,30 GET GENERAL COMPARAND FOR BXLE @VM01016 01154000
  1291. SPACE 01155000
  1292. NEXTCH LH R6,VMCHTBL(R1) GET INDEX TO NEXT VIRTUAL CHANNEL@VM01016 01156000
  1293. LTR R6,R6 IS THERE ONE AT THIS ADDRESS @VM01016 01157000
  1294. BM CHINDEX NO -- @VM01016 01158000
  1295. A R6,VMCHSTRT POINT TO VCHBLOK @VM01016 01159000
  1296. SR R2,R2 CLEAR CU TABLE INDEX @VM01016 01160000
  1297. NEXTCU LH R9,VCHCUTBL(R2) GET INDEX TO VIRTUAL CU BLOK @VM01016 01161000
  1298. LTR R9,R9 IS THERE ONE AT THIS ADDRESS ? @VM01016 01162000
  1299. BM CUINDEX NO -- @VM01016 01163000
  1300. A R9,VMCUSTRT POINT TO VCUBLOK @VM01016 01164000
  1301. SR R3,R3 CLEAR DEVICE BLOK TABLE INDEX @VM01016 01165000
  1302. NEXTDEV LH R8,VCUDVTBL(R3) GET INDEX TO DEVICE BLOK @VM01016 01166000
  1303. LTR R8,R8 IS THERE ONE AT THIS ADDRESS @VM01016 01167000
  1304. BM DEVINDEX NO -- @VM01016 01168000
  1305. A R8,VMDVSTRT POINT TO DEVICE BLOK @VM01016 01169000
  1306. SPACE 01170000
  1307. CLI VDEVTYPC,CLASURI INPUT DEVICE @VM01016 01171000
  1308. BNE DEVINDEX NO - @VM01016 01172000
  1309. TM VDEVTYPE,TYPRDR IS IT THE RIGHT TYPE ?? @VM01016 01173000
  1310. BZ DEVINDEX NO -- @VM01016 01174000
  1311. TM VDEVSTAT,X'FF' ANY STATUS PENDING ?? @VM01016 01175000
  1312. BNZ DEVINDEX YES, CHECK NEXT DEVICE @VM01016 01176000
  1313. CLI VDEVCLAS,C'*' ALL CLASS READER ? @VM01016 01177000
  1314. BE TSTBUSY YES, TEST FOR ACTIVE DEVICE @VM01016 01178000
  1315. CLC VDEVCLAS(1),SFBCLAS FILE CLASS SAME AS DEVICE ? @VM01016 01179000
  1316. BNE DEVINDEX NO - @VM01016 01180000
  1317. TSTBUSY ICM R14,B'1111',VDEVSPL IS THE DEVICE BUSY ?? @VM01016 01181000
  1318. BZ RDRPEND NO -- FINALLY FOUND A DEVICE @VM01016 01182000
  1319. SPACE 01183000
  1320. DEVINDEX BXLE R3,R4,NEXTDEV INDEX TO NEXT DEVICE ON CONTROL @VM01016 01184000
  1321. * UNIT 01185000
  1322. CUINDEX BXLE R2,R4,NEXTCU INDEX TO NEXT CONTROL UNIT ON @VM01016 01186000
  1323. * CHANNEL 01187000
  1324. CHINDEX BXLE R1,R4,NEXTCH INDEX TO NEXT CHANNEL ON MACHINE @VM01016 01188000
  1325. LM R3,R5,TEMPR3 GET CALLERS R11(IN R3), R4 & R5 @VA04139 01189000
  1326. SR R8,R8 RESET SWITCH AT THIS TIME IF @VA09755 01189100
  1327. * SET DUE TO NOT FINDING DEVICE 01189200
  1328. B INTEXIT RETURN @VA04139 01190000
  1329. SPACE 01191000
  1330. RDRPEND EQU * HERE TO QUEUE DEVICE END @VM01016 01192000
  1331. LH R2,VDEVADD GET FULL ADDRESS OF DEVICE @VM01016 01193000
  1332. LH R5,VCUADD .. @VM01016 01194000
  1333. OR R2,R5 .. @VM01016 01195000
  1334. AH R2,VCHADD .. @VM01016 01196000
  1335. LM R3,R5,TEMPR3 GET CALLERS R11(IN R3), R4 & R5 @VA04139 01197000
  1336. LA R0,IOBSIZE BUILD IOBLOK @VM01016 01198000
  1337. CALL DMKFREE .. @VM01016 01199000
  1338. LR R10,R1 ADDRESS OF IOBLOK @VM01016 01200000
  1339. XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR BLOK @VM01016 01201000
  1340. ST R10,IOBLINK INDICATE ORIGINAL COPY @VM01016 01202000
  1341. MVI IOBCSW+4,DE FAKE DEVICE END CSW @VM01016 01203000
  1342. ST R11,IOBUSER MOVE USER ADDRESS OF VMBLOK @VM01016 01204000
  1343. MVC IOBIRA,=A(DMKVIOIN) RETURN ADDRESS @VM01016 01205000
  1344. STH R2,IOBVADD PUT ADDRESS IN IOBLOK @VM01016 01206000
  1345. OI VDEVSTAT,VDEVPEND SET PENDING FLAG @VM01016 01207000
  1346. MVC VDEVCSW(8),IOBCSW MOVE IN DEVICE END CSW @VM01016 01208000
  1347. CALL DMKSTKIO GO STACK IO @VM01016 01209000
  1348. INTEXIT EQU * HRC022DK 01210190
  1349. LM R8,R10,TEMPR8 RESTORE CALLERS R8-R10 HRC022DK 01210380
  1350. CLR R11,R3 ORIGINAL CALLER? HRC022DK 01210570
  1351. BER R4 YES- RETURN @VA04139 01211000
  1352. CHARGE SWITCH,3 SWITCH BACK TO CALLER @V407510 01212000
  1353. BR R4 RETURN TO CALLER @VM01016 01213000
  1354. DROP R6 @VM01016 01214000
  1355. DROP R9 @VM01016 01215000
  1356. DROP R10 @VM01016 01216000
  1357. DROP R8 @VA10097 01216500
  1358. SPACE 3 01217000
  1359. ********************************** 01218000
  1360. * 01219000
  1361. * ERROR EXITS FROM DMKCSV 01220000
  1362. * 01221000
  1363. ********************************** 01222000
  1364. SPACE 2 01223000
  1365. MSG003E EQU * HERE IF INVALID OPTION FOR THIS @VA01375 01224000
  1366. * COMMAND 01225000
  1367. LA R2,003 ERROR MSG DMKCSV003E @VA01733 01226000
  1368. B EXIT8 EXIT TO ERROR MODULE 01227000
  1369. SPACE 2 01228000
  1370. MSG006E EQU * HERE IF DEVICE TYPE IS INVALID 01229000
  1371. LA R2,006 ERROR MSG DMKCSV006E 01230000
  1372. LM R0,R1,SAVEWRK6 COUNT AND ADDRESS OF INVALID TYPE 01231000
  1373. B EXIT8 EXIT TO ERROR MODULE 01232000
  1374. SPACE 2 01233000
  1375. MSG007E EQU * HERE IF USERID IS INVALID 01234000
  1376. LA R2,007 ERROR MSG DMKCSV007E 01235000
  1377. B EXIT8 01236000
  1378. SPACE 2 01237000
  1379. MSG008E EQU * HERE IF SPOOLID IS INVALID 01238000
  1380. LA R2,008 ERROR MSG DMKCSV008E 01239000
  1381. LM R0,R1,SAVEWRK6 COUNT AND ADDRESS OF SPOOLID 01240000
  1382. B EXIT8 EXIT TO ERROR MODULE 01241000
  1383. SPACE 2 01242000
  1384. MSG020E EQU * HERE IF USERID IS MISSING OR INVALID 01243000
  1385. LA R2,020 ERROR MSG DMKCSV020E 01244000
  1386. B EXIT8R1 EXIT TO ERROR MODULE 01245000
  1387. SPACE 2 01246000
  1388. MSG026E EQU * HERE IF OPERAND MISSING OR INVALID 01247000
  1389. LA R2,026 ERROR MSG DMKCSV026E 01248000
  1390. B EXIT8R1 EXIT TO ERROR MODULE 01249000
  1391. SPACE 2 01250000
  1392. MSG027E EQU * HERE IF SPOOLID MISSING OR INVALID 01251000
  1393. LA R2,027 ERROR MSG DMKCSV027E 01252000
  1394. B EXIT8R1 01253000
  1395. SPACE 2 01254000
  1396. MSG028E EQU * HERE IF CLASS IS MISSING OR INVALID 01255000
  1397. LA R2,028 ERROR MSG DMKCSV028E 01256000
  1398. B EXIT8R1 01257000
  1399. SPACE 01258000
  1400. MSG029E EQU * HERE IF FNAME FTYPE MISSING OR INVALID 01259000
  1401. LA R2,029 ERROR MSG DMKCSV029E 01260000
  1402. B EXIT8R1 EXIT TO ERROR MODULE 01261000
  1403. SPACE 2 01262000
  1404. MSG030E EQU * HERE IF COPIES IS MISSING OR INVALID 01263000
  1405. LA R2,030 ERROR MSG DMKCSV030E 01264000
  1406. B EXIT8R1 EXIT TO ERROR MODULE 01265000
  1407. SPACE 2 01266000
  1408. MSG035E EQU * HERE IF DEVICE TYPE MISSING OR INVALID 01267000
  1409. LA R2,035 ERROR MSG DMKCSV035E 01268000
  1410. B EXIT8R1 EXIT TO ERROR MODULE 01269000
  1411. SPACE 2 01270000
  1412. MSG042E EQU * HERE IF SPOOL FILE NOT FOUND 01271000
  1413. LH R1,SAVEWRK1+2 GET SPOOLID OF FILE 01272000
  1414. BAL R2,CVTBD AND CONVERT 01273000
  1415. LA R2,042 ERROR MSG DMKCSV032E 01274000
  1416. B EXIT8R0 01275000
  1417. SPACE 2 01276000
  1418. MSG053E EQU * HERE IF USERID NOT IN CP DIRECTORY 01277000
  1419. LA R2,053 ERROR MSG DMKCSV053E 01278000
  1420. B EXIT8 01279000
  1421. SPACE 2 01280000
  1422. CVTBD EQU * HERE TO CONVERT BINARY TO DECIMAL 01281000
  1423. CALL DMKCVTBD 01282000
  1424. BR R2 01283000
  1425. SPACE 01284000
  1426. SPACE 2 01285000
  1427. EJECT 01286000
  1428. **************************************** 01287000
  1429. * 01288000
  1430. * FINAL EXIT BACK TO DMKCFM 01289000
  1431. * 01290000
  1432. **************************************** 01291000
  1433. SPACE 3 01292000
  1434. CSVEXIT EQU * HERE FOR NORMAL EXIT FROM DMKCSV 01293000
  1435. SR R2,R2 CLEAR ERROR REGISTER 01294000
  1436. B EXIT1 NOW EXIT 01295000
  1437. SPACE 2 01296000
  1438. EXIT8R1 SR R1,R1 01297000
  1439. EXIT8R0 SR R0,R0 01298000
  1440. EXIT8 ICM R0,14,ID+3 MOVE IN MODULE ID 01299000
  1441. EXIT1 LR R3,R0 SAVE GPR 0-2 01300000
  1442. LR R4,R1 .. 01301000
  1443. LR R5,R2 .. @VA09563 01302100
  1444. TM VMMLVL2,VMMIMSG NO - SUPPRESS INFO MSGS? @V2A3663 01304000
  1445. BZ NOMSG YES @V2A3663 01305000
  1446. REGXIT EQU * NO @V2A3663 01306000
  1447. LH R2,SAVEWRK5 GET FILE COUNT @VA10097 01306100
  1448. LTR R2,R2 PROCESSING STARTED? @VA10097 01306130
  1449. BM NOMSG NO; DON'T SEND MESSAGE @VA10097 01306160
  1450. LA R0,TRANSIZE NR OF DWDS IN MESSAGE BUFFER @VA10097 01306190
  1451. CALL DMKFREE GET THE MESSAGE BUFFER @VA10097 01306220
  1452. LR R8,R1 WE DON'T NEED R8 ANYMORE @VA10097 01306250
  1453. USING CNTMSG,R8 THIS ONE NOW, PLEASE @VA10097 01306280
  1454. MVI 0(R8),C' ' THERE'S THE FIRST BLANK @VA10097 01306310
  1455. MVC 1(CNTMSGL-1,R8),0(R8) CLEAR 'EM ALL @VA10097 01306340
  1456. LH R1,SAVEWRK5 GET FILE COUNT 01307000
  1457. MVC MSGCNT(4),=C' NO ' SET MESSAGE 01310000
  1458. LTR R1,R2 DO WE WANT A FILE MESSAGE ? @VA10097 01310101
  1459. BZ NOCNT NO FILE MSG 01311000
  1460. CALL DMKCVTBD CONVERT COUNT FOR MSG 01312000
  1461. STCM R1,15,MSGCNT STORE COUNT IN MESSAGE 01313000
  1462. NOCNT MVC MSGFILE(5),=C'FILES' .. 01314000
  1463. C R1,=C'0001' ONE FILE ?? 01315000
  1464. BNE *+8 NO 01316000
  1465. MVI MSGFILE+4,C' ' CHANGE FILES TO FILE 01317000
  1466. MVC MSGCMD+3(8),BLANKS BLANK COMMAND NAME AREA @VA04869 01318000
  1467. MVC MSGCMD(8),VMCOMND MOVE IN COMMAND NAME 01319000
  1468. TRYPURGE CLI MSGCMD,C'P' PURGE COMMAND? @VA04869 01320000
  1469. BNE TRYORDER NO, CHECK FURTHER @V60B9BA 01321000
  1470. MVI MSGCMD+5,C'D' CHANGE PURGE TO PURGED @VA04869 01322000
  1471. B MSGLEN GO PREPARE TO PUT OUT MSG @VA04869 01323000
  1472. TRYORDER CLI MSGCMD,C'O' ORDER COMMAND? @VA04869 01324000
  1473. BNE XFERRED NO, MUST BE TRANSFER REQUEST @VA04869 01325000
  1474. MVC MSGCMD+5(2),=C'ED' CHANGE ORDER TO ORDERED @VA04869 01326000
  1475. B MSGLEN PREPARE TO PUT OUT MSG @VA04869 01327000
  1476. XFERRED MVC MSGCMD+8(3),=C'RED' CHANGE TO TRANSFERRED @VA04869 01328000
  1477. MSGLEN LA R0,CNTMSGL SET UP MSG LENGTH @VA04869 01329000
  1478. LR R1,R8 GET THE MESSAGE ADDRESS @VA10097 01330001
  1479. LR R8,R3 WE HAVE TO SAVE R3 NOW. @VA10097 01330002
  1480. LA R3,TRANSIZE NR OF DW'S TO RETURN @VA10097 01330003
  1481. LA R2,NORET+DFRET TELL QCNWT TO RELEASE BUFF @VA10097 01330004
  1482. CALL DMKQCNWT SEND MSG AND RELEASE MSG BUF @VA10097 01330005
  1483. LR R3,R8 PUT IT BACK LIKE WE FOUND IT @VA10097 01330006
  1484. NOMSG EQU * 01332000
  1485. L R1,SAVEWRK4 ADDRESS OF 24 BYTE AREA 01333000
  1486. LTR R1,R1 ADDRESS PRESENT ?? 01334000
  1487. BZ EXIT2 NO --- 01335000
  1488. LA R0,3 LENGTH OF AREA 01336000
  1489. CALL DMKFRET RETURN AREA TO FREE STORAGE 01337000
  1490. EXIT2 LR R0,R3 RESTORE REG 0-2 01338000
  1491. LR R1,R4 .. 01339000
  1492. LR R2,R5 .. 01340000
  1493. LTR R2,R2 ERROR CODE PRESENT ?? 01341000
  1494. BNZ ERREXIT YES -- 01342000
  1495. EXIT - EXIT -- NO ERROR 01343000
  1496. SPACE 01344000
  1497. ERREXIT EQU * HERE TO CALL ERROR MESSAGE MODULE 01345000
  1498. CALL DMKERMSG EXIT TO MESSAGE MODULE 01346000
  1499. SPACE 01347000
  1500. * MODULE DMKERMSG WILL GIVE SVC16 AND RETURN CONTROL TO DMKCFM 01348000
  1501. EJECT 01349000
  1502. **************************************** 01350000
  1503. * 01351000
  1504. * MESSAGES AND CONSTANTS 01352000
  1505. * 01353000
  1506. **************************************** 01354000
  1507. SPACE 2 01355000
  1508. LTORG 01356000
  1509. EJECT 01357000
  1510. TRANMSG DSECT , @VA10097 01357100
  1511. TRMSGF DC C'XXX' RDR/PRT/PUN HRC022DK 01357115
  1512. DC C' ' @VA10097 01357120
  1513. TRANMSGT DC C'FILE ' SPOOLID @VA10097 01357130
  1514. TRMSGID DC C' ' SPOOLID @VA10097 01357140
  1515. DC C' TRANSFERRED' @VA10097 01357150
  1516. TRMCONST DC C' FROM ' @VA10097 01357160
  1517. TRMSGUR DC CL8' ' @VA10097 01357170
  1518. TRANL EQU *-TRANMSG @VA10097 01357180
  1519. DC C' ' @VA10097 01357190
  1520. TRMSGT DC C'XXX' RDR/PRT/PUN @VA10097 01357200
  1521. TRANLT EQU *-TRANMSGT LN OF MSG TO SEND @VA10097 01357210
  1522. DS 0H HRC022DK 01357221
  1523. SPACE , HRC022DK 01357222
  1524. TRBADMSG DC C'FILE ' HRC022DK 01357223
  1525. TRBADID DC C'NNNN' HRC022DK 01357224
  1526. DC C' CANNOT BE TRANSFERRED TO ' HRC022DK 01357225
  1527. TRBADC DC C'XXX' HRC022DK 01357226
  1528. TRBADL EQU *-TRBADMSG HRC022DK 01357227
  1529. DS 0H HRC022DK 01357228
  1530. TRANCH1 DS A SAVE CHAIN 1 ADR HRC022DK 01357229
  1531. TRANSIZE EQU (*-TRANMSG+7)/8 DW LN FOR FREE/FRET @VA10097 01357230
  1532. TRBADSIZ EQU (*-TRBADMSG+7)/8 DW LN FOR FREE/FRET HRC022DK 01357235
  1533. SPACE 1 01357240
  1534. CNTMSG DSECT , NUMBER OF FILES PROCESSED MESSAGE@VA10097 01357250
  1535. MSGCNT DC CL5' ' PLACE FOR COUNT OR NO @VA10097 01357260
  1536. MSGFILE DC CL6' ' FOR FILES OR FILE @VA10097 01357270
  1537. MSGCMD DC CL11' ' PLACE FOR COMMAND @VA10097 01357280
  1538. CNTMSGL EQU *-CNTMSG @VA10097 01357290
  1539. CSVRDR EQU X'20' 01358000
  1540. PSA , @V306638 01359000
  1541. COPY CONBUF @V306638 01360000
  1542. COPY DEVTYPES @V306638 01361000
  1543. COPY EQU @V306638 01362000
  1544. COPY IOBLOKS @V306638 01363000
  1545. COPY RBLOKS @V306638 01364000
  1546. COPY SAVE @V306638 01365000
  1547. COPY SPOOL @V306638 01366000
  1548. COPY UDIRECT @V306638 01367000
  1549. COPY VBLOKS @V306638 01368000
  1550. COPY VMBLOK @V306638 01369000
  1551. END 01370000