Table of Contents

DMKCSQ Source

References

Source Listing

DMKCSQ.ASSEMBLE.txt
  1. CSQ TITLE 'DMKCSQ (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKCSQ 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * DMKCSQ CONTAINS THE SPOOLING COMMAND FUNCTIONS AVAILABLE TO 00010000
  11. * TO CLASS G USERS. SOME OF 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. * DMKCSQCL - CLOSE COMMAND 00020000
  21. * DMKCSQHL - HOLD COMMAND 00021000
  22. * DMKCSQFR - FREE 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. * DMKFREE - TO OBTAIN A BLOCK FROM FREE STORAGE 00047000
  48. * DMKFRET - TO RETURN STORAGE 00048000
  49. * DMKUDRFU - TO VERIFY A 'USERID' 00049000
  50. * DMKCSOSD - TO START RDR, PRINTER OR PUNCH 00050000
  51. * DMKSTKIO - TO STACK AN IOBLOK 00051000
  52. * DMKSCNVU - LOCATE A VDEVBLOK 00052000
  53. * DMKUDRRV - TO CLOSE THE DIRECTORY 00053000
  54. * DMKSCNFD - SCAN THE COMMAND LINE BUFFER FOR OPTIONS 00054000
  55. * DMKQCNWT - WRITE RESPONSE AND ERROR MESSAGES 00055000
  56. * DMKVSPCO - CLOSE (AND OPTIONALLY PURGE) OUTPUT SPOOL FILES 00056000
  57. * DMKVSPCR - CLOSE READER FILES 00057000
  58. * DMKSPLDL - DELETE PURGED FILES FROM THE SYSTEM 00058000
  59. * DMKCVTHB - CONVERT HEX ADDRESS OPTIONS TO BINARY 00059000
  60. * DMKCVTDB - CONVERT DECIMAL SPOOLID NUMBERS TO BINARY 00060000
  61. * DMKERMSG - WRITE ERROR MESSAGES 00061000
  62. * DMKCKSPL - CHECKPOINT THE BLOCKS 00062000
  63. * EXTERNAL REFERENCES - 00063000
  64. * 00064000
  65. * DMKRSPHQ - SPOOL HOLD QUEUE CHAIN ANCHOR 00065000
  66. * DMKRSPRD - (ARSPRD) READER FILE CHAIN ANCHOR 00066000
  67. * DMKRSPPR - (ARSPPR) PRINTER FILE CHAIN ANCHOR 00067000
  68. * DMKRSPPU - (ARSPPU) PUNCH FILE CHAIN ANCHOR 00068000
  69. * DMKRSPID - SYSTEM SPOOL ID COUNTER 00069000
  70. * DMKRSPDL - SPOOL DELETE CHAIN ANCHOR 00070000
  71. * DMKVIOIN - IOBIRA ADDRESS FOR IOBLOK 00071000
  72. * 00072000
  73. * TABLES / WORKAREAS - 00073000
  74. * 00074000
  75. * IOBLOK 00075000
  76. * 00076000
  77. * VDEVBLOK, VSPXBLOK, AND SFBLOKS ARE UPDATED OR DELETED 00077000
  78. * 00078000
  79. * THE SAVEWRK FIELDS IN THE STANDARD SAVEAREA ARE USED BY THE 00079000
  80. * OPTION PROCESSING SUBROUTINES FOR THE FOLLOWING VALUES - 00080000
  81. * 00081000
  82. * SAVEWRK1 - FILE OUTPUT CLASS (1 BYTE) 00082000
  83. * SAVEWRK1+1 - NUMBER OF COPIES (1 BYTE) 00083000
  84. * SAVEWRK1+2 - SPOOLID NUMBER (HALF-WORD) 00084000
  85. * SAVEWRK2,3 - USERID OF FILE'S OWNER 00085000
  86. * SAVEWRK4 - ADDRESS OF FNAME FTYPE (24 BYTES) 00086000
  87. * SAVEWRK5 - USE VARIES WITH COMMAND 00087000
  88. * SAVEWRK6,7 - SAVE AREA FOR R0,R1 SCAN OPTIONS 00088000
  89. * SAVEWRK8,9 - USE VARIES WITH COMMAND 00089000
  90. * 00090000
  91. * REGISTER USAGE - 00091000
  92. * 00092000
  93. * ALL SUBROUTINES IN THE MODULE CONFORM GENERALLY TO THIS USAGE; 00093000
  94. * ANY INDIVIDUAL DEVIATIONS OR EXTENSIONS ARE LISTED WITH THE 00094000
  95. * COMMAND DESCRIPTION 00095000
  96. * 00096000
  97. * GPR0 = LENGTH OF OPTION - RETURNED FROM DMKSCNFD 00097000
  98. * GPR1 = ADDRESS OF OPTION - RETURNED FROM DMKSCNFD 00098000
  99. * GPR2 = SCRATCH 00099000
  100. * GPR3 = INTERNAL LINKAGE - 2ND LEVEL 00100000
  101. * GPR4 = INTERNAL LINKAGE - 1ST LEVEL 00101000
  102. * GPR5 = DEVICE TYPE FLAGS - LOGICAL SUM OF TYPES 00102000
  103. * GPR6 = POINTER TO PREVIOUS SFBLOK ON CHAIN 00103000
  104. * GPR7 = SFBLOK BASE 00104000
  105. * GPR8 = VDEVBLOK BASE 00105000
  106. * GPR9 = INPUT COMMAND LINE ADDRESS 00106000
  107. * GPR10 = REMAINING DEVICE COUNT AND IOBLOK ADDRESS 00107000
  108. * GPR11 = VMBLOK BASE 00108000
  109. * GPR12 = DMKCSQ BASE 00109000
  110. * GPR13 = SAVEAREA BASE 00110000
  111. * GPR14 = EXTERNAL LINKAGE 00111000
  112. * GPR15 = EXTERNAL LINKAGE 00112000
  113. * 00113000
  114. * NOTES - 00114000
  115. * 00115000
  116. * NONE 00116000
  117. * 00117000
  118. * OPERATION - 00118000
  119. * 00119000
  120. * EACH COMMAND PROCESSOR IS ENTERED VIA A CALL FROM DMKCFM. THE 00120000
  121. * PROCESSING LOGIC IS EMBODIED IN A SERIES OF INTERNAL CALLS TO 00121000
  122. * A SET OF OPTION PROCESSORS AND LIST SCANNERS. IN GENERAL, 00122000
  123. * THE OPTION PROCESSORS ARE CALLED WHEN IT IS KNOWN, EITHER BY 00123000
  124. * POSITION OR KEYWORD, WHAT TYPE OF OPERAND MUST APPEAR NEXT ON 00124000
  125. * THE COMMAND LINE. THE OPTION PROCESSORS SCAN FOR THE NEXT 00125000
  126. * FIELD, VERIFY ITS VALIDITY, AND SET UP INFORMATION FOR USE BY 00126000
  127. * THE LIST SCANNERS. SINCE THE OPERATIONAL DESCRIPTION OF EACH 00127000
  128. * OF EACH COMMAND PROCESSOR REFERENCES THESE SUBROUTINES, A LIST 00128000
  129. * OF THEIR NAMES AND FUNCTIONS IS GIVEN HERE; A DESCRIPTION OF 00129000
  130. * THE OPERATIONAL LOGIC AND REGISTER SETS FOR EACH SUBROUTINE 00130000
  131. * APPEAR AT THE END OF THE MODULE 00131000
  132. * 00132000
  133. * OPTION PROCESSORS - 00133000
  134. * 1. GETUSER - SAVE THE USER ID OF THE FILE'S OWNER 00134000
  135. * 2. GETYPE - SAVE THE FILE TYPE (OR DEVICE TYPE) 00135000
  136. * 3. GETCOPY - LOCATE AND SAVE THE NUMBER OF COPIES REQUESTED 00136000
  137. * 4. GETNAME - LOCATE AND SAVE THE FILE NAME (AND TYPE) 00137000
  138. * 5. GETCLASS - LOCATE AND VERIFY THE CLASS REQUESTED (2ND LEVEL 00138000
  139. * ROUTINE) 00139000
  140. * 00140000
  141. * LIST SCANNING ROUTINES - 00141000
  142. * 1. GETDEVIC - LOCATE THE NEXT VDEVBLOK OF THE APPROPRIATE 00142000
  143. * ADDRESS, CLASS AND TYPE (2ND LEVEL ROUTINE) 00143000
  144. * 2. GETFILE - LOCATE THE NEXT FILE OF THE CORRECT CLASS, ID, 00144000
  145. * AND OWNER 00145000
  146. * 3. GETCHAIN - LOCATE THE NEXT FILE CHAIN TO SEARCH (2ND 00146000
  147. * LEVEL ROUTINE) 00147000
  148. * 00148000
  149. *. 00149000
  150. EJECT 00150000
  151. COPY OPTIONS 00151000
  152. SPACE 2 00152000
  153. COPY LOCAL OPTIONS 00153000
  154. DMKCSQ CSECT 00154000
  155. SPACE 3 00155000
  156. EXTRN DMKSCNVU,DMKSCNFD 00156000
  157. EXTRN DMKVSPCO,DMKVSPCR,DMKCVTHB 00157000
  158. EXTRN DMKCVTDB,DMKRSPHQ 00158000
  159. EXTRN DMKVIOIN,DMKSTKIO @VM01016 00159000
  160. EXTRN DMKCSOSD,DMKUDRFU,DMKERMSG 00160000
  161. EXTRN DMKUDRRV @V200930 00161000
  162. EXTRN DMKCKSPL @V304298 00162000
  163. SPACE 3 00163000
  164. USING PSA,R0 00164000
  165. USING SFBLOK,R7 00165000
  166. USING VDEVBLOK,R8 00166000
  167. USING BUFFER,R9 00167000
  168. USING VMBLOK,R11 00168000
  169. USING SAVEAREA,R13 00169000
  170. SPACE 2 00170000
  171. ID DC CL8'DMKCSQ' MODULE NAME 00171000
  172. EJECT 00172000
  173. *. 00173000
  174. * SUBROUTINE NAME - 00174000
  175. * 00175000
  176. * DMKCSQCL 00176000
  177. * 00177000
  178. * FUNCTION - 00178000
  179. * 00179000
  180. * TO CLOSE A VIRTUAL INPUT FILE, OR TO CLOSE A VIRTUAL OUTPUT 00180000
  181. * FILE. 00181000
  182. * 00182000
  183. * COMMAND LINE FORMAT - 00183000
  184. * 00184000
  185. * +-------+----------------------------------------------+ 00185000
  186. * | CLOSE | READER | 00186000
  187. * | C | VADDR <HOLD|NOHOLD> | 00187000
  188. * | | | 00188000
  189. * | | CONSOLE | 00189000
  190. * | | PRINTER <PURGE> | 00190000
  191. * | | PUNCH |<HOLD|NOHOLD>| | 00191000
  192. * | | VADDR |DIST DISTCODE|.....----- | 00192000
  193. * | | --<NAME FNAME <FTYPE>> | 00193000
  194. * | | <NAME DSNAME> | 00194000
  195. * +-------+----------------------------------------------+ 00195000
  196. * 00196000
  197. * READER PRINTER PUNCH CONSOLE HOLD NOHOLD 00197000
  198. * R RDR P PRT PU PCH CON HO NOH 00198000
  199. * 00199000
  200. * PURGE DIST NAME 00200000
  201. * PU DI NA 00201000
  202. * 00202000
  203. * 00203000
  204. * OPERATION - 00204000
  205. * 00205000
  206. * 1. CALL GETYPE; IF TYPE = ALL, EXIT GIVING 00206000
  207. * ERROR MSG006E. 00207000
  208. * IF MISSING OR INVALID, EXIT GIVING MSG022E. 00208000
  209. * 2. CL01- CALL DMKSCNFD TO LOCATE NEXT OPTION: 00209000
  210. * IF NONE, GO TO STEP 8. 00210000
  211. * 3. CL02- IF OUTPUT DEVICE, GO TO STEP 4. 00211000
  212. * IF OPTION = 'HOLD' AND/OR 'NOHOLD' SET FLAG IN 00212000
  213. * SAVEWRK1 AND GO TO STEP 2. 00213000
  214. * OTHERWISE, EXIT GIVING ERROR MSG003E. 00214000
  215. * 4. CL03- IF OPTION = 'PURGE' SET FLAG IN SAVEWRK1 00215000
  216. * AND GO TO STEP 8. 00216000
  217. * 5. CL04,CL06- IF OPTION = 'HOLD' AND/OR 'NOHOLD' SET 00217000
  218. * FLAG IN SAVEWRK1 AND GO TO STEP 2. 00218000
  219. * 6. CL05- IF OPTION = 'DIST', CALL DMKSCNFD TO LOCATE 00219000
  220. * DIST-CODE: IF NONE OR INVALID, EXIT GIVING MSG032E. 00220000
  221. * IF DIST-CODE VALID, SAVE IN SAVEWRK8,9 AND GO TO 00221000
  222. * STEP 8. 00222000
  223. * 7. IF OPTION = 'NAME', CLASS GETNAME: OTHERWISE EXIT 00223000
  224. * GIVING MSG003E 00224000
  225. * 8. CL-8,CL09,CL10,CL11- LOCATE SPOOL CONTROL AND SPOOL 00225000
  226. * FILE BLOCKS- IF INPUT DEVICE, GO TO STEP 9. 00226000
  227. * SET NEW INFORMATION IN SPOOL FILE BLOK. 00227000
  228. * IF OUTPUT SPOOL CONTINOUS (VDEVCP), GO TO STEP 10: 00228000
  229. * OTHERWISE, CALL DMKVSPCO TO CLOSE FILE AND 00229000
  230. * GO TO STEP 10. 00230000
  231. * 9. CLOSERDR- CALL DMKVSPCR TO CLOSE READER. 00231000
  232. * 10. IF TYPE = VADDR, EXIT. OTHERWISE CALL GETDEVIC 00232000
  233. * AND GO TO STEP 8. 00233000
  234. * 00234000
  235. * RESPONSE - 00235000
  236. * 00236000
  237. * PRT TO 00237000
  238. * PUN FILE NNNN FOR USERID COPY NN NOHOLD 00238000
  239. * CON FROM HOLD 00239000
  240. * 00240000
  241. * 00241000
  242. * ERROR MESSAGES - 00242000
  243. * 00243000
  244. * DMKCSQ003E INVALID OPTION - (OPTION) 00244000
  245. * DMKCSQ006E INVALID DEVICE TYPE - (ADDR) 00245000
  246. * DMKCSQ013E CONFLICTING OPTION - (OPTION) 00246000
  247. * DMKCSQ022E VADDR MISSING OR INVALID 00247000
  248. * DMKCSQ029E FNAME FTYPE MISSING OR INVALID 00248000
  249. * DMKCSQ032E DISTCODE MISSING OR INVALID 00249000
  250. * DMKCSQ040E DEV (ADDR) DOES NOT EXIST 00250000
  251. *. 00251000
  252. EJECT 00252000
  253. SPACE 3 00253000
  254. DMKCSQCL RELOC 00254000
  255. SPACE 00255000
  256. USING VSPLCTL,R9 00256000
  257. SPACE 00257000
  258. BAL R4,CLEAR CLEAR SAVEWRK1,2-9 00258000
  259. MVC SAVEWRK8(8),BLANKS PUT BLANKS IN DIST AREA 00259000
  260. SR R6,R6 INDICATE POSSIBLE VADDR 00260000
  261. BAL R4,GETYPE GET DEVICE TYPE @V200930 00261000
  262. EX R5,CLIALL TYPE = ALL ?? 00262000
  263. BE MSG006E YES - INVALID TYPE 00263000
  264. SPACE 00264000
  265. CL01 EQU * 00265000
  266. CALL DMKSCNFD LOCATE NEXT OPTION 00266000
  267. BNZ CL08 NONE -- GO PROCESS 00267000
  268. SPACE 00268000
  269. LR R14,R0 COUNT 00269000
  270. BCTR R14,0 -1 00270000
  271. C R0,F2 COUNT OF 1 00271000
  272. BL MSG003E INVALID OPTION 00272000
  273. BE CL02 -- 00273000
  274. EX R14,CLCNOHLD NOHOLD ?? 00274000
  275. BNE CL02 NO -- 00275000
  276. TM SAVEWRK1,SFBNOHLD+SFBHOLD OPTION ERROR ? 00276000
  277. BNZ MSG013E YES -- CONFLICTING OPTION 00277000
  278. OI SAVEWRK1,SFBNOHLD SET NOHOLD 00278000
  279. B CL01 GET NEXT - 00279000
  280. SPACE 00280000
  281. CL02 EQU * 00281000
  282. EX R14,CLCHOLD HOLD ?? 00282000
  283. BNE CL03 NO, TEST NEXT OPTION @V200930 00283000
  284. TM SAVEWRK1,SFBNOHLD+SFBHOLD HOLD OR NOHOLD ?? 00284000
  285. BNZ MSG013E YES -- CONFLICTING OPTION 00285000
  286. OI SAVEWRK1,SFBHOLD SET HOLD ?? 00286000
  287. B CL01 GET NEXT 00287000
  288. SPACE 00288000
  289. CL03 DS 0H @V200930 00289000
  290. EX R14,CLCPURG PURGE ?? 00290000
  291. BNE CL04 NO - 00291000
  292. TM VDEVTYPC,CLASURI IS IT A READER ?? @V200930 00292000
  293. BO MSG003E YES, INVALID OPTION @V200930 00293000
  294. TM SAVEWRK1+1,VDEVPURG PURGE ALL READY SET ?? 00294000
  295. BO MSG013E YES -- CONFLICTING OPTION 00295000
  296. OI SAVEWRK1+1,VDEVPURG SAVE IT 00296000
  297. CLI SAVEWRK1,X'00' HOLD OR NOHOLD OPTIONS ?? 00297000
  298. BNE MSG003E INVALID OPTION 00298000
  299. CLI SAVEWRK8,C' ' DIST CODE PRESENT ?? 00299000
  300. BNE MSG003E YES -- INVALID OPTION 00300000
  301. B CL08 GO - PROCESS 00301000
  302. SPACE 00302000
  303. CL04 EQU * 00303000
  304. TM SAVEWRK1+1,VDEVPURG PURGE OPTION PRESENT ?? 00304000
  305. BO MSG003E YES - INVALID OPTION 00305000
  306. EX R14,CLCDIST DISTRIBUTION ?? 00306000
  307. BNE CL07 NO, TEST FOR NAME @V200930 00307000
  308. CLI SAVEWRK8,X'40' DIST CODE PRESENT ?? 00308000
  309. BH MSG013E YES -- CONFLICTING OPTION 00309000
  310. CALL DMKSCNFD GET DIST CODE 00310000
  311. BNZ MSG032E DIST CODE MISSING 00311000
  312. C R0,F8 OVER MAX LENGTH 00312000
  313. BH MSG032E YES - INVALID 00313000
  314. LR R14,R0 COUNT 00314000
  315. BCTR R14,0 -1 00315000
  316. EX R14,MVCDIST SAVE DISTCODE 00316000
  317. B CL01 00317000
  318. SPACE 00318000
  319. CL07 EX R14,CLCNAME NAME ?? 00319000
  320. BNE MSG003E NO - INVALID OPTION 00320000
  321. BAL R4,GETNAME GET FILE NAME TYPE @V200930 00321000
  322. SPACE 00322000
  323. CL08 EQU * 00323000
  324. CALL DMKSCNFD 00324000
  325. BZ MSG003E TOO MANY OPTIONS 00325000
  326. CL08A EQU * 00326000
  327. L R9,VDEVSPL POINTER TO VSPLCTL BLOK 00327000
  328. LTR R9,R9 VALID ADDRESS 00328000
  329. BZ CL12 NO -- DO NEXT 00329000
  330. L R7,VSPSFBLK ADDRESS OF SPOOL FILE BLOK 00330000
  331. LTR R7,R7 FILE BLOK PRESENT ?? 00331000
  332. BZ CL10 NO -- CLEAR VSPLCTL BLOK 00332000
  333. SPACE 00333000
  334. L R14,SAVEWRK4 ADDRESS OF NEW FNAME FTYPE 00334000
  335. LTR R14,R14 ONE PRESENT ?? 00335000
  336. BZ *+10 NO -- 00336000
  337. MVC SFBFNAME(24),0(R14) MOVE NEW NAME TO SFBLOK 00337000
  338. CLI SAVEWRK8,C' ' NEW DIST CODE PRESENT ?? 00338000
  339. BE CL08B NO -- 00339000
  340. MVC SFBDIST(8),SAVEWRK8 MOVE IN NEW DIST CODE 00340000
  341. CL08B TM SAVEWRK1,SFBNOHLD NOHOLD TO BE SET ?? 00341000
  342. BZ CL09 NO - 00342000
  343. OI SFBFLAG2,SFBNOHLD YES - SET NOHOLD 00343000
  344. NI SFBFLAG2,X'FF'-SFBHOLD RESET HOLD - 00344000
  345. B CL10 00345000
  346. SPACE 00346000
  347. CL09 EQU * 00347000
  348. TM SAVEWRK1,SFBHOLD HOLD TO BE SET 00348000
  349. BZ CL10 NO - 00349000
  350. OI SFBFLAG2,SFBHOLD SET HOLD BIT 00350000
  351. NI SFBFLAG2,X'FF'-SFBNOHLD RESET NOHOLD BIT 00351000
  352. SPACE 00352000
  353. CL10 EQU * 00353000
  354. L R1,=C'CLOS' PARM REG FOR DMKVSP @VA01460 00354000
  355. TM VDEVTYPC,CLASURI INPUT DEVICE ?? 00355000
  356. BO CLOSERDR YES -- CLOSE READERS 00356000
  357. TM SAVEWRK1+1,VDEVPURG IS PURGE FLAG TO BE SET 00357000
  358. BZ CL11 NO - 00358000
  359. LA R2,VDEVPURG PURGE ACTIVE FILE @VA01460 00359000
  360. B CL11A GO CLOSE AND PURGE @V200930 00360000
  361. SPACE 00361000
  362. CL11 EQU * 00362000
  363. TM VDEVSFLG,VDEVCONT CONT OUTPUT ?? @V200930 00363000
  364. BO CL12 YES -- DO NOT CLOSE 00364000
  365. SR R2,R2 NO PARMS @VA01460 00365000
  366. CL11A SL R8,VMDVSTRT VDEVBLOK DISPLACEMENT @VA01460 00366000
  367. CALL DMKVSPCO CALL OUTPUT CLOSE ROUTINE 00367000
  368. AL R8,VMDVSTRT VDEVBLOK ADDRESS @VA01460 00368000
  369. B CL12 -- 00369000
  370. SPACE 00370000
  371. CLOSERDR SL R8,VMDVSTRT VDEVBLOK DISPLACEMENT @VA01460 00371000
  372. CALL DMKVSPCR CLOSE READER @VA01460 00372000
  373. AL R8,VMDVSTRT VDEVBLOK ADDRESS @VA01460 00373000
  374. SPACE 00374000
  375. CL12 EQU * 00375000
  376. LTR R5,R5 VADDR ?? 00376000
  377. BZ CL13 YES - EXIT 00377000
  378. BAL R3,GETDEVIC GET NEXT DEVICE @V200930 00378000
  379. LTR R10,R10 ALL DONE ?? 00379000
  380. BNZ CL08A NO - DO NEXT DEVICE 00380000
  381. SPACE 00381000
  382. CL13 B CSQEXIT 00382000
  383. EJECT 00383000
  384. *. 00384000
  385. * SUBROUTINE NAME - 00385000
  386. * 00386000
  387. * DMKCSQHL 00387000
  388. * 00388000
  389. * FUNCTION - 00389000
  390. * 00390000
  391. * TO HOLD THE PRINTER, PUNCH OR BOTH QUEUES FOR A PARTICULAR 00391000
  392. * USER. THE COMMAND APPLIES TO CURRENT CLOSE SPOOL FILES 00392000
  393. * AND IS ALSO REMEMBERED TO FILES AS THEY ARE CLOSED. 00393000
  394. * THE FILES AND HOLD STATUS CAN BE RESET WITH THE FREE 00394000
  395. * COMMAND. THIS IS A CLASS D COMMAND. 00395000
  396. * 00396000
  397. * COMMAND LINE FORMAT - 00397000
  398. * 00398000
  399. * +------+-----------------+ 00399000
  400. * | HOLD | USERID PRINTER | 00400000
  401. * | HO | PUNCH | 00401000
  402. * | | ALL | 00402000
  403. * | | --- | 00403000
  404. * +------+-----------------+ 00404000
  405. * 00405000
  406. * PRINTER PUNCH ALL 00406000
  407. * P PRT PU PCH ALL 00407000
  408. * 00408000
  409. * 00409000
  410. * OPERATION - 00410000
  411. * 00411000
  412. * 1. CALL GETUSER 00412000
  413. * 2. CALL GETYPE: IF READER OR VADDR, EXIT GIVING 00413000
  414. * ERROR MSG006E. 00414000
  415. * 3. IF TYPE = 'ALL', CALL GETCHAIN. 00415000
  416. * 4. HL01A- LOCATE SPOOL HOLD QUEUE BLOK FOR 00416000
  417. * THIS USER ON (DMKRSPHQ) CHAIN. IF NONE, 00417000
  418. * CREATE AND CHAIN BLOK TO CHAIN. 00418000
  419. * SET SHQFLAG FOR THIS DEVICE. 00419000
  420. * 5. CALL GETFILE: IF NONE, GO TO STEP 6. 00420000
  421. * SET SFBSHOLD FLAG IN SPOOL FILE FLOK AND GO TO STEP 5. 00421000
  422. * 6. CALL GETCHAIN: IF ALL DONE, EXIT: OTHERWISE, GO TO STEP 5. 00422000
  423. * 00423000
  424. * RESPONSE - 00424000
  425. * 00425000
  426. * NONE 00426000
  427. * 00427000
  428. * ERROR MESSAGES - 00428000
  429. * 00429000
  430. * 00430000
  431. * DMKCSQ006E INVALID DEVICE TYPE - (ADDR) 00431000
  432. * DMKCSQ007E INVALID USERID - (USERID) 00432000
  433. * DMKCSQ020E USERID MISSING OR INVALID 00433000
  434. * DMKCSQ053E (USERID) NOT IN CP DIRECTORY 00434000
  435. *. 00435000
  436. SPACE 3 00436000
  437. DMKCSQHL RELOC 00437000
  438. SPACE 00438000
  439. BAL R4,CLEAR CLEAR SAVEWRK1,2-9 00439000
  440. BAL R4,GETUSER GET USERID @V200930 00440000
  441. SPACE 00441000
  442. L R6,FFS INDICATE NO VADDR POSSIBLE AND 00442000
  443. * DO NOT GET VDEVBLOK ADDRESS 00443000
  444. BAL R4,GETYPE GET DEVICE TYPE @V200930 00444000
  445. LTR R5,R5 TYPE = VADDR ?? 00445000
  446. BZ MSG006E YES INVALID 00446000
  447. EX R5,TMCON TYPE EQUAL CONSOLE? @VA05854 00447000
  448. BO MSG006E YES, INVALID @VA05854 00448000
  449. SPACE 00449000
  450. EX R5,TMRDR TYPE = READER ?? 00450000
  451. BZ HL01 NO 00451000
  452. EX R5,CLIALL TYPE = ALL ?? 00452000
  453. BE *+8 YES 00453000
  454. B MSG006E INVALID TYPE 00454000
  455. * 00455000
  456. * USE GETCHAIN TO TURN OFF RDR BIT 00456000
  457. * 00457000
  458. BAL R3,GETCHAIN GET NEXT FILE IN CHAIN @V200930 00458000
  459. SPACE 00459000
  460. HL01 EQU * 00460000
  461. EJECT 00461000
  462. USING SHQBLOK,R1 00462000
  463. SPACE 00463000
  464. L R2,=A(DMKRSPHQ) ADDRESS OF SPOOL HOLD QUEUE POINTER 00464000
  465. SPACE 00465000
  466. * 1ST TIME 2ND TO LAST TIME 00466000
  467. * COMMENTS COMMENTS 00467000
  468. SPACE 00468000
  469. SHQLP L R1,0(R2) 1ST SHQBLOK NEXT SHQBLOK 00469000
  470. * ADDRESS ADDRESS 00470000
  471. LTR R1,R1 LIST EMPTY ?? END OF LIST ?? 00471000
  472. BZ BUILDSHQ YES YES 00472000
  473. SPACE 00473000
  474. * SEARCH THE LIST FOR BLOK WITH THIS USER'S ID 00474000
  475. SPACE 00475000
  476. CLC SAVEWRK2(8),SHQUSER SHQBLOK BELONG TO THIS USER ?? 00476000
  477. BE SHQEQUAL YES 00477000
  478. LR R2,R1 SAVE SHQBLOK ADDRESS 00478000
  479. B SHQLP TRY NEXT BLOK 00479000
  480. SPACE 00480000
  481. BUILDSHQ EQU * BUILD SHQBLOK FOR THIS USER 00481000
  482. LA R0,SHQBSIZE LENGTH IN DOUBLE WORDS 00482000
  483. SPACE 00483000
  484. CALL DMKFREE GET STORAGE FOR BLOK 00484000
  485. SPACE 00485000
  486. ST R1,0(R2) CHAIN LAST BLOK TO THIS NEW BLOK 00486000
  487. XC SHQBLOK(SHQBSIZE*8),SHQBLOK CLEAR TO ZEROES 00487000
  488. MVC SHQUSER(8),SAVEWRK2 MOVE USER ID TO SHQBLOK 00488000
  489. SPACE 00489000
  490. SHQEQUAL EQU * 00490000
  491. EX R5,OISUSER SET TYPE FLAGS FOR SYSTEM HOLDING 00491000
  492. * USER 00492000
  493. CALL DMKCKSPL,PARM=CHGSHQ+CHGSFB @V304298 00493000
  494. SPACE 00494000
  495. HL02 EQU * 00495000
  496. LR R9,R7 SAVE CHAIN ANCHOR @V304298 00496000
  497. HL02A DS 0H @V304298 00497000
  498. BAL R4,GETFILE GET NEXT SPOOL FILE @V200930 00498000
  499. LTR R7,R7 MORE FILES THIS CHAIN ?? 00499000
  500. BZ HL03 NO TRY NEXT CHAIN 00500000
  501. SPACE 00501000
  502. * HERE TO SET HOLD FLAGS IN SFBLOK 00502000
  503. SPACE 00503000
  504. OI SFBFLAG,SFBSHOLD SET CLASS D USER HOLDING USER FILE 00504000
  505. CALL DMKCKSPL,PARM=CHGSFB CHECKPOINT @V304298 00505000
  506. LR R2,R7 SAVE CURRENT SFBLOK @V304298 00506000
  507. LR R7,R9 RESTORE ANCHOR @V304298 00507000
  508. HL02B L R7,0(R7) NEXT SFBLOK @V304298 00508000
  509. LTR R7,R7 ANY MORE? @V304298 00509000
  510. BZ HL03 XFER IF NOT @V304298 00510000
  511. CR R7,R2 IS THIS THE CURRENT ONE? @V304298 00511000
  512. BE HL02A XFER IF SO @V304298 00512000
  513. B HL02B TRY AGAIN @V304298 00513000
  514. SPACE 00514000
  515. HL03 EQU * 00515000
  516. BAL R3,GETCHAIN GET NEXT FILE CHAIN @V200930 00516000
  517. SPACE 00517000
  518. HL04 LTR R6,R6 ALL DONE ?? 00518000
  519. BNZ HL02 NO - DO PUNCH CHAIN 00519000
  520. B CSQEXIT 00520000
  521. SPACE 00521000
  522. * ***EXECUTED INSTRUCTIONS*** 00522000
  523. OISUSER OI SHQSHOLD,X'00' SET TYPE BITS IN SYSTEM HOLD OF 00523000
  524. * SHQBLOK 00524000
  525. SPACE 00525000
  526. EJECT 00526000
  527. *. 00527000
  528. * SUBROUTINE NAME - 00528000
  529. * 00529000
  530. * DMKCSQFR 00530000
  531. * 00531000
  532. * FUNCTION - 00532000
  533. * 00533000
  534. * TO FREE PREVIOUSLY HELD SPOOLING FILES. FILES MAY BE 00534000
  535. * FREED BY FILE TYPE. THIS IS A CLASS D COMMAND. 00535000
  536. * 00536000
  537. * COMMAND LINE FORMAT - CLASS D 00537000
  538. * 00538000
  539. * +---------+------------------+ 00539000
  540. * | FREE | USERID PRINTER | 00540000
  541. * | FR | PUNCH | 00541000
  542. * | | ALL | 00542000
  543. * | | --- | 00543000
  544. * +---------+------------------+ 00544000
  545. * 00545000
  546. * PRINTER PUNCH ALL 00546000
  547. * P PRT PU PCH ALL 00547000
  548. * 00548000
  549. * OPERATION - 00549000
  550. * 1. CALL GETUSER 00550000
  551. * 2. CALL GETYPE: IF TYPE = VADDR OR READER, EXIT GIVING 00551000
  552. * ERROR MSG006E. 00552000
  553. * IF TYPE = ALL OR NONE, CALL GETCHAIN. 00553000
  554. * 3. FR01- CALL GETFILE- IF NONE, GO TO STEP 4. 00554000
  555. * RESET SFBSHOLD FLAG IN SFBLOK AND GO TO STEP 3. 00555000
  556. * 4. LOCATE SPOOL HOLD QUEUE BLOK FOR THIS USER: 00556000
  557. * IF NONE, GO TO STEP 6. 00557000
  558. * RESET THE SHQSHOLD FLAG FOR THIS DEVICE TYPE. 00558000
  559. * IF SHQFLAG = ZERO, UNCHAIN THE SHQBLOK AND CALL 00559000
  560. * DMKFRET TO FRET THE BLOK. 00560000
  561. * 5. IF TYPE NOT = TO 'ALL' GO TO STEP 6. 00561000
  562. * OTHERWISE, CALL GETCHAIN: IF NOT LAST CHAIN, GO TO 00562000
  563. * STEP 3. 00563000
  564. * 6. CALL DMKCSOSD - TO GIVE DEVICE END INTERRUPT IF 00564000
  565. * DEVICE NOT ACTIVE AND EXIT. 00565000
  566. * 00566000
  567. * 00567000
  568. * RESPONSE - 00568000
  569. * 00569000
  570. * NONE 00570000
  571. * 00571000
  572. * ERROR MESSAGES - 00572000
  573. * 00573000
  574. * 00574000
  575. * DMKCSQ006E INVALID DEVICE TYPE - (ADDR) 00575000
  576. * DMKCSQ007E INVALID USERID - (USERID) 00576000
  577. * DMKCSQ020E USERID MISSING OR INVALID 00577000
  578. * DMKCSQ053E (USERID) NOT IN CP DIRECTORY 00578000
  579. *. 00579000
  580. EJECT 00580000
  581. DMKCSQFR RELOC 00581000
  582. SPACE 00582000
  583. BAL R4,CLEAR CLEAR SAVEWRK1,2-9 00583000
  584. BAL R4,GETUSER GET USERID @V200930 00584000
  585. L R6,FFS INDICATE NO VADDR POSSIBLE 00585000
  586. * AND DO NOT GET VDEVBLOK ADDRESS 00586000
  587. BAL R4,GETYPE GET DEVICE TYPE @V200930 00587000
  588. LTR R5,R5 TYPE = VADDR ?? 00588000
  589. BZ MSG006E YES INVALID 00589000
  590. EX R5,TMCON TYPE EQUAL CONSOLE? @VA05139 00590000
  591. BO MSG006E YES, INVALID @VA05139 00591000
  592. EX R5,CLIALL TYPE = ALL ?? 00592000
  593. BNE TSTRDR NO TEST FOR READER TYPE 00593000
  594. BAL R3,GETCHAIN GET NEXT FILE CHAIN @V200930 00594000
  595. SPACE 00595000
  596. TSTRDR EX R5,TMRDR TYPE = READER ?? 00596000
  597. BO MSG006E YES INVALID 00597000
  598. STC R5,SAVEWRK9+1 SAVE TYPE MASK 00598000
  599. FR01 EQU * 00599000
  600. LR R9,R7 SSAVE CURRENT ANCHOR @V304298 00600000
  601. FR01A DS 0H @V304298 00601000
  602. BAL R4,GETFILE GET NEXT SPOOL FILE @V200930 00602000
  603. LTR R7,R7 SFBLOK PRESENT ?? 00603000
  604. BZ FR03 NO - DO SHQBLOKS 00604000
  605. FR02 NI SFBFLAG,X'FF'-SFBSHOLD RESET USER 'SYSTEM HOLD' FLAG 00605000
  606. CALL DMKCKSPL,PARM=CHGSFB CHECKPOINT @V304298 00606000
  607. LR R2,R7 SAVE CURRENT SFBLOK @V304298 00607000
  608. LR R7,R9 RESTORE ANCHOR @V304298 00608000
  609. FR02A L R7,0(R7) NEXT SFBLOK @V304298 00609000
  610. LTR R7,R7 ANY MORE? @V304298 00610000
  611. BZ FR03 XFER IF NOT @V304298 00611000
  612. CR R2,R7 IS THIS THE CURRENT ONE? @V304298 00612000
  613. BE FR01A XFER IF SO @V304298 00613000
  614. B FR02A TRY AGAIN @V304298 00614000
  615. SPACE 00615000
  616. USING SHQBLOK,R1 00616000
  617. FR03 L R2,=A(DMKRSPHQ) ADDRESS OF SPOOL HOLD QUEUE POINTER 00617000
  618. LA R14,255 SET TO X'FF' 00618000
  619. SR R14,R5 'NI' MASK TO RESET FLAGS IN SHQBLOK 00619000
  620. NEXTSHQ L R1,0(R2) SHQBLOK ADDRESS 00620000
  621. LTR R1,R1 LAST ENTRY ?? 00621000
  622. BZ FR04A YES @V304298 00622000
  623. CLC SAVEWRK2(8),SHQUSER BLOK FOR THIS USER OR USERID 00623000
  624. BE SHQEQ YES 00624000
  625. LR R2,R1 SET BASE TO NEXT BLOK 00625000
  626. B NEXTSHQ TEST THIS BLOK 00626000
  627. SPACE 00627000
  628. SHQEQ EX R14,NIUSYS RESET SHQBLOK SYSTEM HOLD 00628000
  629. SPACE 00629000
  630. L R14,SHQFLAGS LOAD FLAGS 00630000
  631. LTR R14,R14 ALL FLAGS EQUAL TO ZERO ?? 00631000
  632. BNZ FR04 NO TEST FOR OTHER CHAIN 00632000
  633. SPACE 00633000
  634. MVC 0(4,R2),SHQPNT UNCHAIN CURRENT SHQBLOK 00634000
  635. CALL DMKCKSPL,PARM=CHGSHQ+DELSFB CHECKPOINT @V304298 00635000
  636. LA R0,SHQBSIZE LOAD SIZE OF BLOK IN DOUBLE WORDS 00636000
  637. CALL DMKFRET FREE BLOK 00637000
  638. B FR04A CONTINUE @V304298 00638000
  639. SPACE 00639000
  640. FR04 EQU * 00640000
  641. CALL DMKCKSPL,PARM=CHGSHQ+CHGSFB CHECKPOINT @V304298 00641000
  642. FR04A DS 0H @V304298 00642000
  643. BAL R3,GETCHAIN GET NEXT FILE CHAIN @V200930 00643000
  644. SPACE 00644000
  645. LTR R6,R6 LAST FILE ?? 00645000
  646. BNZ FR01 00646000
  647. SPACE 00647000
  648. FR05 EQU * 00648000
  649. IC R5,SAVEWRK9+1 GET TYPE MASK 00649000
  650. CALL DMKCSOSD CALL START ROUTINE TO GIVE INTERRUPT 00650000
  651. B CSQEXIT 00651000
  652. SPACE 3 00652000
  653. * ***EXECUTED INSTRUCTIONS*** 00653000
  654. NIUSYS NI SHQSHOLD,X'00' RESET USER 'SYSTEM HOLD' FLAG 00654000
  655. CLIALL CLI =AL1(CSQRDR+TYPPRT+TYPPUN),X'00' MASK = READER PRINTER 00655000
  656. * PUNCH 00656000
  657. TMRDR TM =AL1(CSQRDR),X'00' MASK = READER 00657000
  658. TMPRT TM =AL1(TYPPRT),X'00' MASK = PRINTER 00658000
  659. TMPUN TM =AL1(TYPPUN),X'00' MASK = PUNCH 00659000
  660. TMTYPE TM VDEVTYPE,X'00' TEST VDEV TYPE 00660000
  661. TMCON TM =AL1(CSQCON),X'00' MASK = CONSOLE 00661000
  662. EJECT 00662000
  663. *. 00663000
  664. **************************************** 00664000
  665. * 00665000
  666. * SUBROUTINES 00666000
  667. * 00667000
  668. **************************************** 00668000
  669. * 00669000
  670. * 00670000
  671. * 00671000
  672. * OPERATION OF GETUSER - 00672000
  673. * 00673000
  674. * 1. CALL DMKSCNFD TO LOCATE USERID: 00674000
  675. * IF NONE, EXIT GIVING ERROR MSG020E. 00675000
  676. * 2. CALL DMKUDRFU: VERIFY USERID. 00676000
  677. * IF INVALID, EXIT GIVING ERROR MSG007E 00677000
  678. * IF NOT IN CP DIRECTORY, EXIT GIVING ERROR MSG053E 00678000
  679. * 3. MOVE USERID TO SAVEWRK2,3 AND RETURN TO CALLER. 00679000
  680. *. 00680000
  681. SPACE 3 00681000
  682. GETUSER EQU * HERE TO MOVE USERID TO SAVEWRK2,3 00682000
  683. SPACE 00683000
  684. GU01 EQU * 00684000
  685. CALL DMKSCNFD LOCATE USERID 00685000
  686. BNZ MSG020E USERID MISSING 00686000
  687. C R0,F8 LENGTH GREATER THAN 8 ? 00687000
  688. BH MSG007E YES -- INVALID USERID 00688000
  689. SPACE 00689000
  690. GU02 MVC SAVEWRK2(8),BLANKS BLANK ID AREA 00690000
  691. SR R2,R2 PARM REG 00691000
  692. CALL DMKUDRFU VERIFY USER 00692000
  693. BNZ MSG053E USERID NOT IN DIRECTORY 00693000
  694. GU03 LR R14,R0 COUNT 00694000
  695. BCTR R14,0 -1 00695000
  696. EX R14,MVCID MOVE USER ID FROM COMMAND LINE TO 00696000
  697. * SAVEWRK2,3 00697000
  698. BR R4 RETURN TO CALLER 00698000
  699. SPACE 00699000
  700. MVCID MVC SAVEWRK2(0),0(R1) ***EXECUTED*** 00700000
  701. SPACE 3 00701000
  702. CLEAR XC SAVEWRK2(32),SAVEWRK2 CLEAR SAVEWRK AREA 00702000
  703. XC SAVEWRK1(4),SAVEWRK1 00703000
  704. BR R4 RETURN TO CALLER 00704000
  705. EJECT 00705000
  706. *. 00706000
  707. * 00707000
  708. * OPERATION OF GETYPE - 00708000
  709. * 00709000
  710. * 1. CALL DMKSCNFD TO LOCATE DEVICE TYPE FIELD 00710000
  711. * 2. IF OPTION='READER','PRINTER','PUNCH','CONSOLE','ALL' ; SET 00711000
  712. * GPR5 = APPROPRIATE DEVICE TYPE. IF OPTION = 'ALL', SET 00712000
  713. * GPR5 EQUAL TO CSQRDR+TYPPRT+TYPPUN; THEN, GO TO STEP 4 00713000
  714. * IF MISSING OR INVALID AND COMMAND IS SPOOL OR CLOSE, 00714000
  715. * EXIT GIVING MSG022E. 00715000
  716. * 3. IF OPTION = VADDR, CALL DMKSCNVU TO LOCATE THE VDEVBLOK, 00716000
  717. * SET GPR5 AND GPR10 = 0, AND EXIT 00717000
  718. * 4. IF TYPE WAS NOT VADDR, LOAD GPR8 WITH VMDVSTRT-VDEVSIZE, 00718000
  719. * AND GPR10 WITH VMDVCNT, AND CALL GETDEVIC TO LOCATE THE 00719000
  720. * FIRST DEVICE OF THE CORRECT TYPE 00720000
  721. * 5. SET GPR6 TO FFS, CALL GETCHAIN (GPR6 WILL BE FILLED BY 00721000
  722. * GETCHAIN WITH THE APPROPRIATE FILE CHAIN ANCHOR) 00722000
  723. * 6. EXIT 00723000
  724. *. 00724000
  725. SPACE 3 00725000
  726. GETYPE EQU * 00726000
  727. SPACE 00727000
  728. GT01 LA R5,CSQRDR+TYPPRT+TYPPUN SET FOR ALL TYPE 00728000
  729. CALL DMKSCNFD LOCATE DEVICE TYPE FIELD 00729000
  730. STM R0,R1,SAVEWRK6 SAVE COUNT AND ADDRESS OF TYPE 00730000
  731. BZ GT02 -- 00731000
  732. LTR R6,R6 VIRTUAL ADDRESS POSSIBLE ?? 00732000
  733. BZ MSG022E YES -- VADDR MISSING 00733000
  734. B DEVIC NO OPTION DEFAULT TO ALL 00734000
  735. SPACE 00735000
  736. GT02 EQU * 00736000
  737. * GPR1 ADDRESS OF TYPE 00737000
  738. LR R14,R0 GET OPTION COUNT 00738000
  739. BCTR R14,0 -1 00739000
  740. C R0,F2 COUNT LENGTH OF 2 00740000
  741. BE GT02A VALID FOR PUNCH 00741000
  742. BL GT02B VALID FOR READER PRINTER 00742000
  743. EX R14,CLCALL ALL ?? 00743000
  744. BE DEVIC YES 00744000
  745. LA R5,CSQCON SET R5 TO CONSOLE TYPE 00745000
  746. EX R14,CLCCONS CONSOLE ?? 00746000
  747. BE DEVIC YES -- 00747000
  748. LA R5,CSQRDR SET R5 TO READER TYPE 00748000
  749. EX R14,CLCRDR RDR ?? 00749000
  750. BE DEVIC YES 00750000
  751. LA R5,TYPPRT PRINTER MASK 00751000
  752. EX R14,CLCPRT PRT ?? 00752000
  753. BE DEVIC YES - 00753000
  754. SPACE 00754000
  755. LA R5,TYPPUN SET GPR5 TO PUNCH TYPE 00755000
  756. EX R14,CLCPCH PCH ?? 00756000
  757. BE DEVIC YES 00757000
  758. GT02A LA R5,TYPPUN PUNCH MASK 00758000
  759. EX R14,CLCPUN PUNCH ?? 00759000
  760. BE DEVIC YES - 00760000
  761. SPACE 00761000
  762. GT02B LA R5,TYPPRT SET GPR5 TO PRINTER TYPE 00762000
  763. EX R14,CLCPRINT PRINTER ?? 00763000
  764. BE DEVIC YES - 00764000
  765. SPACE 00765000
  766. LA R5,CSQRDR TYPE MASK FOR READER 00766000
  767. EX R14,CLCREAD READER ?? 00767000
  768. BE DEVIC 00768000
  769. LTR R6,R6 POSSIBLE VADDR ?? 00769000
  770. BZ GT03 YES -- 00770000
  771. B MSG006E NO -- ERROR DMKCSQ006E 00771000
  772. SPACE 00772000
  773. GT03 EQU * MUST BE VADDR 00773000
  774. SPACE 00774000
  775. STM R0,R1,SAVEWRK6 SAVE COUNT AND DEVICE ADDRESS 00775000
  776. C R0,F3 COUNT OF 3 OR LESS ?? 00776000
  777. BH MSG022E VADDR INVALID 00777000
  778. CALL DMKCVTHB CONVERT TO BINARY 00778000
  779. BNZ MSG022E INVALID VADDRESS 00779000
  780. CALL DMKSCNVU LOCATE VDEVBLOK 00780000
  781. BNZ MSG040E NONEXISTENT UNIT 00781000
  782. TM VDEVTYPC,CLASURO+CLASTERM OUTPUT OR CONSOLE CLASS ? 00782000
  783. BZ GT03A NO - CHECK INPUT TYPE 00783000
  784. TM VDEVTYPE,TYPPRT+TYPPUN PRINTER OR PUNCH ?? 00784000
  785. BNZ GT03B YES -- 00785000
  786. CLI VDEVTYPE,TYP3210 CONSOLE TYPE ? 00786000
  787. BE GT03B YES -- 00787000
  788. B MSG006E INVALID DEVICE TYPE 00788000
  789. GT03A TM VDEVTYPC,CLASURI INPUT DEVICE TYPE ?? 00789000
  790. BZ MSG006E NO -- 00790000
  791. TM VDEVTYPE,TYPRDR READER ?? 00791000
  792. BZ MSG006E NO -- INVALID DEVICE TYPE 00792000
  793. GT03B EQU * 00793000
  794. TM VDEVSTAT,VDEVDED DEDICATED TO REAL DEVICE ?? 00794000
  795. BO MSG006E YES -- INVALID DEVICE TYPE 00795000
  796. SR R5,R5 SET GPR5 TO ZERO 00796000
  797. SR R10,10 SET GPR10 TO ZERO 00797000
  798. B GT06 RETURN TO CALLER 00798000
  799. SPACE 2 00799000
  800. DEVIC EQU * HERE TO SET UP FOR GETDEVIC 00800000
  801. C R6,FFS DO WE NEED VDEVBLOK ADDRESS ?? 00801000
  802. BE GT05 NO -- MUST BE HOLD OR FREE CMD 00802000
  803. GT04 L R8,VMDVSTRT POINTER TO VDEVBLOK TABLE 00803000
  804. S R8,=A(VDEVSIZE*8) SUBSTRACT BLOK SIZE 00804000
  805. LH R10,VMDVCNT VDEVICE COUNT 00805000
  806. LTR R10,R10 ANY DEVICES FOR THIS USER ?? 00806000
  807. BP GT04A YES -- 00807000
  808. MSG040 LA R2,40 NO -- DOES NOT EXIST 00808000
  809. B EXIT8 ERROR MSG DMKCSQ040E 00809000
  810. GT04A EQU * 00810000
  811. A R10,F1 INCREASE DEVICE COUNT BY ONE 00811000
  812. BAL R3,GETDEVIC GET NEXT DEVICE @V200930 00812000
  813. LTR R10,R10 ANY MORE VDEVBLOKS ?? 00813000
  814. BZ MSG040 NO -- ERROR DMKCSQ040E 00814000
  815. B GT06 SET ZERO COND @V200930 00815000
  816. SPACE 00816000
  817. GT05 L R6,FFS SET 1ST TIME SWITCH FOR GETCHAIN 00817000
  818. BAL R3,GETCHAIN GET NEXT FILE CHAIN @V200930 00818000
  819. SPACE 00819000
  820. GT06 CR R2,R2 SET CC = ZERO 00820000
  821. BR R4 RETURN TO CALLER 00821000
  822. SPACE 3 00822000
  823. SPACE 3 00823000
  824. CLCALL CLC 0(0,R1),=C'ALL ' COMPARE FOR ALL 00824000
  825. CLCRDR CLC 0(0,R1),=C'RDR ' COMPARE FOR RDR 00825000
  826. CLCPCH CLC 0(0,R1),=C'PCH ' COMPARE FOR PCH 00826000
  827. CLCPRT CLC 0(0,R1),=C'PRT ' COMPARE FOR PRT 00827000
  828. CLCPRINT CLC 0(0,R1),=C'PRINTER ' COMPARE FOR PRINTER 00828000
  829. CLCPUN CLC 0(0,R1),=C'PUNCH ' COMPARE FOR PUNCH 00829000
  830. CLCREAD CLC 0(0,R1),=C'READER ' COMPARE FOR READER 00830000
  831. CLCHOLD CLC 0(0,R1),=C'HOLD ' COMPARE FOR HOLD 00831000
  832. CLCNOHLD CLC 0(0,R1),=C'NOHOLD ' COMPARE FOR NOHOLD 00832000
  833. CLCNAME CLC 0(0,R1),=C'NAME ' COMPARE FOR NAME 00833000
  834. CLCPURG CLC 0(0,R1),=C'PURGE ' COMPARE FOR PURGE 00834000
  835. CLCDIST CLC 0(0,R1),=C'DIST ' COMPARE FOR DIST 00835000
  836. CLCCONS CLC 0(0,R1),=C'CONSOLE ' COMPARE FOR CONSOLE 00836000
  837. MVCDIST MVC SAVEWRK8(0),0(R1) MOVE DIST CODE 00837000
  838. EJECT 00838000
  839. *. 00839000
  840. * 00840000
  841. * OPERATION OF GETFILE - 00841000
  842. * 00842000
  843. * 1. UPON ENTRY, GPR6 = ADDRESS OF A POINTER TO THE NEXT SFBLOK 00843000
  844. * TO TEST 00844000
  845. * 2. LOAD GPR7 WITH POINTER TO NEXT BLOK; IF ZERO, EXIT 00845000
  846. * 3. IF SAVEWRK2,3 EQUALS ZERO OR SFBUSER, GO TO STEP 4; 00846000
  847. * OTHERWISE GO TO STEP 6 00847000
  848. * 4. IF SAVEWRK1(1) EQUALS ZERO OR SFBCLAS,GO TO STEP 5; 00848000
  849. * OTHERWISE GO TO STEP 6 00849000
  850. * 5. IF SAVEWRK1+2(2) EQUALS ZERO OR SFBFILID, EXIT 00850000
  851. * 6. IF NO MATCH, GO TO STEP 2 00851000
  852. *. 00852000
  853. SPACE 00853000
  854. GETFILE EQU * HERE TO LOCATE THE REQUESTED FILE 00854000
  855. SPACE 00855000
  856. GF01 EQU * GPR7 = POINTER TO NEXT SFBLOK 00856000
  857. GF02 LR R6,R7 SFBLOK PRESENT ?? 00857000
  858. L R7,0(R7) 00858000
  859. LTR R7,R7 00859000
  860. BCR 8,R4 NO -RETURN TO CALLER WITH GPR7 ZERO 00860000
  861. SPACE 00861000
  862. GF03 TM SFBFLAG,SFBINUSE FILE IN USE ?? 00862000
  863. BO GF02 GET NEXT FILE 00863000
  864. CLI SAVEWRK2,X'40' USERID PRESENT ?? 00864000
  865. BNH GF04 NO -- USE ALL FILES 00865000
  866. CLC SAVEWRK2(8),SFBUSER USERID EQUALS ?? 00866000
  867. BNE GF02 NO 00867000
  868. SPACE 00868000
  869. GF04 CLI SAVEWRK1,X'00' SEARCH BY CLASS ?? 00869000
  870. BE GF05 NO 00870000
  871. CLI SAVEWRK1,C'*' ALL CLASS DEVICE ?? @VM01016 00871000
  872. BE GF05 YES, @VM01016 00872000
  873. CLC SAVEWRK1(1),SFBCLAS CLASS EQUALS ?? 00873000
  874. BNE GF02 NO - 00874000
  875. SPACE 00875000
  876. GF05 CLC SAVEWRK1+2(2),ZEROES SEARCH BY SPOOLID 00876000
  877. BE GF06 YES 00877000
  878. CLC SAVEWRK1+2(2),SFBFILID SPOOLID EQUAL ?? 00878000
  879. BNE GF02 NO - 00879000
  880. SPACE 00880000
  881. GF06 EQU * 00881000
  882. BR R4 RETURN TO CALLER 00882000
  883. EJECT 00883000
  884. *. 00884000
  885. * OPERATION OF GETDEVIC - 00885000
  886. * 00886000
  887. * 1. UPON ENTRY, THE FOLLOWING REGISTERS MUST BE LOADED - 00887000
  888. * GPR5 = THE DEVICE TYPE TO SEARCH FOR 00888000
  889. * GPR8 = ADDRESS OF VDEVBLOK AT WHICH TO START SEARCH 00889000
  890. * GPR10 = NUMBER OF VDEVBLOKS TO SEARCH 00890000
  891. * 2. ADD VDEVSIZE TO GPR8 AND DECREMENT GPR10; IF GPR10 = 0,EXIT 00891000
  892. * 3. TEST FOR DEVICE CLASS OF UNIT RECORD; IF NOT U/R, GO TO 2 00892000
  893. * 4. EXECUTE TM USING MASK IN GPR5 AGAINST VDEVTYPE; BRANCH 00893000
  894. * ON ONES BACK TO CALLER; OTHERWISE, GO TO STEP 2 00894000
  895. * 5. NOTE THAT GETDEVIC IS A 2ND LEVEL ROUTINE; LINKAGE IS VIA 00895000
  896. * GPR3 00896000
  897. *. 00897000
  898. SPACE 3 00898000
  899. GETDEVIC EQU * HERE TO LOCATE NEXT DEVICE FOR THIS TYPE 00899000
  900. SPACE 00900000
  901. * GPR5 = DEVICE TYPE TO SEARCH FOR 00901000
  902. * GPR8 = ADDRESS OF VDEVBLOK TO START SEARCH 00902000
  903. * GPR10 = NUMBER OF VDEVBLOKS TO SEARCH 00903000
  904. SPACE 00904000
  905. GD02 A R8,=A(VDEVSIZE*8) POINT TO NEXT DEVBLOK 00905000
  906. BCT R10,GD03 DECREMENT COUNT 00906000
  907. BR R3 COUNT IS ZERO, RETURN TO CALLER 00907000
  908. SPACE 00908000
  909. GD03 CLC VDEVADD,FFS ACTIVE DEVICE 00909000
  910. BE GD02 NO -- 00910000
  911. TM VDEVSTAT,VDEVDED DEDICATED TO REAL DEVICE ?? 00911000
  912. BO GD02 YES -- TRY NEXT 00912000
  913. TM VDEVTYPC,CLASURI INPUT UNIT RECORD ?? 00913000
  914. BZ GD04 NO - CHECK OUTPUT 00914000
  915. TM VDEVTYPE,TYPRDR IS IT A READER? @VA03722 00915000
  916. BZ GD02 NO, TRY NEXT BLOCK @VA03722 00916000
  917. EX R5,TMRDR VALID READER ?? 00917000
  918. BCR 7,R3 YES - 00918000
  919. B GD02 NO - TRY NEXT BLOK 00919000
  920. SPACE 00920000
  921. GD04 EQU * 00921000
  922. CLI VDEVTYPC,CLASURO OUTPUT CLASS ?? 00922000
  923. BNE GD05 NO -- 00923000
  924. TM VDEVTYPE,TYPPUN+TYPPRT TYPE PUNCH OR PRINTER 00924000
  925. BZ GD02 NO - 00925000
  926. EX R5,TMTYPE MATCH SEARCH DEVICE PUNCH OR PRINTER 00926000
  927. BZ GD02 NO 00927000
  928. BR R3 YES - 00928000
  929. SPACE 00929000
  930. GD05 CLI VDEVTYPC,CLASTERM CONSOLE CLASS ? 00930000
  931. BNE GD02 NO -- GET NEXT DEVICE 00931000
  932. CLI VDEVTYPE,TYP3210 CONSOLE TYPE ? 00932000
  933. BNE GD02 NO -- GET NEXT DEVICE 00933000
  934. EX R5,TMCON CONSOLE TYPE REQUESTED ? 00934000
  935. BZ GD02 NO -- GET NEXT DEVICE 00935000
  936. BR R3 RETURN TO CALLER 00936000
  937. SPACE 00937000
  938. EJECT 00938000
  939. *. 00939000
  940. * OPERATION OF GETNAME - 00940000
  941. * 00941000
  942. * 1. CALL DMKFREE FOR A 24 BYTE AREA FOR FNAME AND FTYPE 00942000
  943. * AND SAVE IN SAVEWRK4 00943000
  944. * 2. CALL DMKSCNFD TO LOCATE FNAME. IF MISSING OR INVALID, 00944000
  945. * EXIT GIVING MSG029E. OTHERWISE MOVE FNAME TO 00945000
  946. * THE ADDRESS IN SAVEWRK4. IF FNAME IS GREATER THAN 00946000
  947. * 8 BYTES RETURN TO CALLER. 00947000
  948. * 3. CALL DMKSCNFD TO LOCATE FTYPE, IF NONE, RETURN; 00948000
  949. * IF INVALID, EXIT GIVING MSG029E. 00949000
  950. * MOVE FTYPE TO ADDRESS IN SAVEWRK4+11 AND RETURN. 00950000
  951. * 00951000
  952. *. 00952000
  953. SPACE 3 00953000
  954. GETNAME EQU * HERE TO LOCATE FNAME FTYPE 00954000
  955. SPACE 00955000
  956. GN01 LA R0,3 LENGTH FOR 24 BYTE AREA 00956000
  957. CALL DMKFREE GET STORAGE FOR NEW FNAME FTYPE 00957000
  958. ST R1,SAVEWRK4 SAVE ADDRESS IN SAVEWRK4 00958000
  959. LR R2,R1 00959000
  960. MVI 0(R2),C' ' CLEAR 00960000
  961. MVC 1(23,R2),0(R2) AREA TO BLANKS 00961000
  962. SPACE 00962000
  963. GN02 CALL DMKSCNFD LOCATE FNAME 00963000
  964. BNZ MSG029E FNAME MISSING 00964000
  965. LR R14,R0 GET LENGTH COUNT 00965000
  966. BCTR R14,R0 -1 FOR MOVE 00966000
  967. CH R14,=H'23' LENGTH OVER 24 BYTES ?? 00967000
  968. BH MSG029E YES - INVALID 00968000
  969. SPACE 00969000
  970. EX R14,MVCFNAME MOVE FNAME AND MAYBE FTYPE 00970000
  971. C R14,F7 LENGTH OVER 8 BYTES ?? 00971000
  972. BCR 2,R4 YES - RETURN NO FTYPE 00972000
  973. SPACE 00973000
  974. GN03 CALL DMKSCNFD LOCATE FTYPE 00974000
  975. BCR 7,R4 NO FTYPE PRESENT - RETURN 00975000
  976. EJECT 00976000
  977. LR R14,R0 GET LENGTH OF FTYPE 00977000
  978. BCTR R14,R0 -1 FOR MOVE 00978000
  979. C R14,F7 OVER 8 CHARACTERS ?? 00979000
  980. BH MSG029E YES - INVALID FOR FTYPE 00980000
  981. EX R14,MVCFTYPE MOVE FTYPE 00981000
  982. BR R4 RETURN TO CALLER 00982000
  983. SPACE 2 00983000
  984. MVCFNAME MVC 0(0,R2),0(R1) MOVE FNAME 00984000
  985. MVCFTYPE MVC 12(0,R2),0(R1) MOVE FTYPE 00985000
  986. EJECT 00986000
  987. *. 00987000
  988. * OPERATION OF GETCHAIN - 00988000
  989. * 00989000
  990. * 1. IF GPR5 = 0, SET GPR6 = 0 AND EXIT; 00990000
  991. * 2. IF GPR6 = FFS, GO TO STEP 6; 00991000
  992. * 3. IF GPR5 HAS CSQRDR BIT ON,REMOVE BIT, GO TO STEP 7; 00992000
  993. * 4. IF GPR5 HAS TYPPRT BIT ON,REMOVE BIT, GO TO STEP 8; 00993000
  994. * 5. REMOVE TYPPUN BIT IN GPR5, SET GPR6 TO ZERO, EXIT 00994000
  995. * 6. IF GPR5 HAS CSQRDR BIT ON, LOAD GPR6 WITH ARSPRD, EXIT; 00995000
  996. * 7. IF GPR5 HAS TYPPRT BIT ON, LOAD GPR6 WITH ARSPPR, EXIT; 00996000
  997. * 8. IF GPR5 HAS TYPPUN BIT ON, LOAD GPR6 WITH ARSPPU,EXIT; 00997000
  998. * 9. SET GPR6 = 0, EXIT 00998000
  999. *. 00999000
  1000. SPACE 3 01000000
  1001. GETCHAIN EQU * HERE TO GET NEXT FILE CHAIN ANCHOR POINTER 01001000
  1002. SPACE 01002000
  1003. GC01 LTR R5,R5 FILE TYPE ZERO ?? 01003000
  1004. BNZ GC02 NO-- 01004000
  1005. SR R6,R6 YES - ZERO GPR6 01005000
  1006. BR R3 RETURN TO CALLER 01006000
  1007. SPACE 01007000
  1008. GC02 C R6,FFS 1ST TIME SWITCH ON ?? 01008000
  1009. LR R6,R5 SAVE DEVICE TYPE FOR CHANGE COMPARE 01009000
  1010. BE GC06 YES - DO NOT RESET ANY BITS, JUST 01010000
  1011. * LOAD GPR6 01011000
  1012. SPACE 01012000
  1013. GC03 N R5,=A(255-CSQRDR) REMOVE READER BIT 01013000
  1014. CR R6,R5 WAS IT ON ?? 01014000
  1015. BNE GC07 NO 01015000
  1016. SPACE 01016000
  1017. GC04 N R5,=A(255-TYPPRT) REMOVE PRINTER BIT 01017000
  1018. CR R6,R5 WAS IT ON ?? 01018000
  1019. BNE GC08 NO 01019000
  1020. SPACE 01020000
  1021. GC05 SR R5,R5 REMOVE PUNCH BIT 01021000
  1022. SR R6,R6 SET GPR6 TO ZERO 01022000
  1023. BR R3 RETURN TO CALLER - END OF CHAIN 01023000
  1024. SPACE 01024000
  1025. GC06 L R7,ARSPRD LOAD READER FILE CHAIN POINTER 01025000
  1026. * ANCHOR 01026000
  1027. EX R5,TMRDR READER BIT ON ?? 01027000
  1028. BCR 7,R3 YES - RETURN TO CALLER 01028000
  1029. SPACE 01029000
  1030. GC07 L R7,ARSPPR LOAD PRINTER FILE CHAIN POINTER 01030000
  1031. * ANCHOR 01031000
  1032. EX R5,TMPRT PRINTER BIT ON ?? 01032000
  1033. BCR 7,R3 YES - RETURN TO CALLER 01033000
  1034. SPACE 01034000
  1035. GC08 L R7,ARSPPU LOAD PUNCH FILE CHAIN POINTER ANCHOR 01035000
  1036. EX R5,TMPUN PUNCH BIT ON ?? 01036000
  1037. BCR 7,R3 YES - RETURN TO CALLER 01037000
  1038. SPACE 01038000
  1039. GC09 SR R6,R6 SET GPR6 = ZERO - ALL DONE 01039000
  1040. SR R7,R7 01040000
  1041. BR R3 RETURN TO CALLER 01041000
  1042. EJECT 01042000
  1043. **************************************** 01043000
  1044. * 01044000
  1045. * ERROR EXITS FROM DMKCSQ 01045000
  1046. * 01046000
  1047. **************************************** 01047000
  1048. SPACE 2 01048000
  1049. MSG003E EQU * HERE IF INVALID OPTION FOR THIS COMMAND 01049000
  1050. LA R2,003 ERROR MSG DMKCSQ003E 01050000
  1051. B EXIT8 EXIT TO ERROR MODULE 01051000
  1052. SPACE 2 01052000
  1053. MSG006E EQU * HERE IF DEVICE TYPE IS INVALID 01053000
  1054. LA R2,006 ERROR MSG DMKCSQ006E 01054000
  1055. LM R0,R1,SAVEWRK6 COUNT AND ADDRESS OF INVALID TYPE 01055000
  1056. B EXIT8 EXIT TO ERROR MODULE 01056000
  1057. SPACE 2 01057000
  1058. MSG007E EQU * HERE IF USERID IS INVALID 01058000
  1059. LA R2,007 ERROR MSG DMKCSQ007E 01059000
  1060. B EXIT8 01060000
  1061. SPACE 2 01061000
  1062. MSG013E EQU * HERE IF CONFLICTING OPTIONS 01062000
  1063. LA R2,013 ERROR MSG DMKCSQ013E 01063000
  1064. B EXIT8 01064000
  1065. SPACE 2 01065000
  1066. MSG020E EQU * HERE IF USERID IS MISSING OR INVALID 01066000
  1067. LA R2,020 ERROR MSG DMKCSQ020E 01067000
  1068. B EXIT8R1 EXIT TO ERROR MODULE 01068000
  1069. SPACE 2 01069000
  1070. MSG022E EQU * HERE IF VIRTUAL ADDRESS MISSING OR 01070000
  1071. * INVALID 01071000
  1072. LA R2,022 ERROR MSG DMKCSQ022E 01072000
  1073. B EXIT8R1 .. 01073000
  1074. SPACE 01074000
  1075. MSG028E EQU * HERE IF CLASS IS MISSING OR INVALID 01075000
  1076. LA R2,028 ERROR MSG DMKCSQ028E 01076000
  1077. B EXIT8R1 01077000
  1078. SPACE 01078000
  1079. MSG029E EQU * HERE IF FNAME FTYPE MISSING OR INVALID 01079000
  1080. LA R2,029 ERROR MSG DMKCSQ029E 01080000
  1081. B EXIT8R1 EXIT TO ERROR MODULE 01081000
  1082. SPACE 2 01082000
  1083. MSG030E EQU * HERE IF COPIES IS MISSING OR INVALID 01083000
  1084. LA R2,030 ERROR MSG DMKCSQ030E 01084000
  1085. B EXIT8R1 EXIT TO ERROR MODULE 01085000
  1086. SPACE 2 01086000
  1087. MSG032E EQU * HERE IF DISTCODE IS MISSING OR INVALID 01087000
  1088. LA R2,032 ERROR MSG DMKCSQ032E 01088000
  1089. B EXIT8R1 EXIT TO ERROR MODULE 01089000
  1090. SPACE 2 01090000
  1091. MSG040E EQU * HERE IF DEVICE DOES NOT EXIST 01091000
  1092. LA R2,040 ERROR MSG DMKCSQ040E 01092000
  1093. LM R0,R1,SAVEWRK6 COUNT AND ADDRESS OF OPTION 01093000
  1094. B EXIT8 01094000
  1095. SPACE 2 01095000
  1096. MSG053E EQU * HERE IF USERID NOT IN CP DIRECTORY 01096000
  1097. LA R2,053 ERROR MSG DMKCSQ053E 01097000
  1098. B EXIT8 01098000
  1099. EJECT 01099000
  1100. **************************************** 01100000
  1101. * 01101000
  1102. * FINAL EXIT BACK TO DMKCFM 01102000
  1103. * 01103000
  1104. **************************************** 01104000
  1105. SPACE 3 01105000
  1106. CSQEXIT EQU * HERE FOR NORMAL EXIT FROM DMKCSQ 01106000
  1107. SR R2,R2 CLEAR ERROR REGISTER 01107000
  1108. B EXIT1 NOW EXIT 01108000
  1109. SPACE 2 01109000
  1110. EXIT8R1 SR R1,R1 01110000
  1111. SR R0,R0 01111000
  1112. EXIT8 ICM R0,14,ID+3 MOVE IN MODULE ID 01112000
  1113. EXIT1 STM R0,R2,SAVEWRK5 SAVE CALL GPRS 01113000
  1114. L R1,SAVEWRK4 ADDRESS OF 24 BYTE AREA 01114000
  1115. LTR R1,R1 ADDRESS PRESENT ?? 01115000
  1116. BZ EXIT2 NO --- 01116000
  1117. LA R0,3 LENGTH OF AREA 01117000
  1118. CALL DMKFRET RETURN AREA TO FREE STORAGE 01118000
  1119. EXIT2 LM R0,R2,SAVEWRK5 RESTORE GPRS 01119000
  1120. LTR R2,R2 ERROR CODE PRESENT ?? 01120000
  1121. BNZ ERREXIT YES -- 01121000
  1122. EXIT EXIT NO ERROR 01122000
  1123. SPACE 01123000
  1124. ERREXIT CALL DMKERMSG EXIT TO MESSAGE MODULE 01124000
  1125. SPACE 01125000
  1126. * MODULE DMKERMSG WILL GIVE SVC16 AND RETURN CONTROL TO DMKCFM 01126000
  1127. EJECT 01127000
  1128. **************************************** 01128000
  1129. * 01129000
  1130. * MESSAGES AND CONSTANTS 01130000
  1131. * 01131000
  1132. **************************************** 01132000
  1133. SPACE 2 01133000
  1134. LTORG 01134000
  1135. EJECT 01135000
  1136. CSQRDR EQU X'20' 01136000
  1137. CSQCON EQU X'10' 01137000
  1138. SPACE 01138000
  1139. PSA , @V306638 01139000
  1140. COPY CONBUF @V306638 01140000
  1141. COPY DEVTYPES @V306638 01141000
  1142. COPY EQU @V306638 01142000
  1143. COPY IOBLOKS @V306638 01143000
  1144. COPY RBLOKS @V306638 01144000
  1145. COPY SAVE @V306638 01145000
  1146. COPY SPOOL @V306638 01146000
  1147. COPY UDIRECT @V306638 01147000
  1148. COPY VBLOKS @V306638 01148000
  1149. COPY VMBLOK @V306638 01149000
  1150. END 01150000