Table of Contents

DMKCSU Source

References

Source Listing

DMKCSU.ASSEMBLE.txt
  1. CSU TITLE 'DMKCSU (CP) VM/370 - RELEASE 6' 00001000
  2. ISEQ 73,80 VALIDATE SEQUENCING OF INPUT 00002000
  3. *. 00003000
  4. * MODULE NAME - 00004000
  5. * 00005000
  6. * DMKCSU 00006000
  7. * 00007000
  8. * FUNCTION - 00008000
  9. * 00009000
  10. * DMKCSU CONTAINS THE CHANGE COMMAND FOR CLASS G 00010000
  11. * AND CLASS D USERS. 00011000
  12. * 00012000
  13. * ATTRIBUTES - 00013000
  14. * 00014000
  15. * REENTRANT, PAGEABLE, CALLED VIA SVC 00015000
  16. * 00016000
  17. * ENTRY POINTS - 00017000
  18. * 00018000
  19. * DMKCSUCH - CHANGE COMMAND 00019000
  20. * 00020000
  21. * ENTRY CONDITIONS - 00021000
  22. * 00022000
  23. * GPR9 = ADDRESS OF THE COMMAND LINE BUFFER; MUST BE PRESERVED 00023000
  24. * FOR CALLS TO DMKSCNFD 00024000
  25. * GPR12 = ADDRESS OF ENTRY POINT 00025000
  26. * GPR13 = ADDRESS OF SAVEAREA 00026000
  27. * 00027000
  28. * EXIT CONDITIONS - 00028000
  29. * 00029000
  30. * NORMAL - 00030000
  31. * GPR2 = 0 00031000
  32. * 00032000
  33. * ERROR - 00033000
  34. * 00034000
  35. * GPR2 = CONTAINS THE BINARY MESSAGE NUMBER 00035000
  36. * - EITHER AN OPTION IS ILLEGAL OR SOME CONDITION 00036000
  37. * EXISTS THAT MAKES IT IMPOSSIBLE TO EXECUTE THE COMMAND 00037000
  38. * A MESSAGE IS TYPED TO DESCRIBE THE ERROR; THE ERROR 00038000
  39. * MESSAGES THAT MAY OCCUR ARE LISTED WITH EACH COMMAND 00039000
  40. EJECT 00040000
  41. * 00041000
  42. * CALLS TO OTHER ROUTINES - 00042000
  43. * 00043000
  44. * DMKSCNFD - SCAN THE COMMAND LINE BUFFER FOR OPTIONS 00044000
  45. * DMKSTKIO - TO STACK A IOBLOK 00045000
  46. * DMKSPLDL - DELETE PURGED FILES FROM THE SYSTEM 00046000
  47. * DMKCVTDB - CONVERT DECIMAL SPOOLID NUMBERS TO BINARY 00047000
  48. * DMKCVTBD - CONVERT BINARY TO DECIMAL 00048000
  49. * DMKERMSG - WRITE ERROR MESSAGES 00049000
  50. * DMKCSOSD - TO START PUNCH OR PRINTER 00050000
  51. * DMKSCNAU - TO LOCATE USERID VMBLOK 00051000
  52. * DMKQCNWT - TO WRITE A MESSAGE AT CONSOLE 00052000
  53. * DMKUDRFU - TO VERIFY A USER 00053000
  54. * DMKFREE - TO OBTAIN A BLOCK OF FREE STORAGE 00054000
  55. * DMKFRET - TO RETURN A BLOCK OF STORAGE 00055000
  56. * DMKCKSPL - CHECKPOINT THE SFBLOK 00056000
  57. * DMKRPAGT - READ IN THE FIRST DASD SPOOL FILE BUFFER 00057000
  58. * DMKRPAPT - WRITE OUT THE FIRST DASD SPOOL FILE BUFFER 00058000
  59. * DMKPGTVG - GET A PAGE OF VIRTUAL SYSTEM SPACE 00059000
  60. * DMKPGTVR - RELEASE A PAGE OF VIRTUAL SYSTEM SPACE 00060000
  61. * EXTERNAL REFERENCES - 00061000
  62. * 00062000
  63. * DMKRSPRD - (ARSPRD) READER FILE CHAIN ANCHOR 00063000
  64. * DMKRSPPR - (ARSPPR) PRINTER FILE CHAIN ANCHOR 00064000
  65. * DMKRSPPU - (ARSPPU) PUNCH FILE CHAIN ANCHOR 00065000
  66. * DMKRSPDL - SPOOL DELETE CHAIN ANCHOR 00066000
  67. * DMKVIOIN - IOBIRA FOR IOBLOK 00067000
  68. * 00068000
  69. * TABLES / WORKAREAS - 00069000
  70. * 00070000
  71. * IOBLOK 00071000
  72. * VDEVBLOK AND SFBLOKS ARE UPDATED, ALTERED OR DELETED 00072000
  73. * 00073000
  74. * THE SAVEWRK FIELDS IN THE STANDARD SAVEAREA ARE USED BY THE 00074000
  75. * OPTION PROCESSING SUBROUTINES FOR THE FOLLOWING VALUES - 00075000
  76. * 00076000
  77. * SAVEWRK1 - FILE OUTPUT CLASS (1 BYTE) 00077000
  78. * SAVEWRK1+1 - NUMBER OF COPIES (1 BYTE) 00078000
  79. * SAVEWRK1+2 - SPOOLID NUMBER (HALF-WORD) 00079000
  80. * SAVEWRK2,3 - USERID OF FILE'S OWNER 00080000
  81. * SAVEWRK4 - ADDRESS OF HOLDING AREA (48 BYTES) 00081000
  82. * SAVEWRK5 - USE VARIES WITH COMMAND 00082000
  83. * SAVEWRK6,7 - SAVE AREA FOR R0,R1 SCAN OPTIONS 00083000
  84. * SAVEWRK8,9 - USE VARIES WITH COMMAND 00084000
  85. * 00085000
  86. * HLDSECT - INTERNAL WORK AREA 00086000
  87. * 00087000
  88. * REGISTER USAGE - 00088000
  89. * 00089000
  90. * ALL SUBROUTINES IN THE MODULE CONFORM GENERALLY TO THIS USAGE; 00090000
  91. * ANY INDIVIDUAL DEVIATIONS OR EXTENSIONS ARE LISTED WITH THE 00091000
  92. * COMMAND DESCRIPTION 00092000
  93. * 00093000
  94. * GPR0 = LENGTH OF OPTION - RETURNED FROM DMKSCNFD 00094000
  95. * GPR1 = ADDRESS OF OPTION - RETURNED FROM DMKSCNFD 00095000
  96. * GPR2 = SCRATCH 00096000
  97. * GPR3 = INTERNAL LINKAGE - 2ND LEVEL 00097000
  98. * GPR4 = INTERNAL LINKAGE - 1ST LEVEL 00098000
  99. * GPR5 = DEVICE TYPE FLAGS - LOGICAL SUM OF TYPES 00099000
  100. * GPR6 = POINTER TO PREVIOUS SFBLOK ON CHAIN 00100000
  101. * GPR7 = SFBLOK BASE 00101000
  102. * GPR8 = VDEVBLOK BASE 00102000
  103. * GPR9 = INPUT COMMAND LINE ADDRESS 00103000
  104. * GPR10 = ADDRESS OF IOBLOK 00104000
  105. * GPR11 = VMBLOK BASE 00105000
  106. * GPR12 = DMKCSU BASE 00106000
  107. * GPR13 = SAVEAREA BASE 00107000
  108. * GPR14 = EXTERNAL LINKAGE 00108000
  109. * GPR15 = EXTERNAL LINKAGE 00109000
  110. * 00110000
  111. * NOTES - 00111000
  112. * 00112000
  113. * NONE 00113000
  114. * 00114000
  115. * OPERATION - 00115000
  116. * 00116000
  117. * EACH COMMAND PROCESSOR IS ENTERED VIA A CALL FROM DMKCFM. THE 00117000
  118. * PROCESSING LOGIC IS EMBODIED IN A SERIES OF INTERNAL CALLS TO 00118000
  119. * A SET OF OPTION PROCESSORS AND LIST SCANNERS. IN GENERAL, 00119000
  120. * THE OPTION PROCESSORS ARE CALLED WHEN IT IS KNOWN, EITHER BY 00120000
  121. * POSITION OR KEYWORD, WHAT TYPE OF OPTION MUST APPEAR NEXT ON 00121000
  122. * THE COMMAND LINE. THE OPTION PROCESSORS SCAN FOR THE NEXT 00122000
  123. * FIELD, VERIFY ITS VALIDITY, AND SET UP INFORMATION FOR USE BY 00123000
  124. * THE LIST SCANNERS. SINCE THE OPERATIONAL DESCRIPTION OF EACH 00124000
  125. * OF EACH COMMAND PROCESSOR REFERENCES THESE SUBROUTINES, A LIST 00125000
  126. * OF THEIR NAMES AND FUNCTIONS IS GIVEN HERE; A DESCRIPTION OF 00126000
  127. * THE OPERATIONAL LOGIC AND REGISTER SETS FOR EACH SUBROUTINE 00127000
  128. * APPEAR AT THE END OF THE MODULE 00128000
  129. * 00129000
  130. * OPTION PROCESSORS - 00130000
  131. * 1. GETUSER - SAVE THE USER ID OF THE FILE'S OWNER 00131000
  132. * 2. GETYPE - SAVE THE FILE TYPE (OR DEVICE TYPE) 00132000
  133. * 3. GETCOPY - LOCATE AND SAVE THE NUMBER OF COPIES REQUESTED 00133000
  134. * 4. GETNAME - LOCATE AND SAVE THE FILE NAME (AND TYPE) 00134000
  135. * 5. GETID - LOCATE AND SAVE THE SPOOLID OR CLASS 00135000
  136. * 6. GETCLASS - LOCATE AND VERIFY THE CLASS REQUESTED (2ND LEVEL 00136000
  137. * ROUTINE) 00137000
  138. * 7. GETCHARS - SAVE AND VERIFY CHARS VALUE SPECIFIED 00138000
  139. * 8. GETFLASH - SAVE AND VERIFY FLASH VALUES SPECIFIED 00139000
  140. * 9. GETCMOD - SAVE AND VERIFY COPY MOD NAME 00140000
  141. * 10. GETFCB - SAVE AND VERIFY FCB NAME SPECIFIED 00141000
  142. * 00142000
  143. * LIST SCANNING ROUTINES - 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. * 4. SETPEND - LOCATE AN AVAILABLE VIRTUAL READER AND 00148000
  149. * POST AN PENDING DEVICE END INTERRUPT 00149000
  150. * 00150000
  151. *. 00151000
  152. EJECT 00152000
  153. COPY OPTIONS 00153000
  154. SPACE 2 00154000
  155. COPY LOCAL OPTIONS 00155000
  156. DMKCSU CSECT 00156000
  157. SPACE 3 00157000
  158. EXTRN DMKSCNFD 00158000
  159. EXTRN DMKCKSPL @V304298 00159000
  160. EXTRN DMKCVTDB,DMKCVTBD,DMKSPLDL 00160000
  161. EXTRN DMKUDRFU,DMKERMSG 00161000
  162. EXTRN DMKCSOSD,DMKSCNAU 00162000
  163. EXTRN DMKVIOIN,DMKSTKIO @VM01016 00163000
  164. EXTRN DMKRPAGT,DMKRPAPT,DMKPGTVG,DMKPGTVR @V60B9BA 00164000
  165. SPACE 3 00165000
  166. USING PSA,R0 00166000
  167. USING SFBLOK,R7 00167000
  168. USING VDEVBLOK,R8 @VA08042 00168000
  169. USING BUFFER,R9 00169000
  170. USING VMBLOK,R11 00170000
  171. USING SAVEAREA,R13 00171000
  172. EJECT 00172000
  173. *. 00173000
  174. * SUBROUTINE NAME - 00174000
  175. * 00175000
  176. * DMKCSUCH 00176000
  177. * 00177000
  178. * FUNCTION - 00178000
  179. * 00179000
  180. * TO CHANGE ONE OR MORE OF THE CHARACTERISTICS OF A CLOSED SPOOL 00180000
  181. * FILE. THE CLASS,NUMBER OF COPIES, DISTRIBUTION CODE, 00181000
  182. * HOLD,NOHOLD AND/OR FILE NAME AND TYPE. 00182000
  183. * MULTIPLE FILES MAY BE CHANGED BY USING THE 'CLASS' OR 00183000
  184. * 'ALL' OPTION FOR SPOOLID. 00184000
  185. * 00185000
  186. * COMMAND LINE FORMAT - 00186000
  187. * 00187000
  188. * +--------+---------------------------------------------------+ 00188000
  189. * | CHANGE | <USERID> PRT CLASS A <CLASS B> <HOLD|NOHOLD> - | 00189000
  190. * | CH | <SYSTEM> PCH SPOOLID <COPY NN> <DIST DISTCODE> - | 00190000
  191. * | | RDR ALL <NAME FNAME <FTYPE>> - | 00191000
  192. * | | <NAME DSNAME> - | 00192000
  193. * | | <SYS|NOSYS> - | 00193000
  194. * | | <FLASH FFFF GG> <MODIFY MMMM> <FCB BBBB> - | 00194000
  195. * | | <CHARS CCCC> | 00195000
  196. * +--------+---------------------------------------------------+ 00196000
  197. * 00197000
  198. * READER PRINTER PUNCH CLASS ALL 00198000
  199. * R RDR P PRT PU PCH CL ALL 00199000
  200. * 00200000
  201. * NAME COPY HOLD NOHOLD DIST 00201000
  202. * NA CO HO NOH DI 00202000
  203. * 00203000
  204. * FLASH MODIFY FCB CHARS 00204000
  205. * FL MO FCB CH 00205000
  206. * 00206000
  207. * <USERID> AND <SYSTEM> ARE CLASS D USER OPTIONS 00207000
  208. * 00208000
  209. * DIST-CODE - 1 TO 8 CHARACTERS 00209000
  210. * FNAME - 1 TO 8 CHARACTERS 00210000
  211. * FTYPE - 1 TO 8 CHARACTERS 00211000
  212. * DSNAME - 1 TO 24 CHARACTERS 00212000
  213. * FFFF - 1 TO 4 CHARACTERS 00213000
  214. * GG - 1 TO 99 00214000
  215. * CCCC - 1 TO 4 CHARACTERS 00215000
  216. * BBBB - 1 TO 4 CHARACTERS 00216000
  217. * MMMM - 1 TO 4 CHARACTERS 00217000
  218. * 00218000
  219. * OPERATION - 00219000
  220. * 00220000
  221. * 1. IF CLASS D USER, CALL GETUSER. 00221000
  222. * 2. CALL GETYPE - LOCATE AND VALIDATE TYPE OPTION; 00222000
  223. * IF TYPE = ALL, EXIT GIVING ERROR MSG006E. 00223000
  224. * 3. CALL GETID - TO LOCATE AND VALIDATE ID OPTION; 00224000
  225. * IF NONE, EXIT GIVING ERROR MSG027E. 00225000
  226. * 4. CH01-CALL DMKSCNFD TO LOCATE NEXT OPTION; 00226000
  227. * IF NONE, GO TO STEP 10. 00227000
  228. * 5. CH02-IF OPTION = 'CLASS' CALL GETCLASSB TO LOCATE AND 00228000
  229. * VALIDATE CLASS CHARACTER AND GO TO STEP 4. 00229000
  230. * 6. CH03 IF OPTION = 'COPY', CALL GETCOPY TO LOCATE AND 00230000
  231. * VALIDATE NUMBER OF COPIES, GO TO STEP 4. 00231000
  232. * 7. CH05-IF OPTION = 'DIST', CALL DMKSCNFD TO LOCATE 00232000
  233. * DIST-CODE; IF NONE OR INVALID, EXIT GIVING 00233000
  234. * ERROR MSG032E; SAVE DIST-CODE IN SAVEWRK8,9 AND 00234000
  235. * GO TO STEP 4: OTHERWISE, CONTINUE. 00235000
  236. * 7A. CH05A-IF OPTION ='FLASH',CALL GETFLASH TO LOCATE AND 00236000
  237. * VALIDATE THE OVERLAY NAME AND NUMBER OF 00237000
  238. * COPIES TO BE FLASHED AND GO TO STEP 4;ELSE CONT. 00238000
  239. * 7B. CH05B-IF OPTION='CHARS',CALL GETCHARS TO LOCATE AND 00239000
  240. * VALIDATE THE CHARACTER ARRANGEMENT TABLE SPECIFIED. 00240000
  241. * THEN GO TO STEP 4; OTHERWISE CONTINUE. 00241000
  242. * 7C. CH05C-IF OPTION='MODIFY',CALL GETCMOD TO LOCATE AND 00242000
  243. * VALIDATE THE COPY MODIFICATION NAME AND 00243000
  244. * GO TO STEP 4; OTHERWISE CONTINUE. 00244000
  245. * 8. CH07-IF OPTION = 'NAME', CALL GETNAME TO LOCATE 00245000
  246. * SAVE FNAME AND FTYPE: GO TO STEP 4. 00246000
  247. * 8A. CH16A-IF OPTION='FCB',CALL GETFCB TO LOCATE AND 00247000
  248. * VALIDATE THE FCB SPECIFIED AND 00248000
  249. * GO TO STEP 4; OTHERWISE CONTINUE. 00249000
  250. * 9. CH04,CH06-IF OPTION = 'HOLD' AND/OR 'NOHOLD' SET 00250000
  251. * FLAG IN SAVEWRK5 AND GO TO STEP 4. 00251000
  252. * OTHERWISE, EXIT GIVING ERROR MSG003E. 00252000
  253. * 10. CH08-IF NO OPTIONS, EXIT GIVING ERROR MSG026E. 00253000
  254. * CALL GETFILE - FET SPOOL FILE: 00254000
  255. * IF NONE AND SEARCH IS BY SPOOLID, EXIT GIVING 00255000
  256. * ERROR MSG042E: OTHERWISE EXIT. 00256000
  257. * 11. CH09-CH14-UPDATE THE SPOOL FILE BLOK WITH 00257000
  258. * THE DATA ABTAINED FROM THE COMMAND LINE. 00258000
  259. * IN ADDITION, IF ANY PARAMETERS HAVE BEEN SPECIFIED 00259000
  260. * WHICH REQUIRE MODIFICATION OF THE FIRST DASD 00260000
  261. * SPOOL FILE BUFFER, READ THAT IN, MODIFY IT, AND 00261000
  262. * WRITE IT BACK OUT TO DASD. 00262000
  263. * IF READER FILE, BAL R4 SETPEND TO POST INTERRUPT. 00263000
  264. * IF SEARCH IS BY CLASS GO TO STEP 10: IF OUTPUT 00264000
  265. * FILE TYPE CALL DMKCSOSD TO START PUNCH OR PRINTER. 00265000
  266. * 00266000
  267. * 00267000
  268. * RESPONSE - 00268000
  269. * 00269000
  270. * NNNN FILES CHANGED 00270000
  271. * NO 00271000
  272. * 00272000
  273. * ERROR MESSAGES - 00273000
  274. * 00274000
  275. * DMKCSU003E INVALID OPTION - (OPTION) 00275000
  276. * DMKCSU006E INVALID DEVICE TYPE - (TYPE) 00276000
  277. * DMKCSU008E INVALID SPOOLID - (SPOOLID) 00277000
  278. * DMKCSU013E CONFLICTING OPTION - (OPTION) 00278000
  279. * DMKCSU026E OPERAND MISSING OR INVALID 00279000
  280. * DMKCSU027E SPOOLID MISSING OR INVALID 00280000
  281. * DMKCSU028E CLASS MISSING OR INVALID 00281000
  282. * DMKCSU029E FNAME FTYPE MISSING OR INVALID 00282000
  283. * DMKCSU030E COPIES MISSING OR INVALID 00283000
  284. * DMKCSU032E DISTCODE MISSING OR INVALID 00284000
  285. * DMKCSU035E DEVICE TYPE MISSING OR INVALID 00285000
  286. * DMKCSU042E SPOOLID NNNN DOES NOT EXIST 00286000
  287. *. 00287000
  288. EJECT 00288000
  289. ID DC CL8'DMKCSU' MODULE NAME 00289000
  290. SPACE 2 00290000
  291. DMKCSUCH RELOC 00291000
  292. SPACE 00292000
  293. BAL R4,CLEAR CLEAR SAVEWRK1,4-9,SAVEWRK2-3 TO 00293000
  294. * VMUSER AND SAVEWRK5(2) TO FFS 00294000
  295. MVC SAVEWRK8(8),BLANKS BLANK AREA FOR DIST CODE 00295000
  296. TM VMCLEVEL,VMCLASSD CLASS D USER ?? 00296000
  297. BZ CH00 NO -- 00297000
  298. L R3,FFS INDICATE TEST FOR USERID AND SYSTEM 00298000
  299. BAL R4,GETUSER GET USERID @V200930 00299000
  300. SPACE 00300000
  301. * BITS DEFINED IN SAVEWRK5+3 00301000
  302. * 00302000
  303. * X'40' AT LEAST ONE OPTION PRESENT 00303000
  304. * X'20' HOLD OPTION PRESENT 00304000
  305. * X'10' NOHOLD OPTION PRESENT 00305000
  306. * X'08' A FIRST DASD BUFFER FIELD HAS BEEN SPECIFIED 00306000
  307. * X'04' MULTIPLE COPIES IN 1 TRANSMISSION FOR 3800 PRESENT 00307000
  308. * X'02' SYS OPTION 00308000
  309. * X'01' NOSYS OPTION 00309000
  310. CH00 EQU * 00310000
  311. LA R0,HLDSIZE SIZE OF LOCAL WORK AREA @V60B9BA 00311000
  312. CALL DMKFREE GET THE SPACE NEEDED @V60B9BA 00312000
  313. ST R1,SAVEWRK4 SAVE THE POINTER TO IT @V60B9BA 00313000
  314. XC 0(HLDSIZE*8,R1),0(R1) CLEAR IT @V60B9BA 00314000
  315. BAL R4,GETYPE GET DEVICE TYPE @V200930 00315000
  316. SPACE 00316000
  317. EX R5,CLIALL TYPE = ALL ?? 00317000
  318. BE MSG006E YES - INVALID 00318000
  319. SPACE 00319000
  320. BAL R4,GETID GET SPOOL ID @V200930 00320000
  321. BNZ MSG027E NO OPTIONS FOUND 00321000
  322. SPACE 00322000
  323. * SCAN FOR 'CLASS' 'COPY' 'HOLD' 'NOHOLD' 'DIST' 'NAME' 00323000
  324. * 00324000
  325. CH01 EQU * 00325000
  326. CALL DMKSCNFD LOCATE NEXT OPTION. 00326000
  327. BNZ CH07A PROCESS OPTIONS 00327000
  328. SPACE 00328000
  329. CH02 EQU * 00329000
  330. LR R14,R0 GET COUNT 00330000
  331. BCTR R14,0 -1 00331000
  332. C R0,F1 LENGTH = 1 00332000
  333. BE MSG003E YES - INVALID OPTION 00333000
  334. SPACE 00334000
  335. OI SAVEWRK5+3,X'40' INDICATE AT LEAST ONE OPTION 00335000
  336. EX R14,CLCCLASS OPTION = CLASS ?? 00336000
  337. BNE CH03 NO- 00337000
  338. CLI SAVEWRK5+2,X'00' CLASS PRESENT ?? 00338000
  339. BNE MSG013E YES -- CONFLICTING OPTION 00339000
  340. SPACE 00340000
  341. BAL R3,GTCLASSB GET CLASS B AND VERIFY AND SAVE 00341000
  342. * SAVEWRK5+2(1) 00342000
  343. B CH01 00343000
  344. SPACE 00344000
  345. CH03 EQU * 00345000
  346. EX R14,CLCCOPY OPTION = COPY ?? 00346000
  347. BNE CH04 NO- 00347000
  348. CLI SAVEWRK1+1,X'00' COPIES PRESENT ?? 00348000
  349. BNE MSG013E YES -- CONFLICTING OPTION 00349000
  350. SPACE 00350000
  351. BAL R4,GETCOPY GET COPY @V200930 00351000
  352. B CH01 GO LOCATE NEXT OPTION 00352000
  353. SPACE 00353000
  354. CH04 EQU * 00354000
  355. EX R14,CLCHOLD OPTION = HOLD ?? 00355000
  356. BNE CH05 NO -- 00356000
  357. TM SAVEWRK5+3,X'30' HOLD OR NOHOLD SET ?? 00357000
  358. BNZ MSG013E YES -- CONFLICTING OPTION 00358000
  359. OI SAVEWRK5+3,X'20' INDICATE HOLD OPTION 00359000
  360. B CH01 00360000
  361. SPACE 00361000
  362. CH05 EQU * 00362000
  363. EX R14,CLCDIST OPTION = DIST ?? 00363000
  364. BNE CH05A NO -- @V60B9BA 00364000
  365. CLI SAVEWRK8,C' ' DIST CODE PRESENT ?? 00365000
  366. BH MSG013E YES -- CONFLICTING OPTION 00366000
  367. CALL DMKSCNFD GET DIST CODE 00367000
  368. BNZ MSG032E MISSING DIST CODE 00368000
  369. C R0,F8 IS LENGTH CORRECT 00369000
  370. BH MSG032E DIST CODE INVALID 00370000
  371. LR R14,R0 COUNT 00371000
  372. BCTR R14,0 -1 00372000
  373. EX R14,MVCDIST AND MOVE TO SAVEWRK8,9 00373000
  374. B CH01 00374000
  375. SPACE 00375000
  376. CH05A L R4,SAVEWRK4 GET THE WORK AREA @V60B9BA 00376000
  377. USING HLDAREA,R4 ADDRESSIBILITY @V60B9BA 00377000
  378. EX R14,CLCFLASH TEST FOR FLASH @V60B9BA 00378000
  379. BNE CH05B XFER IF NOT FLASH @V60B9BA 00379000
  380. CLI HLDFLASH,X'00' FLASH PRESENT? @V60B9BA 00380000
  381. BNE MSG013E YES - CONFLICTING OPTION @V60B9BA 00381000
  382. BAL R4,GETFLASH GET FLASH PARAMETERS @V60B9BA 00382000
  383. B CH01 SCAN FOR NEXT PARAMETER @V60B9BA 00383000
  384. SPACE 00384000
  385. CH05B EX R14,CLCCHARS TEST FOR CHARS @V60B9BA 00385000
  386. BNE CH05C XFER IF NOT CHARS @V60B9BA 00386000
  387. CLI HLDCHARS,X'00' CHARS PRESENT? @V60B9BA 00387000
  388. BNE MSG013E YES - CONFLICTING OPTION @V60B9BA 00388000
  389. BAL R4,GETCHARS GET CHARS PARAMETER @V60B9BA 00389000
  390. B CH01 SCAN FOR NEXT PARAMETER @V60B9BA 00390000
  391. SPACE 00391000
  392. CH05C EX R14,CLCCMOD TEST FOR MODIFY @V60B9BA 00392000
  393. BNE CH06 XFER IF NOT FLASH @V60B9BA 00393000
  394. CLI HLDCMOD,X'00' MODIFY PRESENT ? @V60B9BA 00394000
  395. BNE MSG013E YES - CONFLICTING OPTION @V60B9BA 00395000
  396. BAL R4,GETCMOD GET MODIFY PARAMETER @V60B9BA 00396000
  397. B CH01 SCAN FOR NEXT PARAMETER @V60B9BA 00397000
  398. SPACE 00398000
  399. CH06 EQU * @VM08881 00399000
  400. EX R14,CLCNAME OPTION = NAME ?? @VM08881 00400000
  401. BNE CH07 NO, TEST FOR 3 CHAR TYPES @VM08881 00401000
  402. BAL R4,GETNAME GET FILE NAME AND FILE TYPE @VM08881 00402000
  403. CALL DMKSCNFD NEXT ARG PLEASE @VM08881 00403000
  404. BZ MSG003E WASN'T SUPPOSED TO BE ONE @VM08881 00404000
  405. B CH07A PROCESS WHAT WE HAVE @VM08881 00405000
  406. SPACE 00406000
  407. CH07 EQU * @VM08881 00407000
  408. C R0,F3 LENGTH = 3 00408000
  409. BL MSG003E NO - LESS THAN 3, ERROR @VM08713 00409000
  410. EX R14,CLCNOHLD NOHOLD ?? 00410000
  411. BNE CH16A NO - @V60B9BA 00411000
  412. TM SAVEWRK5+3,X'30' NOHOLD OR HOLD SET ?? 00412000
  413. BNZ MSG013E YES -- CONFLICTING OPTION 00413000
  414. OI SAVEWRK5+3,X'10' SET NOHOLD 00414000
  415. B CH01 00415000
  416. CH16A EX R14,CLCFCB IS IT FCB OPTION @V60B9BA 00416000
  417. BNE CH16 XFER IF NOT @V60B9BA 00417000
  418. CLI HLDFCB,X'00' BEEN SPECIFIED BEFORE ? @V60B9BA 00418000
  419. BNE MSG013E YES - CONFLICTING OPTIONS @V60B9BA 00419000
  420. BAL R4,GETFCB LOCATE AND VERIFY FCB @V60B9BA 00420000
  421. B CH01 GET NEXT OPTION @V60B9BA 00421000
  422. DROP R4 NO LONGER NEEDED @V60B9BA 00422000
  423. SPACE 00423000
  424. CH16 EX R14,CLCSYS TEST FOR SYS @V200930 00424000
  425. BNE CH17 NO @V200930 00425000
  426. TM VMCLEVEL,VMCLASSD THIS A CLASS D USER ? @VA04090 00426000
  427. BNO MSG003E NO, INVALID OPTION @VA04090 00427000
  428. TM SAVEWRK5+3,X'03' SYS OR NOSYS ALREADY ?? @V200930 00428000
  429. BNZ MSG013E YES @V200930 00429000
  430. OI SAVEWRK5+3,X'02' SYS OPTION @V200930 00430000
  431. B CH01 GET NEXT OPTION @V200930 00431000
  432. CH17 EX R14,CLCNOSYS TEST FOR NOSYS @V200930 00432000
  433. BNE MSG003E NO, INVALID @V200930 00433000
  434. C R0,F5 IS IT LESS THAN 'NOSYS' @VM08713 00434000
  435. BL MSG003E YUP, ERROR @VM08713 00435000
  436. TM VMCLEVEL,VMCLASSD THIS A CLASS D USER ? @VA04090 00436000
  437. BNO MSG003E NO, INVALID OPTION @VA04090 00437000
  438. TM SAVEWRK5+3,X'03' SYS OR NOSYS ALREADY ?? @V200930 00438000
  439. BNZ MSG013E YES @V200930 00439000
  440. OI SAVEWRK5+3,X'01' NOSYS OPTION @V200930 00440000
  441. B CH01 GET NEXT @V200930 00441000
  442. SPACE 00442000
  443. CH07A EQU * 00443000
  444. BAL R4,COUNT ZERO COUNT FIELD 00444000
  445. TM SAVEWRK5+3,X'40' ANY OPTIONS ?? 00445000
  446. BZ MSG026E MISSING OPERANDS 00446000
  447. ST R7,SAVEWRK6 SAVE CHAIN ANCHOR @V304298 00447000
  448. SPACE 00448000
  449. CH08 EQU * 00449000
  450. SLR R10,R10 NOT COUNT ONLY IN GETFILE @VA08376 00450000
  451. BAL R4,GETFILE GET NEXT SPOOL FILE @V200930 00451000
  452. LTR R7,R7 SPOOL FILE FOUND ?? 00452000
  453. BNZ CH09 YES -- 00453000
  454. CLC SAVEWRK1+2(2),ZEROES SEARCH BY SPOOLID ?? 00454000
  455. BNE MSG042E YES -- SPOOLID NOT FOUND 00455000
  456. B CH14 ALL DONE - 00456000
  457. SPACE 00457000
  458. CH09 EQU * 00458000
  459. OI SFBFLAG,SFBINUSE TELL EVERYONE WE HAVE THE FILE @VA08075 00459000
  460. BAL R4,COUNT UPDATE FILE COUNT 00460000
  461. CLI SAVEWRK5+2,X'00' NEW CLASS PRESENT ?? 00461000
  462. BE CH09A NO 00462000
  463. MVC SFBCLAS(1),SAVEWRK5+2 MOVE IN NEW SFBCLASS 00463000
  464. SPACE 00464000
  465. CH09A EQU * 00465000
  466. CLI SAVEWRK1+1,X'00' NEW COPY PRESENT ?? 00466000
  467. BE CH10 NO --- 00467000
  468. MVC SFBCOPY+1(1),SAVEWRK1+1 MOVE IN NEW COPY 00468000
  469. SPACE 00469000
  470. CH10 EQU * 00470000
  471. TM SAVEWRK5+3,X'20' HOLD ?? 00471000
  472. BZ CH10B NO -- 00472000
  473. OI SFBFLAG,SFBUHOLD SET USER HOLD STATUS 00473000
  474. CH10B TM SAVEWRK5+3,X'10' NOHOLD ?? 00474000
  475. BZ CH11 NO -- 00475000
  476. NI SFBFLAG,X'FF'-SFBUHOLD RESET USER HOLD STATUS 00476000
  477. CH11 TM SAVEWRK5+3,X'02' SYS OPTION ?? @V200930 00477000
  478. BZ CH10C NO, TEST FOR NOSYS @V200930 00478000
  479. OI SFBFLAG,SFBSHOLD SET SYS HOLD @V200930 00479000
  480. CH10C TM SAVEWRK5+3,X'01' NOSYS OPTION ?? @V200930 00480000
  481. BZ CH11A NO, CONT @V200930 00481000
  482. NI SFBFLAG,X'FF'-SFBSHOLD RESET SYS HOLD @V200930 00482000
  483. CH11A DS 0H @V200930 00483000
  484. CLI SAVEWRK8,C' ' NEW DISTRIBUTION CODE PRESENT ?? 00484000
  485. BE CH12 NO -- 00485000
  486. MVC SFBDIST(8),SAVEWRK8 MOVE IN NEW DIST CODE 00486000
  487. SPACE 00487000
  488. CH12 EQU * 00488000
  489. L R14,SAVEWRK4 ADDRESS OF FNAME FTYPE 00489000
  490. CLI 0(R14),X'00' FNAME FTYPE PRESENT ?? @V60B9BA 00490000
  491. BE CH12A NO --- CONT @V60B9BA 00491000
  492. MVC SFBFNAME(24),0(R14) MOVE FNAME FTYPE FROM COMMAND LINE 00492000
  493. SPACE 00493000
  494. CH12A TM SAVEWRK5+3,X'08' ANYTHING IN SPLINK CHANGED? @V60B9BA 00494000
  495. BZ CH13 XFER IF NOT @V60B9BA 00495000
  496. SPACE 00496000
  497. * THE FIRST DASD BUFFER MUST NOW BE READ IN TO UPDATE ANY FIELDS 00497000
  498. * THAT MIGHT HAVE BEEN CHANGED. 00498000
  499. SPACE 00499000
  500. L R4,SAVEWRK4 POINT TO WORK AREA @V60B9BA 00500000
  501. USING HLDAREA,R4 ADDRESSIBILITY @V60B9BA 00501000
  502. CALL DMKPGTVG RESERVE SYSTEM VIRT PAGE @V60B9BA 00502000
  503. ST R1,HLDPTR SAVE THE ADDRESS OF IT @V60B9BA 00503000
  504. L R0,SFBSTART DASD ADDRESS OF 1ST BUFFER @V60B9BA 00504000
  505. CALL DMKRPAGT,PARM=(BRING+SYSTEM) BRING IT IN @V60B9BA 00505000
  506. BNZ MSG424E PAGING ERROR - QUIT @V60B9BA 00506000
  507. USING SPLINK,R2 ADDRESSIBILITY TO SPLINK @V60B9BA 00507000
  508. CLI SAVEWRK1+1,X'00' NEW COPY PRESENT ? @V60B9BA 00508000
  509. BE CH12C XFER IF NOT @V60B9BA 00509000
  510. TM SAVEWRK5+3,X'04' SPECIAL COPY SET ? @V60B9BA 00510000
  511. BZ CH12B XFER IF NOT @V60B9BA 00511000
  512. OI SPFLAG1,SPCOPYFG SET IT THEN @V60B9BA 00512000
  513. B CH12C AND CONTINUE @V60B9BA 00513000
  514. CH12B NI SPFLAG1,X'FF'-SPCOPYFG RESET THE FLAG @V60B9BA 00514000
  515. SPACE 00515000
  516. CH12C CLI HLDCHARS,X'00' NEW CHARS PRESENT ? @V60B9BA 00516000
  517. BE CH12D XFER IF NOT @V60B9BA 00517000
  518. MVC SPCHAR,HLDCHARS MOVE IN THE NEW VALUE @V60B9BA 00518000
  519. CLC SPCHAR,=C'NULL' NULL VALUE SPECIFIED ? @V60B9BA 00519000
  520. BNE CH12D XFER IF NOT @V60B9BA 00520000
  521. MVC SPCHAR,ZEROES NULLIFY PREVIOUS SETTING @V60B9BA 00521000
  522. SPACE 00522000
  523. CH12D CLI HLDFCB,X'00' NEW FCB PRESENT ? @V60B9BA 00523000
  524. BE CH12E XFER IF NOT @V60B9BA 00524000
  525. MVC SPFCB,HLDFCB MOVE IN THE NEW VALUE @V60B9BA 00525000
  526. CLC SPFCB,=C'NULL' NULL VALUE SPECIFIED? @V60B9BA 00526000
  527. BNE CH12E XFER IF NOT @V60B9BA 00527000
  528. MVC SPFCB,ZEROES NULLIFY PREVIOUS SETTING V60B9BA 00528000
  529. SPACE 00529000
  530. CH12E CLI HLDFLASH,X'00' NEW FLASH PRESENT ? @V60B9BA 00530000
  531. BE CH12F XFER IF NOT @V60B9BA 00531000
  532. MVC SFBFLASH,HLDFLASH MOVE IN THE FLASH NAME @V60B9BA 00532000
  533. MVC SPFLSHC,HLDFLSHC MOVE IN THE FLASH COUNT @V60B9BA 00533000
  534. CLI SPFLSHC,X'00' NEW COUNT ZERO ? @V60B9BA 00534000
  535. BNE CH12F XFER IF NOT @V60B9BA 00535000
  536. XC SFBFLASH,SFBFLASH NULLIFY THE FLASH NAME @V60B9BA 00536000
  537. SPACE 00537000
  538. CH12F CLI HLDCMOD,X'00' NEW MODIFY PRESENT ? @V60B9BA 00538000
  539. BE CH12G XFER IF NOT @V60B9BA 00539000
  540. MVC SPCMOD,HLDCMOD MOVE IT IN @V60B9BA 00540000
  541. CLC SPCMOD,=C'NULL' NULL VALUE SPECIFIED ? @V60B9BA 00541000
  542. BNE CH12G XFER IF NOT @V60B9BA 00542000
  543. MVC SPCMOD,ZEROES NULLIFY PREVIOUS SETTING @V60B9BA 00543000
  544. SPACE 00544000
  545. DROP R2 00545000
  546. CH12G L R0,SFBSTART DASD ADDR OF 1ST BUFFER @V60B9BA 00546000
  547. L R1,HLDPTR ADDR OF SYSTEM VIRT PAGE @V60B9BA 00547000
  548. CALL DMKRPAPT,PARM=SYSTEM WRITE IT OUT @V60B9BA 00548000
  549. L R1,HLDPTR ADDR OF SYSTEM VIRT PAGE @V60B9BA 00549000
  550. SR R0,R0 DUMMY DASD ADDRESS @V60B9BA 00550000
  551. CALL DMKRPAGT,PARM=SYSTEM RELEASE CORE PAGE @V60B9BA 00551000
  552. CALL DMKPGTVR RETURN SYSTEM VIRT PAGE @V60B9BA 00552000
  553. SPACE 00553000
  554. DROP R4 @V60B9BA 00554000
  555. CH13 DS 0H @VA07708 00555000
  556. CALL DMKCKSPL,PARM=CHGSFB CHECKPOINT @VA07708 00556000
  557. EX R5,TMRDR READER FILE ? @VA07708 00557000
  558. BZ CH13C NO - CHECK FOR MORE @VA01375 00558000
  559. CH13A TM SAVEWRK5+3,X'11' NOHOLD OR NOSYS ?? @VA01375 00559000
  560. BNZ CH13B YES - POST DEVICE END INTERRUPT @VA01375 00560000
  561. CLI SAVEWRK5+2,X'00' CLASS PRESENT ?? @VA01375 00561000
  562. BE CH13C NO - CHECK FOR MORE FILES @VA01375 00562000
  563. CH13B EQU * @VA07456 00563000
  564. TM SFBFLAG,SFBUHOLD+SFBSHOLD HELD FILE ?? @VA07456 00564000
  565. BNZ CH13C YES DO NOT GEN AN INTERUPT @VA07456 00565000
  566. BAL R4,SETPEND POST READER WITH D. E. @VA07456 00566000
  567. CH13C DS 0H ANY MORE ? @VA07708 00567000
  568. NI SFBFLAG,255-SFBINUSE WE ARE DONE WITH FILE @VA08075 00568000
  569. CLC SAVEWRK1+2(2),ZEROES SEARCH BY SPOOLID ? @V304298 00569000
  570. BNE CH14 XFER IF SO @V304298 00570000
  571. LR R2,R7 SAVE CURRENT SFBLOK @V304298 00571000
  572. L R7,SAVEWRK6 START AT TOP OF CHAIN @V304298 00572000
  573. CH13D L R7,0(R7) GET NEXT SPOOL FILE @V304298 00573000
  574. LTR R7,R7 ANY AROUND? @V304298 00574000
  575. BZ CH14 XFER IF NOT @V304298 00575000
  576. CR R7,R2 BACK TO CURRENT ONE? @V304298 00576000
  577. BE CH08 XFER IF SO @V304298 00577000
  578. B CH13D TRY AGAIN IF NOT @V304298 00578000
  579. CH14 EX R5,TMRDR TYPE = RDR ?? 00579000
  580. BO CH14B YES -- EXIT 00580000
  581. TM SAVEWRK5+3,X'11' NOHOLD OR NOSYS ?? @V200930 00581000
  582. BNZ CH14A YES, START PERHAPS @V200930 00582000
  583. CLI SAVEWRK5+2,X'00' CLASS PRESENT ?? 00583000
  584. BE CH14B NO -- EXIT 00584000
  585. CH14A EQU * 00585000
  586. CALL DMKCSOSD START PUNCH OR PRINTER 00586000
  587. * IF NOT ACTIVE 00587000
  588. CH14B B CSUEXIT 00588000
  589. SPACE 3 00589000
  590. * ***EXECUTED INSTRUCTIONS*** 00590000
  591. CLIALL CLI =AL1(CSURDR+TYPPRT+TYPPUN),X'00' MASK = READER PRINTER 00591000
  592. * PUNCH 00592000
  593. TMRDR TM =AL1(CSURDR),X'00' MASK = READER 00593000
  594. TMPRT TM =AL1(TYPPRT),X'00' MASK = PRINTER 00594000
  595. TMPUN TM =AL1(TYPPUN),X'00' MASK = PUNCH 00595000
  596. SPACE 00596000
  597. CNTMSG EQU * NUMBER OF FILES PROCESSED MESSAGE 00597000
  598. MSGCNT DC CL5' ' PLACE FOR COUNT OR NO 00598000
  599. MSGFILE DC CL6' ' FOR FILES OR FILE 00599000
  600. MSGCMD DC CL11' ' PLACE FOR COMMAND @VA04869 00600000
  601. CNTMSGL EQU *-CNTMSG LENGTH OF MESSAGE 00601000
  602. DS 0H 00602000
  603. EJECT 00603000
  604. *. 00604000
  605. **************************************** 00605000
  606. * 00606000
  607. * SUBROUTINES 00607000
  608. * 00608000
  609. **************************************** 00609000
  610. * 00610000
  611. * 00611000
  612. * 00612000
  613. * OPERATION OF GETUSER - 00613000
  614. * 00614000
  615. * 1. CALL DMKSCNFD TO LOCATE USERID: 00615000
  616. * IF NONE, EXIT GIVING ERROR MSG020E. 00616000
  617. * 2. IF GPR3 = FFS AND OPTION = 'SYSTEM', RETURN TO CALLER 00617000
  618. * 3. CALL DMKUDRFU: VERIFY USERID. 00618000
  619. * IF INVALID AND GPR3 = FFS, RETURN TO CALLER 00619000
  620. * IF INVALID OR MISSING EXIT GIVING ERROR MSG020E. 00620000
  621. * 4. MOVE USERID TO SAVEWRK2,3 AND RETURN TO CALLER. 00621000
  622. *. 00622000
  623. SPACE 3 00623000
  624. GETUSER EQU * HERE TO MOVE USERID TO SAVEWRK2,3 00624000
  625. SPACE 00625000
  626. GU01 EQU * 00626000
  627. C R3,FFS TEST FOR 'SYSTEM' OR 1ST USERID ? 00627000
  628. BNE *+10 NO -- 00628000
  629. MVC SAVEWRK6(8),BUFNXT-BUFFER(R9) SAVE SCAN POINTERS 00629000
  630. CALL DMKSCNFD LOCATE USERID 00630000
  631. BZ GU02 OPTION PRESENT 00631000
  632. C R3,FFS TEST FOR SYSTEM ?? 00632000
  633. BE GU02C YES -- 00633000
  634. B MSG020E USERID MISSING 00634000
  635. SPACE 00635000
  636. GU02 MVC SAVEWRK2(8),BLANKS RESET USERID SAVE AREA 00636000
  637. C R0,F8 LENGTH GREATER THAN EIGHT ?? 00637000
  638. BNH GU02A 00638000
  639. C R3,FFS TEST FOR 'SYSTEM' OR FIRST USERID ?? 00639000
  640. BE GU02C YES -- 00640000
  641. B MSG007E INVALID USERID MESSAGE 00641000
  642. SPACE 00642000
  643. GU02A C R3,FFS TEST FOR 'SYSTEM' ?? 00643000
  644. BNE GU02B NO -- 00644000
  645. C R0,F6 LENGTH OF 'SYSTEM' 00645000
  646. BNE GU02B NO -- WRONG LENGTH 00646000
  647. CLC =C'SYSTEM',0(R1) OPTION = 'SYSTEM' ?? 00647000
  648. BNE GU02B NO -- CONT 00648000
  649. BALR R3,R4 RESET GPR3 AND RETURN 00649000
  650. SPACE 00650000
  651. GU02B SR R2,R2 PARM REG 00651000
  652. CALL DMKUDRFU VERIFY USER 00652000
  653. BZ GU03 VALID USERID 00653000
  654. TM SAVEWRK5+3,X'40' IS IT A RECLAIM FUNCTION ?? @V200930 00654000
  655. BZ GU02D NO, CONT @V200930 00655000
  656. C R0,F3 IS IT 3 CHARS ?? @V200930 00656000
  657. BNE GU02D NO, CONT @V200930 00657000
  658. CLC 0(3,R1),=CL3'ALL' IS IT ALL OPTION ?? @V200930 00658000
  659. BNE GU02D NO, CONT @V200930 00659000
  660. BALR R3,R4 RETURN WITH USERID BLANK @V200930 00660000
  661. GU02D DS 0H @V200930 00661000
  662. C R3,FFS CLASS D WITH USERID ?? 00662000
  663. BNE MSG053E NO -- INDICATE ERROR 00663000
  664. GU02C MVC SAVEWRK2(8),VMUSER MOVE IN CLASS D USERID 00664000
  665. MVC BUFNXT-BUFFER(8,R9),SAVEWRK6 RESET SCAN POINTERS 00665000
  666. BR R4 RETURN TO CALLER 00666000
  667. GU03 LR R14,R0 COUNT 00667000
  668. BCTR R14,0 -1 00668000
  669. EX R14,MVCID MOVE USER ID FROM COMMAND LINE TO 00669000
  670. * SAVEWRK2,3 00670000
  671. BALR R3,R4 RESET GPR3 AND RETURN TO CALLER 00671000
  672. SPACE 00672000
  673. MVCID MVC SAVEWRK2(0),0(R1) ***EXECUTED*** 00673000
  674. SPACE 3 00674000
  675. CLEAR XC SAVEWRK4(24),SAVEWRK4 CLEAR SAVEWRK AREA 00675000
  676. XC SAVEWRK1(4),SAVEWRK1 00676000
  677. MVC SAVEWRK2(8),VMUSER MOVE IN USERID 00677000
  678. MVC SAVEWRK5(2),FFS SET TO X'FFFF' 00678000
  679. BR R4 RETURN TO CALLER 00679000
  680. SPACE 3 00680000
  681. COUNT EQU * HERE TO UPDATE FILE COUNT 00681000
  682. LH R14,SAVEWRK5 GET COUNT 00682000
  683. LA R14,1(R14) UPDATE BY ONE AND 00683000
  684. STH R14,SAVEWRK5 STORE 00684000
  685. BR R4 RETURN TO CALLER 00685000
  686. EJECT 00686000
  687. *. 00687000
  688. * 00688000
  689. * OPERATION OF GETYPE - 00689000
  690. * 00690000
  691. * 1. CALL DMKSCNFD TO LOCATE DEVICE TYPE FIELD 00691000
  692. * 2. IF OPTION = 'READER', 'PRINT', 'PUNCH' OR 'ALL', SET 00692000
  693. * GPR5 = APPROPRIATE DEVICE TYPE AND GO TO STEP 3. 00693000
  694. * IF OPTION = 'ALL', SET GPR5 EQUAL TO CSURDR+TYPPRT+ 00694000
  695. * TYPPUN, AND GO TO STEP 3. 00695000
  696. * IF TEST FOR SYSTEM OR 1ST USERID, EXIT GIVING MSG003E. 00696000
  697. * OTHERWISE EXIT GIVING MSG0006E. 00697000
  698. * 3. SET GPR6 TO FFS, CALL GETCHAIN (GPR6 WILL BE FILLED BY 00698000
  699. * GETCHAIN WITH THE APPROPRIATE FILE CHAIN ANCHOR) 00699000
  700. * 4. EXIT 00700000
  701. *. 00701000
  702. SPACE 3 00702000
  703. GETYPE EQU * 00703000
  704. SPACE 00704000
  705. GT01 LA R5,CSURDR+TYPPRT+TYPPUN SET FOR ALL TYPE 00705000
  706. CALL DMKSCNFD LOCATE DEVICE TYPE FIELD 00706000
  707. STM R0,R1,SAVEWRK6 SAVE COUNT AND ADDRESS OF TYPE 00707000
  708. BZ GT02 OPTION PRESENT 00708000
  709. C R3,FFS CLASS D USER ?? 00709000
  710. BE MSG026E YES -- OPERAND MISSING 00710000
  711. B MSG035E DEVICE TYPE MISSING 00711000
  712. SPACE 00712000
  713. GT02 EQU * 00713000
  714. * GPR1 ADDRESS OF TYPE 00714000
  715. LR R14,R0 GET OPTION COUNT 00715000
  716. BCTR R14,0 -1 00716000
  717. C R0,F2 COUNT LENGTH OF 2 00717000
  718. BE GT02A VALID FOR PUNCH 00718000
  719. BL GT02B VALID FOR READER PRINTER 00719000
  720. EX R14,CLCALL ALL ?? 00720000
  721. BE DEVIC YES 00721000
  722. LA R5,CSURDR SET R5 TO READER TYPE 00722000
  723. EX R14,CLCRDR RDR ?? 00723000
  724. BE DEVIC YES 00724000
  725. LA R5,TYPPRT PRINTER MASK 00725000
  726. EX R14,CLCPRT PRT ?? 00726000
  727. BE DEVIC YES - 00727000
  728. SPACE 00728000
  729. LA R5,TYPPUN SET GPR5 TO PUNCH TYPE 00729000
  730. EX R14,CLCPCH PCH ?? 00730000
  731. BE DEVIC YES 00731000
  732. GT02A LA R5,TYPPUN PUNCH MASK 00732000
  733. EX R14,CLCPUN PUNCH ?? 00733000
  734. BE DEVIC YES - 00734000
  735. SPACE 00735000
  736. GT02B LA R5,TYPPRT SET GPR5 TO PRINTER TYPE 00736000
  737. EX R14,CLCPRINT PRINTER ?? 00737000
  738. BE DEVIC YES - 00738000
  739. SPACE 00739000
  740. LA R5,CSURDR TYPE MASK FOR READER 00740000
  741. EX R14,CLCREAD READER ?? 00741000
  742. BE DEVIC 00742000
  743. C R3,FFS TEST FOR 'SYSTEM' OR 1ST USERID ? 00743000
  744. BE MSG003E YES -- INVALID OPTION 00744000
  745. B MSG006E INVALID DEVICE TYPE 00745000
  746. SPACE 00746000
  747. DEVIC EQU * HERE TO SET UP FILE POINTER 00747000
  748. SPACE 00748000
  749. GT05 L R6,FFS SET 1ST TIME SWITCH FOR GETCHAIN 00749000
  750. BAL R3,GETCHAIN GET NEXT ORDERED CHAIN @V200930 00750000
  751. SPACE 00751000
  752. GT06 CR R2,R2 SET CC = ZERO 00752000
  753. BR R4 RETURN TO CALLER 00753000
  754. SPACE 3 00754000
  755. SPACE 3 00755000
  756. CLCALL CLC 0(0,R1),=C'ALL ' COMPARE FOR ALL 00756000
  757. CLCRDR CLC 0(0,R1),=C'RDR ' COMPARE FOR RDR 00757000
  758. CLCPCH CLC 0(0,R1),=C'PCH ' COMPARE FOR PCH 00758000
  759. CLCPRT CLC 0(0,R1),=C'PRT ' COMPARE FOR PRT 00759000
  760. CLCPRINT CLC 0(0,R1),=C'PRINTER ' COMPARE FOR PRINTER 00760000
  761. CLCPUN CLC 0(0,R1),=C'PUNCH ' COMPARE FOR PUNCH 00761000
  762. CLCREAD CLC 0(0,R1),=C'READER ' COMPARE FOR READER 00762000
  763. CLCCLASS CLC 0(0,R1),=C'CLASS ' COMPARE FOR CLASS 00763000
  764. CLCHOLD CLC 0(0,R1),=C'HOLD ' COMPARE FOR HOLD 00764000
  765. CLCNOHLD CLC 0(0,R1),=C'NOHOLD ' COMPARE FOR NOHOLD 00765000
  766. CLCSYS CLC 0(0,R1),=C'SYS ' COMPARE FOR SYS @V200930 00766000
  767. CLCNOSYS CLC 0(0,R1),=C'NOSYS ' COMPARE FOR NOSYS @V200930 00767000
  768. CLCCOPY CLC 0(0,R1),=C'COPY ' COMPARE FOR COPY 00768000
  769. CLCNAME CLC 0(0,R1),=C'NAME ' COMPARE FOR NAME 00769000
  770. CLCDIST CLC 0(0,R1),=C'DIST ' COMPARE FOR DIST 00770000
  771. MVCDIST MVC SAVEWRK8(0),0(R1) MOVE DIST CODE 00771000
  772. CLCCHARS CLC 0(0,R1),=C'CHARS ' COMPARE FOR CHARS @V60B9BA 00772000
  773. CLCFLASH CLC 0(0,R1),=C'FLASH ' COMPARE FOR FLASH @V60B9BA 00773000
  774. CLCCMOD CLC 0(0,R1),=C'MODIFY ' COMPARE FOR MODIFY @V60B9BA 00774000
  775. CLCFCB CLC 0(0,R1),=C'FCB ' COMPARE FOR FCB @V60B9BA 00775000
  776. EJECT 00776000
  777. *. 00777000
  778. * OPERATION OF GETCLASS - 00778000
  779. * 00779000
  780. * 1. CALL DMKSCNFD TO LOCATE THE DESIRED CLASS 00780000
  781. * 2. VERIFY THAT ONLY ONE CLASS IS GIVEN, AND TRT THE CLASS 00781000
  782. * AGAINST A TABLE OF VALID CLASSES TO VERIFY ITS VALIDITY; 00782000
  783. * THE FUNCTION TABLE IS SET TO STORE THE VALID CLASS IN GPR2 00783000
  784. * IF CLASS IS MISSING OR INVALID, EXIT GIVING MSG028E. 00784000
  785. * 3. IF ENTRY IS GTCLASSB, STORE CLASS IN SAVEWRK8, 00785000
  786. * OTHERWISE STORE THE CLASS IN SAVEWRK1 AND EXIT. 00786000
  787. * 4. NOTE THAT GETCLASS IS A 2ND LEVEL ROUTINE; LINKAGE IS VIA 00787000
  788. * GPR3 00788000
  789. *. 00789000
  790. SPACE 3 00790000
  791. GTCLASSB MVI SAVEWRK5+2,X'FF' INDICATE CLASS NOT SPOOLID 00791000
  792. GETCLASS EQU * HERE TO LOCATE AND VERIFY CLASS 00792000
  793. SPACE 00793000
  794. GCL01 CALL DMKSCNFD 00794000
  795. BNZ MSG028E CLASS MISSING - EXIT 00795000
  796. SPACE 00796000
  797. GCL02 C R0,F1 MUST BE ONLY ON CLASS COUNT=1 00797000
  798. BNE MSG028E NO-- 00798000
  799. CLI 0(R1),C'A' CLASS LOWER THAN A 00799000
  800. BL MSG028E YES - INVALID CLASS 00800000
  801. ST R2,TEMPR2 SAVE GPR2 00801000
  802. TRT 0(1,R1),CLTABLE CLASS VALID ?? 00802000
  803. BH GCL03 VALID 00803000
  804. B MSG028E NO - INVALID CLASS 00804000
  805. SPACE 00805000
  806. GCL03 CLI SAVEWRK5+2,X'FF' STORE CLASS IN SAVEWRK5+2 ?? 00806000
  807. BNE GCL04 NO STORE IN SAVEWRK1 00807000
  808. STC R2,SAVEWRK5+2 SAVE CLASS CHARACTER 00808000
  809. B GCL05 00809000
  810. SPACE 00810000
  811. GCL04 EQU * 00811000
  812. STC R2,SAVEWRK1 SAVE CLASS 00812000
  813. GCL05 CR R1,R1 CC = ZERO 00813000
  814. L R2,TEMPR2 RESTORE GPR2 00814000
  815. BR R3 RETURN TO CALLER 00815000
  816. SPACE 3 00816000
  817. ORG *-193 00817000
  818. CLTABLE EQU * 00818000
  819. ORG 00819000
  820. DC C'ABCDEFGHI' 00820000
  821. DC XL7'00' 00821000
  822. DC C'JKLMNOPQR' 00822000
  823. DC XL8'00' 00823000
  824. DC C'STUVWXYZ' 00824000
  825. DC XL6'00' 00825000
  826. DC C'0123456789' 00826000
  827. DC XL6'00' 00827000
  828. DS 0H 00828000
  829. SPACE 00829000
  830. EJECT 00830000
  831. *. 00831000
  832. * 00832000
  833. * OPERATION OF GETFILE - 00833000
  834. * 00834000
  835. * 1. UPON ENTRY, GPR7 = ADDRESS OF A POINTER TO THE NEXT SFBLOK 00835000
  836. * TO TEST 00836000
  837. * 2. LOAD GPR7 WITH POINTER TO NEXT BLOK; IF ZERO, EXIT 00837000
  838. * 3. IF SAVEWRK2,3 EQUALS ZERO OR SFBUSER, GO TO STEP 4; 00838000
  839. * OTHERWISE GO TO STEP 6 00839000
  840. * 4. IF SAVEWRK1(1) EQUALS ZERO OR SFBCLAS,GO TO STEP 5; 00840000
  841. * OTHERWISE GO TO STEP 6 00841000
  842. * 5. IF SAVEWRK1+2(2) EQUALS ZERO OR SFBFILID, EXIT 00842000
  843. * 5.5 IF SWITCH = X'FF', COUNT THE NUMBER OF SPOOL 00843000
  844. * FILE BLOCKS. 00844000
  845. * 6. IF NO MATCH, GO TO STEP 2 00845000
  846. *. 00846000
  847. SPACE 00847000
  848. GETFILE EQU * HERE TO LOCATE THE REQUESTED FILE 00848000
  849. * OR TO GET A COUNT OF THE NUMBER OF FILES TO 00849000
  850. * BE TRANSFERRED, R10 FF IS SWITCH 00850000
  851. SPACE 00851000
  852. GF01 EQU * GPR7 = POINTER TO NEXT SFBLOK 00852000
  853. GF02 LR R6,R7 SFBLOK PRESENT ?? 00853000
  854. L R7,0(R7) 00854000
  855. LTR R7,R7 00855000
  856. BCR 8,R4 NO -RETURN TO CALLER WITH GPR7 ZERO 00856000
  857. SPACE 00857000
  858. GF03 TM SFBFLAG,SFBINUSE FILE IN USE ?? 00858000
  859. BO GF02 GET NEXT FILE 00859000
  860. CLI SAVEWRK2,X'40' USERID PRESENT ?? 00860000
  861. BNH GF04 NO -- USE ALL FILES 00861000
  862. CLC SAVEWRK2(8),SFBUSER USERID EQUALS ?? 00862000
  863. BNE GF02 NO 00863000
  864. SPACE 00864000
  865. GF04 CLI SAVEWRK1,X'00' SEARCH BY CLASS ?? 00865000
  866. BE GF05 NO 00866000
  867. CLC SAVEWRK1(1),SFBCLAS CLASS EQUALS ?? 00867000
  868. BNE GF02 NO - 00868000
  869. SPACE 00869000
  870. GF05 CLC SAVEWRK1+2(2),ZEROES SEARCH BY SPOOLID 00870000
  871. BE TOTAL NO @VA06206 00871000
  872. CLC SAVEWRK1+2(2),SFBFILID SPOOLID EQUAL ?? 00872000
  873. BNE GF02 NO - 00873000
  874. TOTAL EQU * @VA06206 00874000
  875. C R10,X2048BND ARE WE COUNTING ? (FROM TR05A) @VA08042 00875000
  876. BNE GF06 NOT TODAY @VA07375 00876000
  877. LH R14,SAVEWRK7 GET THE COUNT @VA06206 00877000
  878. LA R14,1(R14) UPDATE BY ONE @VA06206 00878000
  879. STH R14,SAVEWRK7 STORE IT AWAY @VA06206 00879000
  880. B GF02 KEEP ON TRUCKING @VA06206 00880000
  881. SPACE 00881000
  882. GF06 EQU * 00882000
  883. BR R4 RETURN TO CALLER 00883000
  884. EJECT 00884000
  885. *. 00885000
  886. * OPERATION OF GETCOPY - 00886000
  887. * 00887000
  888. * 1. CALL DMKSCNFD TO LOCATE NUMBER OF COPIES 00888000
  889. * 2. CONVERT DECIMAL NUMBER TO BINARY, AND VERIFY THAT 00889000
  890. * IT IS LESS THAN 100 00890000
  891. * IF COPIES IS MISSING OR INVALID, EXIT GIVING MSG030E 00891000
  892. * 3. STORE NUMBER OF COPIES IN SAVEWRK1+1(1) 00892000
  893. *. 00893000
  894. SPACE 3 00894000
  895. GETCOPY EQU * HERE TO LOCATE NUMBER OF COPIES AND CONVERT TO BINARY 00895000
  896. CALL DMKSCNFD LOCATE NUMBER OF COPIES 00896000
  897. BNZ MSG030E NUMBER OF COPIES MISSING 00897000
  898. OI SAVEWRK5+3,X'08' WE MUST UPDATE 1ST DASD BUFFER @VA10719 00897100
  899. CLI 0(R1),C'*' SPECIAL COPY FOR 3800 ? @V60B9BA 00898000
  900. BNE GETCOPY2 XFER IF NOT @V60B9BA 00899000
  901. OI SAVEWRK5+3,X'04' SET THE FLAG @V60B9BA 00900000
  902. BCTR R0,0 DECREMENT THE COUNT @V60B9BA 00902000
  903. LTR R0,R0 IT IS ZERO ? @V60B9BA 00903000
  904. BZ MSG030E NUMBER OF COPIES INVALID @V60B9BA 00904000
  905. LA R1,1(R1) POINT PAST THE ASTERISK @V60B9BA 00905000
  906. GETCOPY2 C R0,F2 LENGTH GREATER THAN 2 ?? 00906000
  907. BH MSG030E YES - INVALID COPIES 00907000
  908. CALL DMKCVTDB CONVERT TO BINARY 00908000
  909. BNZ MSG030E INVALID NUMBER OF COPIES 00909000
  910. SPACE 00910000
  911. CH R1,=H'99' LARGER THAN 99 ?? 00911000
  912. BH MSG030E YES - 00912000
  913. LTR R1,R1 COPY EQUAL ZERO 00913000
  914. BNP MSG030E 00914000
  915. STC R1,SAVEWRK1+1 SAVE NUMBER OF COPIES 00915000
  916. BR R4 RETURN TO CALLER 00916000
  917. SPACE 00917000
  918. EJECT 00918000
  919. *. 00919000
  920. * OPERATION OF GETNAME - 00920000
  921. * 00921000
  922. * 1. CALL DMKFREE FOR A 24 BYTE AREA FOR FNAME AND FTYPE 00922000
  923. * AND SAVE IN SAVEWRK4 00923000
  924. * 2. CALL DMKSCNFD TO LOCATE FNAME AND MOVE TO ADDRESS 00924000
  925. * IN SAVEWRK4, IF FNAME IS MISSING OR IVALID, EXIT 00925000
  926. * GIVING MSG029E. IF FNAME IS GREATER THAN 8 BYTES RETURN; 00926000
  927. * 3. CALL DMKSCNFD TO LOCATE FTYPE, IF NONE, RETURN; 00927000
  928. * MOVE FTYPE TO ADDRESS IN SAVEWRK4+11 AND RETURN. 00928000
  929. * 00929000
  930. *. 00930000
  931. SPACE 3 00931000
  932. GETNAME EQU * HERE TO LOCATE FNAME FTYPE 00932000
  933. SPACE 00933000
  934. GN01 L R2,SAVEWRK4 POINT TO THE WORK AREA @V60B9BA 00934000
  935. MVI 0(R2),C' ' CLEAR 00935000
  936. MVC 1(23,R2),0(R2) AREA TO BLANKS 00936000
  937. SPACE 00937000
  938. GN02 CALL DMKSCNFD LOCATE FNAME 00938000
  939. BNZ MSG029E FNAME MISSING 00939000
  940. LR R14,R0 GET LENGTH COUNT 00940000
  941. BCTR R14,R0 -1 FOR MOVE 00941000
  942. C R0,F24 LENGTH OVER 24 BYTES ?? 00942000
  943. BH MSG029E YES - INVALID 00943000
  944. SPACE 00944000
  945. EX R14,MVCFNAME MOVE FNAME AND MAYBE FTYPE 00945000
  946. C R14,F7 LENGTH OVER 8 BYTES ?? 00946000
  947. BCR 2,R4 YES - RETURN NO FTYPE 00947000
  948. SPACE 00948000
  949. GN03 CALL DMKSCNFD LOCATE FTYPE 00949000
  950. BCR 7,R4 NO FTYPE PRESENT - RETURN 00950000
  951. EJECT 00951000
  952. LR R14,R0 GET LENGTH OF FTYPE 00952000
  953. BCTR R14,R0 -1 FOR MOVE 00953000
  954. C R14,F7 OVER 8 CHARACTERS ?? 00954000
  955. BH MSG029E YES - INVALID FOR FTYPE 00955000
  956. EX R14,MVCFTYPE MOVE FTYPE 00956000
  957. BR R4 RETURN TO CALLER 00957000
  958. SPACE 2 00958000
  959. MVCFNAME MVC 0(0,R2),0(R1) MOVE FNAME 00959000
  960. MVCFTYPE MVC 12(0,R2),0(R1) MOVE FTYPE 00960000
  961. EJECT 00961000
  962. *. 00962000
  963. * OPERATION OF GETID - 00963000
  964. * 00964000
  965. * 1. CALL DMKSCNFD TO LOCATE THE SPOOLID; ACCEPTABLE ID'S ARE - 00965000
  966. * - A SPOOLID NUMBER 00966000
  967. * - THE KEYWORD 'CLASS' FOLLOWED BY A VALID SPOOL CLASS 00967000
  968. * - THE KEYWORD 'ALL' 00968000
  969. * 2. SET SAVEWRK1, SAVEWRK1+2(2) = 0 00969000
  970. * 3. IF OPTION = 'ALL', EXIT TO CALLER 00970000
  971. * 4. IF OPTION = 'CL', CALL GETCLASS AND SAVE THE CLASS 00971000
  972. * RETURNED IN GPR2 IN SAVEWRK1; THEN EXIT 00972000
  973. * 5. IF OPTION = A SPOOLID NUMBER, CONVERT TO BINARY AND STORE 00973000
  974. * IN SAVEWRK1+2(2) 00974000
  975. * 6. RETURN TO CALLER. 00975000
  976. *. 00976000
  977. SPACE 3 00977000
  978. GETID EQU * HERE TO LOCATE SPOOLID 00978000
  979. SPACE 00979000
  980. GI01 MVI SAVEWRK1,X'00' SET TO ALL 00980000
  981. XC SAVEWRK1+2(2),SAVEWRK1+2 00981000
  982. SPACE 00982000
  983. GI02 CALL DMKSCNFD LOCATE SPOOLID 00983000
  984. STM R0,R1,SAVEWRK6 SAVE COUNT AND ADDRESS 00984000
  985. BCR 7,R4 NO MORE FILID, RETURN WITH CC 00985000
  986. * NON-ZERO 00986000
  987. SPACE 00987000
  988. LR R14,R0 COUNT 00988000
  989. BCTR R14,0 -1 00989000
  990. C R0,F2 MIN FOR CLASS 00990000
  991. BL GI05 NO - MUST BE FILE ID 00991000
  992. BE GI04 YES - MIN FOR CLASS 00992000
  993. SPACE 00993000
  994. GI03 EX R14,CLCALL IS IT ALL ?? 00994000
  995. BE GI06 YES GO TO RETURN 00995000
  996. SPACE 00996000
  997. GI04 EX R14,CLCCLASS IS IT CLASS ?? 00997000
  998. BNE GI05 NO 00998000
  999. BAL R3,GETCLASS GET CLASS AND VERIFY @V200930 00999000
  1000. B GI06 GO RETURN 01000000
  1001. SPACE 01001000
  1002. GI05 EQU * OPTION MUST BE FILED 01002000
  1003. C R0,F4 LENGTH GREATER THAN 4 ? 01003000
  1004. BH GI05A YES -- INVALID SPOOLID 01004000
  1005. CALL DMKCVTDB CONVERT TO BINARY 01005000
  1006. BZ VALID VALID SPOOLID 01006000
  1007. GI05A LM R0,R1,SAVEWRK6 RESTORE COUNT AND ADDRESS 01007000
  1008. C R3,FFS TEST FOR 'SYSTEM' OR 1ST USERID ? 01008000
  1009. BE MSG003E YES -- DMKCSU003E 01009000
  1010. B MSG008E INVALID SPOOLID 01010000
  1011. VALID STH R1,SAVEWRK1+2 SAVE BINARY VALUE (SPOOLID) 01011000
  1012. LTR R1,R1 SPOOLID ZERO ?? 01012000
  1013. BZ GI05A YES -- INVALID 01013000
  1014. SPACE 01014000
  1015. GI06 CR R12,R12 SET CC ZERO 01015000
  1016. BR R4 RETURN TO CALLER 01016000
  1017. EJECT 01017000
  1018. *. OPERATION OF GETCHARS - 01018000
  1019. * 01019000
  1020. * 1. CALL DMKSCNFD TO LOCATE CHARS SPECIFIED 01020000
  1021. * 2. IF MISSING OR GREATER THAN 4 CHARACTERS, EXIT 01021000
  1022. * GIVING MSG245E. 01022000
  1023. * 3. STORE VALUE IN HLDCHARS. 01023000
  1024. *. 01024000
  1025. SPACE 3 01025000
  1026. GETCHARS CALL DMKSCNFD LOCATE CHARS VALUE @V60B9BA 01026000
  1027. BNZ MSG245E CHARS PARAMETER MISSING @V60B9BA 01027000
  1028. C R0,F4 LENGTH GREATER THAN 4 ? @V60B9BA 01028000
  1029. BH MSG245E YES - INVLALID @V60B9BA 01029000
  1030. L R3,SAVEWRK4 WORKAREA ADDRESSIBILITY @V60B9BA 01030000
  1031. MVC HLDCHARS-HLDAREA(4,R3),BLANKS INITIALIZE @V60B9BA 01031000
  1032. LR R2,R0 EXECUTE FROM R2 @V60B9BA 01032000
  1033. BCTR R2,0 LESS ONE FOR EXECUTE INST @V60B9BA 01033000
  1034. EX R2,MVCCHARS SAVE THE CHARS VALUE @V60B9BA 01034000
  1035. OI SAVEWRK5+3,X'08' MUST UPDATE 1ST DASD BUFFER @V60B9BA 01035000
  1036. BR R4 RETURN TO CALLER @V60B9BA 01036000
  1037. SPACE 01037000
  1038. MVCCHARS MVC HLDCHARS-HLDAREA(0,R3),0(R1) @V60B9BA 01038000
  1039. EJECT 01039000
  1040. *. 01040000
  1041. * OPERATION OF GETFLASH - 01041000
  1042. * 01042000
  1043. * 1. CALL DMKSCNFD TO GET FLASH OVERLAY NAME. 01043000
  1044. * 2. IF MISSING OR GREATER THAN 4 CHARS EXIT 01044000
  1045. * GIVING MSG243E. 01045000
  1046. * 3. SAVE FLASH OVERLAY NAME IN HLDFLASH. 01046000
  1047. * 4. CALL DMKSCNFD TO GET FLASH COUNT. 01047000
  1048. * 5. IF MISSING OF NOT BETWEEN 0 AND 99, EXIT 01048000
  1049. * GIVING MSG243E. 01049000
  1050. * 6. SAVE FLASH COUNT IN HLDFLSHC. 01050000
  1051. *. 01051000
  1052. SPACE 3 01052000
  1053. GETFLASH CALL DMKSCNFD LOCATE FLASH OVERLAY NAME @V60B9BA 01053000
  1054. BNZ MSG243E FLASH NAME MISSING @V60B9BA 01054000
  1055. C R0,F4 GREATER THAN 4 CHARS ? @V60B9BA 01055000
  1056. BH MSG243E INVALID IF SO @V60B9BA 01056000
  1057. L R3,SAVEWRK4 ADDRESSIBILITY TO WORK AREA @V60B9BA 01057000
  1058. MVC HLDFLASH-HLDAREA(4,R3),BLANKS INITIALIZE @V60B9BA 01058000
  1059. LR R2,R0 WHERE TO EX FROM @V60B9BA 01059000
  1060. BCTR R2,0 DECREMENT FOR EXECUTE @V60B9BA 01060000
  1061. EX R2,MVCFLASH SAVE THE FLASH NAME @V60B9BA 01061000
  1062. CALL DMKSCNFD LOCATE FLASH COUNT @V60B9BA 01062000
  1063. BNZ MSG243E FLASH COUNT MISSING @V60B9BA 01063000
  1064. C R0,F2 LENGTH GREATER THAN 2 @V60B9BA 01064000
  1065. BH MSG243E INVALID IF SO @V60B9BA 01065000
  1066. CALL DMKCVTDB CONVERT TO BINARY @V60B9BA 01066000
  1067. BNZ MSG243E INVALID FLASH COUNT @V60B9BA 01067000
  1068. CH R1,=H'99' LARGER THAN 99 ? @V60B9BA 01068000
  1069. BH MSG243E XFER IF SO @V60B9BA 01069000
  1070. STC R1,HLDFLSHC-HLDAREA(R3) SAVE THE COUNT @V60B9BA 01070000
  1071. OI SAVEWRK5+3,X'08' MUST UPDATE 1ST DASD BUFFER @V60B9BA 01071000
  1072. BR R4 RETURN TO CALLER @V60B9BA 01072000
  1073. SPACE 01073000
  1074. MVCFLASH MVC HLDFLASH-HLDAREA(0,R3),0(R1) @V60B9BA 01074000
  1075. EJECT 01075000
  1076. *. 01076000
  1077. * OPERATION OF GETCMOD - 01077000
  1078. * 01078000
  1079. * 1. CALL DMKSCNFD TO LOCATE MODIFY VALUE. 01079000
  1080. * 2. IF MISSING OR GREATER THAN 4 CHARACTERS, 01080000
  1081. * EXIT GIVING MSG253E. 01081000
  1082. * 3. SAVE THE MODIFY VALUE IN HLDCMOD. 01082000
  1083. *. 01083000
  1084. SPACE 3 01084000
  1085. GETCMOD CALL DMKSCNFD LOCATE MODIFY VALUE @V60B9BA 01085000
  1086. BNZ MSG253E ERROR IF MISSING @V60B9BA 01086000
  1087. C R0,F4 MORE THAN 4 CHARACTERS ? @V60B9BA 01087000
  1088. BH MSG253E INVALID IF SO @V60B9BA 01088000
  1089. L R3,SAVEWRK4 POINT TO WORK AREA @V60B9BA 01089000
  1090. MVC HLDCMOD-HLDAREA(4,R3),BLANKS INITIALIZE @V60B9BA 01090000
  1091. LR R2,R0 COUNT FOR EXECUTE @V60B9BA 01091000
  1092. BCTR R2,0 DECREMENT FOR EXECUTE @V60B9BA 01092000
  1093. EX R2,MVCCMOD SAVE THE MODIFY VALUE @V60B9BA 01093000
  1094. OI SAVEWRK5+3,X'08' MUST UPDATE 1ST DASD BUFFER @V60B9BA 01094000
  1095. BR R4 RETURN TO CALLER @V60B9BA 01095000
  1096. SPACE 01096000
  1097. MVCCMOD MVC HLDCMOD-HLDAREA(0,R3),0(R1) @V60B9BA 01097000
  1098. EJECT 01098000
  1099. *. 01099000
  1100. * OPERATION OF GETFCB - 01100000
  1101. * 01101000
  1102. * 1. CALL DMKSCNFD TO LOCATE FCB VALUE. 01102000
  1103. * 2. IF MISSING OR GREATER THAN 4 CHARACTERS, 01103000
  1104. * EXIT GIVING MSG246E. 01104000
  1105. * 3. SAVE THE FCB VALUE IN HLDFCB. 01105000
  1106. *. 01106000
  1107. SPACE 3 01107000
  1108. GETFCB CALL DMKSCNFD LOCATE FCB VALUE @V60B9BA 01108000
  1109. BNZ MSG246E ERROR IF MISSING @V60B9BA 01109000
  1110. C R0,F4 GREATER THAN 4 CHARS ? @V60B9BA 01110000
  1111. BH MSG246E XFER IF SO @V60B9BA 01111000
  1112. L R3,SAVEWRK4 POINT TO WORK AREA @V60B9BA 01112000
  1113. MVC HLDFCB-HLDAREA(4,R3),BLANKS INITIALIZE @V60B9BA 01113000
  1114. LR R2,R0 GET THE COUNT IN R2 @V60B9BA 01114000
  1115. BCTR R2,0 DECREMENT FOR EXECUTE @V60B9BA 01115000
  1116. EX R2,MVCFCB SAVE THE FCB VALUE @V60B9BA 01116000
  1117. OI SAVEWRK5+3,X'08' MUST UPDATE 1ST DASD BUFFER @V60B9BA 01117000
  1118. BR R4 RETURN TO CALLER @V60B9BA 01118000
  1119. SPACE 01119000
  1120. MVCFCB MVC HLDFCB-HLDAREA(0,R3),0(R1) @V60B9BA 01120000
  1121. EJECT 01121000
  1122. *. 01122000
  1123. * OPERATION OF GETCHAIN - 01123000
  1124. * 01124000
  1125. * 1. IF GPR5 = 0, SET GPR6 = 0 AND EXIT; 01125000
  1126. * 2. IF GPR6 = FFS, GO TO STEP 6; 01126000
  1127. * 3. IF GPR5 HAS CSURDR BIT ON,REMOVE BIT, GO TO STEP 7; 01127000
  1128. * 4. IF GPR5 HAS TYPPRT BIT ON,REMOVE BIT, GO TO STEP 8; 01128000
  1129. * 5. REMOVE TYPPUN BIT IN GPR5, SET GPR6 TO ZERO, EXIT 01129000
  1130. * 6. IF GPR5 HAS CSURDR BIT ON, LOAD GPR6 WITH ARSPRD, EXIT; 01130000
  1131. * 7. IF GPR5 HAS TYPPRT BIT ON, LOAD GPR6 WITH ARSPPR, EXIT; 01131000
  1132. * 8. IF GPR5 HAS TYPPUN BIT ON, LOAD GPR6 WITH ARSPPU,EXIT; 01132000
  1133. * 9. SET GPR6 = 0, EXIT 01133000
  1134. *. 01134000
  1135. SPACE 3 01135000
  1136. GETCHAIN EQU * HERE TO GET NEXT FILE CHAIN ANCHOR POINTER 01136000
  1137. SPACE 01137000
  1138. GC01 LTR R5,R5 FILE TYPE ZERO ?? 01138000
  1139. BNZ GC02 NO-- 01139000
  1140. SR R6,R6 YES - ZERO GPR6 01140000
  1141. BR R3 RETURN TO CALLER 01141000
  1142. SPACE 01142000
  1143. GC02 C R6,FFS 1ST TIME SWITCH ON ?? 01143000
  1144. BE GC06 YES - DO NOT RESET ANY BITS, JUST 01144000
  1145. * LOAD GPR6 01145000
  1146. SPACE 01146000
  1147. GC03 LR R6,R5 SAVE R5 FOR CHANGE COMPARE 01147000
  1148. N R5,=A(255-CSURDR) REMOVE READER BIT 01148000
  1149. CR R6,R5 WAS IT ON ?? 01149000
  1150. BNE GC07 NO 01150000
  1151. SPACE 01151000
  1152. GC04 N R5,=A(255-TYPPRT) REMOVE PRINTER BIT 01152000
  1153. CR R6,R5 WAS IT ON ?? 01153000
  1154. BNE GC08 NO 01154000
  1155. SPACE 01155000
  1156. GC05 SR R5,R5 REMOVE PUNCH BIT 01156000
  1157. SR R6,R6 SET GPR6 TO ZERO 01157000
  1158. BR R3 RETURN TO CALLER - END OF CHAIN 01158000
  1159. SPACE 01159000
  1160. GC06 L R7,ARSPRD LOAD READER FILE CHAIN POINTER 01160000
  1161. * ANCHOR 01161000
  1162. EX R5,TMRDR READER BIT ON ?? 01162000
  1163. BCR 7,R3 YES - RETURN TO CALLER 01163000
  1164. SPACE 01164000
  1165. GC07 L R7,ARSPPR LOAD PRINTER FILE CHAIN POINTER 01165000
  1166. * ANCHOR 01166000
  1167. EX R5,TMPRT PRINTER BIT ON ?? 01167000
  1168. BCR 7,R3 YES - RETURN TO CALLER 01168000
  1169. SPACE 01169000
  1170. GC08 L R7,ARSPPU LOAD PUNCH FILE CHAIN POINTER ANCHOR 01170000
  1171. EX R5,TMPUN PUNCH BIT ON ?? 01171000
  1172. BCR 7,R3 YES - RETURN TO CALLER 01172000
  1173. GC09 SLR R6,R6 SET GPR6 = ZERO - ALL DONE @VA01375 01173000
  1174. SLR R7,R7 .. @VA01375 01174000
  1175. BR R3 RETURN TO CALLER @VA01375 01175000
  1176. EJECT 01176000
  1177. *. 01177000
  1178. * OPERATOR OF SETPEND - 01178000
  1179. * 01179000
  1180. * 1. IF SPOOL FILE (SFBLOK) IS IN USER HOLD STATUS; 01180000
  1181. * RETURN TO CALLER. 01181000
  1182. * 2. LOCATE AN AVAILABLE VIRTUAL READER, CONSTRUCT AN 01182000
  1183. * IOBLOK CONTAINING A DEVICE END INTERRUPT AND STACK IT 01183000
  1184. * FOR THE OPPROPRIATE VIRTUAL DEVICE VIA CALL TO 01184000
  1185. * DMKSTKIO. 01185000
  1186. *. 01186000
  1187. SPACE 3 01187000
  1188. SETPEND EQU * HERE TO POST PENDIN INTERRUPT @VM01016 01188000
  1189. SPACE 01189000
  1190. USING VCHBLOK,R6 @VM01016 01190000
  1191. USING VCUBLOK,R9 @VM01016 01191000
  1192. USING IOBLOK,R10 @VM01016 01192000
  1193. SPACE 01193000
  1194. ST R11,TEMPR3 SAVE CALLERS VMBLOK POINTER @VA04139 01194000
  1195. CLC SFBUSER,VMUSER ONLY THE OWNER GETS THE INT. @VA04139 01195000
  1196. BE SAMEUSER BRANCH IF SAME USER, ALL OK! @VA04139 01196000
  1197. LA R0,8 SET UP TO ... @VA04139 01197000
  1198. LA R1,SFBUSER FIND THE VMBLOK OF... @VA04139 01198000
  1199. CALL DMKSCNAU THE USER TO GET THE INT. @VA04139 01199000
  1200. BNZR R4 IF NOT LOGED ON RETURN @VA04139 01200000
  1201. ST R11,TEMPR3 RESAVE CALLERS VMBLOK POINTER @VA04139 01201000
  1202. CHARGE SWITCH,1 SWITCH TIMING TO RECEIVER @V407510 01202000
  1203. SAMEUSER STM R4,R5,TEMPR4 SAVE CALLERS REGS @VA04139 01203000
  1204. SR R1,R1 CLEAR CHANNEL TABLE INDEX @VM01016 01204000
  1205. LA R4,2 GET GENERAL INDEX INCREMENT @VM01016 01205000
  1206. LA R5,30 GET GENERAL COMPARAND FOR BXLE @VM01016 01206000
  1207. SPACE 01207000
  1208. NEXTCH LH R6,VMCHTBL(R1) GET INDEX TO NEXT VIRTUAL CHANNEL@VM01016 01208000
  1209. LTR R6,R6 IS THERE ONE AT THIS ADDRESS @VM01016 01209000
  1210. BM CHINDEX NO -- @VM01016 01210000
  1211. A R6,VMCHSTRT POINT TO VCHBLOK @VM01016 01211000
  1212. SR R2,R2 CLEAR CU TABLE INDEX @VM01016 01212000
  1213. NEXTCU LH R9,VCHCUTBL(R2) GET INDEX TO VIRTUAL CU BLOK @VM01016 01213000
  1214. LTR R9,R9 IS THERE ONE AT THIS ADDRESS ? @VM01016 01214000
  1215. BM CUINDEX NO -- @VM01016 01215000
  1216. A R9,VMCUSTRT POINT TO VCUBLOK @VM01016 01216000
  1217. SR R3,R3 CLEAR DEVICE BLOK TABLE INDEX @VM01016 01217000
  1218. NEXTDEV LH R8,VCUDVTBL(R3) GET INDEX TO DEVICE BLOK @VM01016 01218000
  1219. LTR R8,R8 IS THERE ONE AT THIS ADDRESS @VM01016 01219000
  1220. BM DEVINDEX NO -- @VM01016 01220000
  1221. A R8,VMDVSTRT POINT TO DEVICE BLOK @VM01016 01221000
  1222. SPACE 01222000
  1223. CLI VDEVTYPC,CLASURI INPUT DEVICE @VM01016 01223000
  1224. BNE DEVINDEX NO - @VM01016 01224000
  1225. TM VDEVTYPE,TYPRDR IS IT THE RIGHT TYPE ?? @VM01016 01225000
  1226. BZ DEVINDEX NO -- @VM01016 01226000
  1227. TM VDEVSTAT,X'FF' ANY STATUS PENDING ?? @VM01016 01227000
  1228. BNZ DEVINDEX YES, CHECK NEXT DEVICE @VM01016 01228000
  1229. CLI VDEVCLAS,C'*' ALL CLASS READER ? @VM01016 01229000
  1230. BE TSTBUSY YES, TEST FOR ACTIVE DEVICE @VM01016 01230000
  1231. CLC VDEVCLAS(1),SFBCLAS FILE CLASS SAME AS DEVICE ? @VM01016 01231000
  1232. BNE DEVINDEX NO - @VM01016 01232000
  1233. TSTBUSY ICM R14,B'1111',VDEVSPL IS THE DEVICE BUSY ?? @VM01016 01233000
  1234. BZ RDRPEND NO -- FINALLY FOUND A DEVICE @VM01016 01234000
  1235. SPACE 01235000
  1236. DEVINDEX BXLE R3,R4,NEXTDEV INDEX TO NEXT DEVICE ON CONTROL @VM01016 01236000
  1237. * UNIT 01237000
  1238. CUINDEX BXLE R2,R4,NEXTCU INDEX TO NEXT CONTROL UNIT ON @VM01016 01238000
  1239. * CHANNEL 01239000
  1240. CHINDEX BXLE R1,R4,NEXTCH INDEX TO NEXT CHANNEL ON MACHINE @VM01016 01240000
  1241. LM R3,R5,TEMPR3 GET CALLERS R11(IN R3), R4 & R5 @VA04139 01241000
  1242. B INTEXIT RETURN @VA04139 01242000
  1243. SPACE 01243000
  1244. RDRPEND EQU * HERE TO QUEUE DEVICE END @VM01016 01244000
  1245. LH R2,VDEVADD GET FULL ADDRESS OF DEVICE @VM01016 01245000
  1246. LH R5,VCUADD .. @VM01016 01246000
  1247. OR R2,R5 .. @VM01016 01247000
  1248. AH R2,VCHADD .. @VM01016 01248000
  1249. LM R3,R5,TEMPR3 GET CALLERS R11(IN R3), R4 & R5 @VA04139 01249000
  1250. LA R0,IOBSIZE BUILD IOBLOK @VM01016 01250000
  1251. CALL DMKFREE .. @VM01016 01251000
  1252. LR R10,R1 ADDRESS OF IOBLOK @VM01016 01252000
  1253. XC IOBLOK(IOBSIZE*8),IOBLOK CLEAR BLOK @VM01016 01253000
  1254. ST R10,IOBLINK INDICATE ORIGINAL COPY @VM01016 01254000
  1255. MVI IOBCSW+4,DE FAKE DEVICE END CSW @VM01016 01255000
  1256. ST R11,IOBUSER MOVE USER ADDRESS OF VMBLOK @VM01016 01256000
  1257. MVC IOBIRA,=A(DMKVIOIN) RETURN ADDRESS @VM01016 01257000
  1258. STH R2,IOBVADD PUT ADDRESS IN IOBLOK @VM01016 01258000
  1259. OI VDEVSTAT,VDEVPEND SET PENDING FLAG @VM01016 01259000
  1260. MVC VDEVCSW(8),IOBCSW MOVE IN DEVICE END CSW @VM01016 01260000
  1261. CALL DMKSTKIO GO STACK IO @VM01016 01261000
  1262. INTEXIT CLR R11,R3 ORIGINAL CALLER? @VA04139 01262000
  1263. BER R4 YES- RETURN @VA04139 01263000
  1264. CHARGE SWITCH,3 SWITCH BACK TO CALLER @V407510 01264000
  1265. BR R4 RETURN TO CALLER @VM01016 01265000
  1266. DROP R6 @VM01016 01266000
  1267. DROP R9 @VM01016 01267000
  1268. DROP R10 @VM01016 01268000
  1269. SPACE 3 01269000
  1270. ********************************** 01270000
  1271. * 01271000
  1272. * ERROR EXITS FROM DMKCSU 01272000
  1273. * 01273000
  1274. ********************************** 01274000
  1275. SPACE 2 01275000
  1276. MSG003E EQU * HERE IF INVALID OPTION FOR THIS @VA01375 01276000
  1277. * COMMAND 01277000
  1278. LA R2,003 ERROR MSG DMKCSU003E @VA01733 01278000
  1279. B EXIT8 EXIT TO ERROR MODULE 01279000
  1280. SPACE 2 01280000
  1281. MSG006E EQU * HERE IF DEVICE TYPE IS INVALID 01281000
  1282. LA R2,006 ERROR MSG DMKCSU006E 01282000
  1283. LM R0,R1,SAVEWRK6 COUNT AND ADDRESS OF INVALID TYPE 01283000
  1284. B EXIT8 EXIT TO ERROR MODULE 01284000
  1285. SPACE 2 01285000
  1286. MSG007E EQU * HERE IF USERID IS INVALID 01286000
  1287. LA R2,007 ERROR MSG DMKCSU007E 01287000
  1288. B EXIT8 01288000
  1289. SPACE 2 01289000
  1290. MSG008E EQU * HERE IF SPOOLID IS INVALID 01290000
  1291. LA R2,008 ERROR MSG DMKCSU008E 01291000
  1292. LM R0,R1,SAVEWRK6 COUNT AND ADDRESS OF SPOOLID 01292000
  1293. B EXIT8 EXIT TO ERROR MODULE 01293000
  1294. SPACE 2 01294000
  1295. MSG013E EQU * HERE IF OPTION IS CONFLICTING 01295000
  1296. LA R2,013 ERROR MSG DMKCSU013E 01296000
  1297. B EXIT8 .. 01297000
  1298. SPACE 2 01298000
  1299. MSG020E EQU * HERE IF USERID IS MISSING OR INVALID 01299000
  1300. LA R2,020 ERROR MSG DMKCSU020E 01300000
  1301. B EXIT8R1 EXIT TO ERROR MODULE 01301000
  1302. SPACE 2 01302000
  1303. MSG026E EQU * HERE IF OPERAND MISSING OR INVALID 01303000
  1304. LA R2,026 ERROR MSG DMKCSU026E 01304000
  1305. B EXIT8R1 EXIT TO ERROR MODULE 01305000
  1306. SPACE 2 01306000
  1307. MSG027E EQU * HERE IF SPOOLID MISSING OR INVALID 01307000
  1308. LA R2,027 ERROR MSG DMKCSU027E 01308000
  1309. B EXIT8R1 01309000
  1310. SPACE 2 01310000
  1311. MSG028E EQU * HERE IF CLASS IS MISSING OR INVALID 01311000
  1312. LA R2,028 ERROR MSG DMKCSU028E 01312000
  1313. B EXIT8R1 01313000
  1314. SPACE 01314000
  1315. MSG029E EQU * HERE IF FNAME FTYPE MISSING OR INVALID 01315000
  1316. LA R2,029 ERROR MSG DMKCSU029E 01316000
  1317. B EXIT8R1 EXIT TO ERROR MODULE 01317000
  1318. SPACE 2 01318000
  1319. MSG030E EQU * HERE IF COPIES IS MISSING OR INVALID 01319000
  1320. LA R2,030 ERROR MSG DMKCSU030E 01320000
  1321. B EXIT8R1 EXIT TO ERROR MODULE 01321000
  1322. SPACE 2 01322000
  1323. MSG032E EQU * HERE IF DISTCODE IS MISSING OR INVALID 01323000
  1324. LA R2,032 ERROR MSG DMKCSU032E 01324000
  1325. B EXIT8R1 EXIT TO ERROR MODULE 01325000
  1326. SPACE 2 01326000
  1327. MSG035E EQU * HERE IF DEVICE TYPE MISSING OR INVALID 01327000
  1328. LA R2,035 ERROR MSG DMKCSU035E 01328000
  1329. B EXIT8R1 EXIT TO ERROR MODULE 01329000
  1330. SPACE 2 01330000
  1331. MSG042E EQU * HERE IF SPOOL FILE NOT FOUND 01331000
  1332. LH R1,SAVEWRK1+2 GET SPOOLID OF FILE 01332000
  1333. BAL R2,CVTBD AND CONVERT 01333000
  1334. LA R2,042 ERROR MSG DMKCSU032E 01334000
  1335. B EXIT8R0 01335000
  1336. SPACE 2 01336000
  1337. MSG053E EQU * HERE IF USERID NOT IN CP DIRECTORY 01337000
  1338. LA R2,053 ERROR MSG DMKCSU053E 01338000
  1339. B EXIT8 01339000
  1340. SPACE 2 01340000
  1341. MSG243E EQU * HERE IF FLASH MISSING OR INVALID @V60B9BA 01341000
  1342. LA R2,243 ERROR MSG DMKCSP243E @V60B9BA 01342000
  1343. B EXIT8R1 EXIT TO ERROR MODULE @V60B9BA 01343000
  1344. SPACE 2 01344000
  1345. MSG245E EQU * HERE IF CHARS MISSING OR INVALID @V60B9BA 01345000
  1346. LA R2,245 ERROR MSG DMKCSP245E @V60B9BA 01346000
  1347. B EXIT8R1 EXIT TO ERROR MODULE @V60B9BA 01347000
  1348. SPACE 2 01348000
  1349. MSG246E EQU * HERE IS FCB MISSING OR INVALID @V60B9BA 01349000
  1350. LA R2,246 ERROR MSG DMKCSP246E @V60B9BA 01350000
  1351. B EXIT8R1 EXIT TO ERROR MODULE @V60B9BA 01351000
  1352. SPACE 2 01352000
  1353. MSG253E EQU * HERE IS MODIFY MISSING OR INVALID @V60B9BA 01353000
  1354. LA R2,253 ERROR MSG DMKCSP253E @V60B9BA 01354000
  1355. B EXIT8R1 EXIT TO ERROR MODULE @V60B9BA 01355000
  1356. SPACE 2 01356000
  1357. MSG424E L R4,SAVEWRK4 ADDRESS THE WORK AREA @V60B9BA 01357000
  1358. L R1,HLDPTR-HLDAREA(R4) DASD BUFFER VIRT ADDR @V60B9BA 01358000
  1359. CALL DMKPGTVR RELEASE THE PAGE @V60B9BA 01359000
  1360. LA R2,424 MSG NUM FOR PAGING ERROR @V60B9BA 01360000
  1361. B EXIT8R1 EXIT TO ERROR MODULE @V60B9BA 01361000
  1362. SPACE 2 01362000
  1363. CVTBD EQU * HERE TO CONVERT BINARY TO DECIMAL 01363000
  1364. CALL DMKCVTBD 01364000
  1365. BR R2 01365000
  1366. SPACE 01366000
  1367. SPACE 2 01367000
  1368. EJECT 01368000
  1369. **************************************** 01369000
  1370. * 01370000
  1371. * FINAL EXIT BACK TO DMKCFM 01371000
  1372. * 01372000
  1373. **************************************** 01373000
  1374. SPACE 3 01374000
  1375. CSUEXIT EQU * HERE FOR NORMAL EXIT FROM DMKCSU 01375000
  1376. SR R2,R2 CLEAR ERROR REGISTER 01376000
  1377. B EXIT1 NOW EXIT 01377000
  1378. SPACE 2 01378000
  1379. EXIT8R1 SR R1,R1 01379000
  1380. EXIT8R0 SR R0,R0 01380000
  1381. EXIT8 ICM R0,14,ID+3 MOVE IN MODULE ID 01381000
  1382. EXIT1 LR R3,R0 SAVE GPR 0-2 01382000
  1383. LR R4,R1 .. 01383000
  1384. LTR R5,R2 ANY ERRORS?? @V2A3663 01384000
  1385. BNZ REGXIT YES - REGULAR EXIT PLEASE @V2A3663 01385000
  1386. TM VMMLVL2,VMMIMSG NO - SUPPRESS INFO MSGS? @V2A3663 01386000
  1387. BZ NOMSG YES @V2A3663 01387000
  1388. REGXIT EQU * NO @V2A3663 01388000
  1389. LH R1,SAVEWRK5 GET FILE COUNT 01389000
  1390. LTR R1,R1 PROCESSING STARTED ?? 01390000
  1391. BM NOMSG NO -- NO MESSAGE 01391000
  1392. MVC MSGCNT(4),=C' NO ' SET MESSAGE 01392000
  1393. BZ NOCNT NO FILE MSG 01393000
  1394. CALL DMKCVTBD CONVERT COUNT FOR MSG 01394000
  1395. STCM R1,15,MSGCNT STORE COUNT IN MESSAGE 01395000
  1396. NOCNT MVC MSGFILE(5),=C'FILES' .. 01396000
  1397. C R1,=C'0001' ONE FILE ?? 01397000
  1398. BNE *+8 NO 01398000
  1399. MVI MSGFILE+4,C' ' CHANGE FILES TO FILE 01399000
  1400. MVC MSGCMD+3(8),BLANKS BLANK COMMAND NAME AREA @VA04869 01400000
  1401. MVC MSGCMD(8),VMCOMND MOVE IN COMMAND NAME 01401000
  1402. MVI MSGCMD+6,C'D' CHANGE CHANGE TO CHANGED @VA04869 01402000
  1403. MSGLEN LA R0,CNTMSGL SET UP MSG LENGTH @VA04869 01403000
  1404. LA R1,CNTMSG ADDRESS OF MESSAGE 01404000
  1405. CALL DMKQCNWT,PARM=NORET WRITE MESSAGE 01405000
  1406. NOMSG EQU * 01406000
  1407. L R1,SAVEWRK4 ADDRESS OF 24 BYTE AREA 01407000
  1408. LTR R1,R1 ADDRESS PRESENT ?? 01408000
  1409. BZ EXIT2 NO --- 01409000
  1410. LA R0,HLDSIZE LENGTH OF AREA @V60B9BA 01410000
  1411. CALL DMKFRET RETURN AREA TO FREE STORAGE 01411000
  1412. EXIT2 LR R0,R3 RESTORE REG 0-2 01412000
  1413. LR R1,R4 .. 01413000
  1414. LR R2,R5 .. 01414000
  1415. LTR R2,R2 ERROR CODE PRESENT ?? 01415000
  1416. BNZ ERREXIT YES -- 01416000
  1417. EXIT3 EXIT - EXIT -- NO ERROR @V60B9BA 01417000
  1418. SPACE 01418000
  1419. ERREXIT EQU * HERE TO CALL ERROR MESSAGE MODULE 01419000
  1420. CALL DMKERMSG EXIT TO MESSAGE MODULE 01420000
  1421. SPACE 01421000
  1422. * MODULE DMKERMSG WILL GIVE SVC16 AND RETURN CONTROL TO DMKCFM 01422000
  1423. EJECT 01423000
  1424. **************************************** 01424000
  1425. * 01425000
  1426. * MESSAGES AND CONSTANTS 01426000
  1427. * 01427000
  1428. **************************************** 01428000
  1429. SPACE 2 01429000
  1430. LTORG 01430000
  1431. EJECT 01431000
  1432. CSURDR EQU X'20' 01432000
  1433. SPACE 3 01433000
  1434. HLDAREA DSECT , LOCAL WORK AREA @V60B9BA 01434000
  1435. HLDFNAM DS CL12 FILENAME @V60B9BA 01435000
  1436. HLDFTYP DS CL12 FILETYPE @V60B9BA 01436000
  1437. ORG HLDFNAM @V60B9BA 01437000
  1438. HLDFILE DS CL24 FULL 24 CHAR NAME @V60B9BA 01438000
  1439. HLDCHARS DS CL4 CHARS OPTION @V60B9BA 01439000
  1440. HLDFCB DS CL4 FCB OPTION @V60B9BA 01440000
  1441. HLDFLASH DS CL4 FLASH OVERLAY NAME @V60B9BA 01441000
  1442. HLDCMOD DS CL4 COPY MODIFICATION NAME @V60B9BA 01442000
  1443. HLDFLSHC DS 1X FLASH COUNT @V60B9BA 01443000
  1444. DS 3X RESERVED @V60B9BA 01444000
  1445. HLDPTR DS 1A VIRTUAL ADDR FOR SPLINK @V60B9BA 01445000
  1446. HLDSIZE EQU (*-HLDAREA)/8 SIZE IN DOUBLE WORDS @V60B9BA 01446000
  1447. SPACE 2 01447000
  1448. PSA , @V306638 01448000
  1449. COPY CONBUF @V306638 01449000
  1450. COPY DEVTYPES @V306638 01450000
  1451. COPY EQU @V306638 01451000
  1452. COPY IOBLOKS @V306638 01452000
  1453. COPY RBLOKS @V306638 01453000
  1454. COPY SAVE @V306638 01454000
  1455. COPY SPOOL @V306638 01455000
  1456. COPY UDIRECT @V306638 01456000
  1457. COPY VBLOKS @V306638 01457000
  1458. COPY VMBLOK @V306638 01458000
  1459. END 01459000