Table of Contents

DMSDLB Source

References

Source Listing

DMSDLB.ASSEMBLE.txt
  1. DLB TITLE 'DMSDLB (CMS) VM/370 - RELEASE 6' 00001000
  2. *. 00002000
  3. * MODULE NAME: 00003000
  4. * 00004000
  5. * DMSDLB (DLBL) 00005000
  6. * 00006000
  7. * FUNCTION: 00007000
  8. * 00008000
  9. * TO ALLOW THE USER TO SPECIFY, IN A MANNER SIMILAR TO 00009000
  10. * THE DOS DLBL CARD, I/O DEVICES, EXTENTS, AND CERTAIN 00010000
  11. * FILE ATTRIBUTES WHICH WILL BE USED BY A PROGRAM AT 00011000
  12. * EXECUTION TIME. CAN ALSO BE USED TO MODIFY OR DELETE 00012000
  13. * PREVIOUSLY DEFINED DISK FILE DESCRIPTIONS. 00013000
  14. * 00014000
  15. * ATTRIBUTES: TRANSIENT, MUST BE GENMOD'ED WITH 'SYSTEM' OPTION 00015000
  16. * I.E., LOAD DMSDLB (ORIGIN TRANS 00016000
  17. * GENMOD DLBL (SYSTEM 00017000
  18. * 00018000
  19. * ENTRY POINTS: 00019000
  20. * DMSDLB 00020000
  21. * 00021000
  22. * ENTRY CONDITIONS: 00022000
  23. * R1 MUST POINT TO A DLBL PARAMETER LIST. 00023000
  24. * THE GENERAL FORMAT IS AS FOLLOWS: 00024000
  25. * DS 0D 00025000
  26. * PLIST DC CL8'DLBL' 00026000
  27. * DC CL8'DDNAME' OR '*' 00027000
  28. * DC CL8'CLEAR', 'DUMMY', OR MODE 00028000
  29. * DC CL8'CMS', CL8'FILENAME', CL8'FILETYPE' 00029000
  30. * OR 00030000
  31. * DC CL8'DSN' , CL8'QUAL1' , CL8'QUALN' ( OR CL8'?' ) 00031000
  32. * DC CL8'(' START OF OPTIONS 00032000
  33. * DC CL8'OPTIONS' 00033000
  34. * DC 8X'FF' FENCE 00034000
  35. * 00035000
  36. * 00036000
  37. * EXIT CONDITIONS: 00037000
  38. * NORMAL RETURN 00038000
  39. * R15 = 0 00039000
  40. * R0 = ADDRESS OF DOSCB 00040000
  41. * POSITIVE IF ALREADY EXISTS 00041000
  42. * NEGATIVE IF OBTAINED OR MODIFIED BY THIS CALL 00042000
  43. * 00043000
  44. * ERROR RETURN: 00044000
  45. * R15 NON-ZERO : 00045000
  46. * = 24 USER INPUT ERRORS 00046000
  47. * 36 TARGET DISK NOT ACCESSED @VA12416 00046500
  48. * 104 VIRTUAL STORAGE CAPACITY EXCEEDED 00047000
  49. * 00048000
  50. * CALLS TO OTHER ROUTINES: 00049000
  51. * DMSFREB, DMSERR, DMSCRD 00050000
  52. * 00051000
  53. * EXTERNAL REFERENCE: 00052000
  54. * SVCSAVE 00053000
  55. * DOSCB 00054000
  56. * NUCON 00055000
  57. * BGCOM 00056000
  58. * 00057000
  59. * CALLED BY: 00058000
  60. * 00059000
  61. * LANGUAGE PROCESSORS, ROUTINES USING DOS SIMULATION, 00060000
  62. * CMS DOS OPEN ROUTINES, AMSERV INTERFACE, ETC. 00061000
  63. * 00062000
  64. * TABLES AND WORK AREAS: 00063000
  65. * 00064000
  66. * OPTAB - VALID OPTION TABLE 00065000
  67. * UNITAB - UNIT ADDRESS TABLE FOR 'SYSXXX' OPTION 00066000
  68. * OLDENTRY - SAVE AREA FOR EXISTING DOSCB BEING CHANGED 00067000
  69. * DOSCB - DOS SIMULATION CONTROL BLOCK, INCLUDING: 00068000
  70. * DOSOSDSN - BLOCK TO HOLD DOS DATA SET NAME 00069000
  71. * DOSVOLTB - BLOCK CONTAINING MULTI-VOLUME DESCRIPTIONS 00070000
  72. * DOSEXTTB - BLOCK CONTAINING EXTENT INFORMATION 00071000
  73. * 00072000
  74. * REGISTER USAGE: 00073000
  75. * 00074000
  76. * R0 - ADDRESS RETURN 00075000
  77. * R1 - PLIST ON ENTRY 00076000
  78. * R2 - WORKING REGISTER 00077000
  79. * R3 - WORKING REGISTER 00078000
  80. * R4 - DOSSECT 00079000
  81. * R5 - WORKING REGISTER 00080000
  82. * R6 - FENCE 00081000
  83. * R7 - WORKING REGISTER 00082000
  84. * R8 - WORKING REGISTER 00083000
  85. * R9 - WORKING REGISTER 00084000
  86. * R10 - INTERNAL LINKAGE 00085000
  87. * R11 - BASE2 00086000
  88. * R12 - BASE 00087000
  89. * R13 - SAVE AREA 00088000
  90. * R14 - EXTERNAL LINKAGE 00089000
  91. * R15 - EXTERNAL LINKAGE 00090000
  92. * 00091000
  93. * NOTES: 00092000
  94. * NONE. 00093000
  95. * 00094000
  96. * 00095000
  97. * OPERATION: 00096000
  98. * 00097000
  99. * NO OPERAND. DLBL WITH NO OPERAND 00098000
  100. * REQUESTS A LIST OF CURRENT FILE DEFINITIONS. DOSNUM 00099000
  101. * CONTAINS THE NUMBER OF ENTRIES IN THE CHAIN OF DOSCB'S. 00100000
  102. * THE DOSFIRST FIELD ANCHORS THE DOSCB CHAIN. 00101000
  103. * IF NO OPERANDS ARE ENTERED BUT THE 'EXTENT' OR 'MULT' @VA05247 00102000
  104. * OPTIONS ARE, THE CONTENTS OF THE EXTENT OR MULTIPLE- @VA05247 00103000
  105. * VOLUMES BLOCK FOR EACH DOSCB IS LISTED. THESE OPTIONS @VA05247 00104000
  106. * WHEN USED ALONE FOR LIST PURPOSES ARE STILL MUTUALLY @VA05247 00105000
  107. * EXCLUSIVE. ANY LEGIT OPTIONS INCLUDED ARE IGNORED. @VA05247 00106000
  108. * 00107000
  109. * CLEAR. IF '*', ALL DOSCB'S ON THE CHAIN ARE RELEASED EXCEPT 00108000
  110. * THOSE FLAGGED PERMANENT. THESE ARE RELEASED ONLY WHEN 00109000
  111. * SPECIFICALLY CLEARED, USING DDNAME RATHER THAN '*'. 00110000
  112. * ANY DOSCB MAY BE CLEARED INDIVIDUALLY USING ITS DDNAME. 00111000
  113. EJECT 00112000
  114. * IF THE DDNAME 'IJSYSUC' IS ENTERED WITH CLEAR, 00113000
  115. * DMSDLB CLEARS THE ACTIVE JOB CATALOG DOSCB AND SEARCHES 00114000
  116. * THE DOSCB CHAIN TURNING OFF THE DOSJCAT AND DOSUCAT BITS 00115000
  117. * IN ANY DOSCB THAT WAS USING THE JOB CATALOG. IT ALSO 00116000
  118. * RESETS THE VSJOBCAT BIT AND VSAMJCAT FIELD IN NUCON. 00117000
  119. * AN APPROPRIATE INFO MSG IS TYPED AT TERMINAL. 00118000
  120. * 00119000
  121. * DDNAME. IS USED TO LOOP THROUGH THE DOSCB CHAIN IN 00120000
  122. * FREE STORAGE LOOKING FOR THE SPECIFIED DOSCB. IF NO 00121000
  123. * MATCH IS FOUND, THE NEW DOSCB FLAG IS SET, FREE STORAGE 00122000
  124. * IS OBTAINED, AND THE ADDRESS OF THIS DOSCB IS PLACED IN 00123000
  125. * THE FIRST WORD OF THE LAST DOSCB ON THE CHAIN. THE 00124000
  126. * ADDRESS OF THE NEW DOSCB IS PUT IN REGISTER 0 AS A 00125000
  127. * NEGATIVE QUANTITY AND SAVED TO BE PASSED BACK TO THE 00126000
  128. * USER WHEN PARAMETER PROCESSING IS COMPLETE. IF THE 00127000
  129. * PERM FLAG IS SET, THE HIGH ORDER BYTE OF THE NEW DOSCB 00128000
  130. * IS FLAGGED PERMANENT. 00129000
  131. * 00130000
  132. * IF A MATCHING DOSCB IS FOUND, AND THE XNOCHNGE FLAG IS 00131000
  133. * SET, DLBL RETURNS TO THE USER WITH THE ADDRESS OF THE 00132000
  134. * DOSCB IN REGISTER 0. 00133000
  135. * 00134000
  136. * IF A MATCHING DOSCB IS FOUND AND THE XNOCHNGE FLAG IS NOT 00135000
  137. * SET, THE OLD DOSCB IS SAVED IN CASE OF AN ERROR, THE 00136000
  138. * OLD ENTRY FLAG IS SET, AND THE ADDRESS OF THE DOSCB IS 00137000
  139. * NEGATIVELY STORED IN REGISTER 0. IF THE PERM FLAG IS 00138000
  140. * SET, THE DOSCB IS FLAGGED PERMANENT. 00139000
  141. * 00140000
  142. * IF THE DDNAME IS 'IJSYSUC' (VSAM JOB CATALOG), DMSDLB 00141000
  143. * ASSOCIATES ALL THE DOSCBS WITH THE IJSYSUC DOSCB WHICH 00142000
  144. * IS USED AS A VSAM JOB CATALOG. DMSDLB FIRST BUILDS THE 00143000
  145. * IJSYSUC DOSCB AND SETS ITS DOSDDCAT AND DOSJCAT BITS 00144000
  146. * ON TO MARK IT AS THE JCAT DOSCB. THE DOSCB 00145000
  147. * CHAIN IS SEARCHED AGAIN AND ALL DOSCBS NOT USING ANY 00146000
  148. * OTHER USER CATALOG ARE MARKED AS USING THE JCAT BY 00147000
  149. * SETTING THEIR DOSJCAT AND DOSUCAT BITS ON. I.E., THE JOB 00148000
  150. * CATALOG INCLUDES ALL DOSCBS (CURRENT AND SUBSEQUENT) 00149000
  151. * WHICH DO NOT USE ANY OTHER USER CATALOG. 00150000
  152. * THE VSJOBCAT FLAG IS SET AND THE VSAMJCAT FIELD CON- 00151000
  153. * TAINING THE DDNAME OF THE JCAT ARE BOTH UPDATED IN 00152000
  154. * NUCON. 00153000
  155. * IF IJSYSUC DOSCB (JOB CATALOG) IS ALREADY ACTIVE AND 00154000
  156. * THE NOCHANGE OPTION IS NOT USED, AN ERROR MESSAGED IS 00155000
  157. * TYPED STATING THE JCAT IS ALREADY ACTIVE. 00156000
  158. * 00157000
  159. * PROCESSING IS THEN DEPENDENT ON THE PARAMETERS SPECIFIED. 00158000
  160. EJECT 00159000
  161. * DUMMY. A DOSCB IS CREATED WITH A DEVICE TYPE OF X'00'. 00160000
  162. * OPTIONS ARE PROCESSED AS IF A MODE HAD BEEN ENTERED. 00161000
  163. * 00162000
  164. * CMS. CMS DISK FILE; FILENAME AND FILETYPE MUST BE 00163000
  165. * SPECIFIED. IF 'CMS' IS NOT ENTERED, A DEFAULT 00164000
  166. * FILEID OF 'FILE DDNAME' WILL BE USED. 00165000
  167. * 00166000
  168. * DSN. IF THE PARAMETER DSN ? IS SPECIFIED, DLBL 00167000
  169. * WILL TYPE OUT MSG DMSDLB220R TO REQUEST THE USER 00168000
  170. * TO TYPE IN A DOS DATA SET NAME IN THE FORMAT OF 00169000
  171. * Q1.Q2.QN WHERE THE Q'S ARE THE QUALIFIERS OF A 00170000
  172. * DOS OR OS DATA SET NAME. 00171000
  173. * IF THE PARAMETER DSN Q1 Q2 QN IS SPECIFIED, DLBL 00172000
  174. * WILL ASSUME THAT Q1 Q2 AND QN ARE THE QUALIFIERS 00173000
  175. * OF A DOS DATA SET NAME, AND THE QUALIFIERS ARE 00174000
  176. * STORED IN THE FORMAT Q1.Q2.QN IN A FREE STORAGE 00175000
  177. * BLOCK (DOSOSDSN) THAT IS CHAINED TO THE DOSCB. 00176000
  178. * THE DEFAULT CMS FILENAME 'FILE DDNAME' IS ASSIGNED. 00177000
  179. * 00178000
  180. * CHANGE NOCHANGE. DETERMINES IF AN EXISTING DOSCB 00179000
  181. * IS TO BE CHANGED OR SHOULD REMAIN 00180000
  182. * UNMODIFIED. CHANGE IS THE DEFAULT. 00181000
  183. * 00182000
  184. * PERM. THE DOSCB CREATED FOR THIS DDNAME IS 00183000
  185. * RETAINED UNTIL SPECIFICALLY CLEARED; 00184000
  186. * IT IS NOT REMOVED AFTER A GENERAL '*CLEAR' REQUEST. 00185000
  187. * THE DOSPERM BIT (X'04') IS SET IN THE DOSINIT BYTE. 00186000
  188. * 00187000
  189. * SYSXXX. USED BY DOS SIMULATION ROUTINES TO ASSOCIATE 00188000
  190. * THE DDNAME DESCRIBED IN DLBL WITH A DOS LOGICAL UNIT 00189000
  191. * NAME DEFINED BY A PRIOR 'ASSGN' COMMAND. 00190000
  192. * DMSDLB SIMPLY VALIDATES THE PRIOR ASSIGNMENT AND STORES 00191000
  193. * THE 2-BYTE LOGICAL UNIT CODE IN THE DOSCB (DOSYSXXX). 00192000
  194. * 00193000
  195. * BUFSP. USED TO ALLOCATE BUFFER SPACE FOR VSAM I/O ACTIVITY. 00194000
  196. * DMSDLB VALIDATES THE OPERAND VALUE AND STORES IT IN THE 00195000
  197. * DOSCB (DOSBUFSP). MAXIMUM VALUE ACCEPTED IS 999999. 00196000
  198. * 00197000
  199. * VSAM. DEFINES VSAM DATASET BY STORING AN 'A' IN DOSTYPE 00198000
  200. * FIELD OF DOSCB. IMPLIED BY OPTIONS CAT, BUFSP, EXTENT 00199000
  201. * AND MULT AND BY DDNAMES IJSYSCT AND IJSYSUC. 00200000
  202. * 00201000
  203. * CAT. ASSOCIATES THE DOSCB WITH ANOTHER DOSCB USED AS VSAM 00202000
  204. * USER CATALOG. DMSDLB INSURES THAT THE UCAT DOSCB HAS 00203000
  205. * BEEN DEFINED BY SEARCHING THE DOSCB CHAIN. WHEN THE 00204000
  206. * UCAT DOSCB IS FOUND, DMSDLB SETS THE DOSDDCAT FLAG 00205000
  207. * IN THE UCAT DOSCB TO MARK IT AS A CATALOG DATASET. 00206000
  208. * THEN DMSDLB SETS THE DOSUCAT BIT AND STORES THE 00207000
  209. * DDNAME OF THE UCAT DOSCB IN THE DOSUCNAM FIELD IN 00208000
  210. * THE DOSCB BEING DEFINED. 00209000
  211. * 00210000
  212. * 00211000
  213. EJECT 00212000
  214. * MULT. USED FOR VSAM MULTIVOLUME DATASET DESCRIPTION. 00213000
  215. * DMSDLB FREES A BLOCK OF CMS STORAGE TO BUILD A LIST 00214000
  216. * OF VOLUMES (DISKS) USED BY THE DATASET DESCRIBED BY 00215000
  217. * NEW DOSCB. THE FORMAT OF EACH DOSVOLTB BLOCK ENTRY IS: 00216000
  218. * 00217000
  219. * ------------------------------------------------------ 00218000
  220. * | | | 00219000
  221. * | DISK MODE | DOS LOGICAL UNIT CODE | 00220000
  222. * | | | 00221000
  223. * | E.G. 'A' | E.G. 'SYS001' | 00222000
  224. * | | | 00223000
  225. * |-------------------|--------------------------------| 00224000
  226. * | | SYS/PROG | UNIT | 00225000
  227. * | | | | 00226000
  228. * | X'C1' | X'01' | X'01' | 00227000
  229. * | | | | 00228000
  230. * ------------------------------------------------------ 00229000
  231. * 1 2 3 00230000
  232. * 00231000
  233. * THE DOS LOGICAL UNIT CODE BYTES ARE '0' IF OS USER. 00232000
  234. * 00233000
  235. * MULTIPLE VOLUME ENTRIES MAY BE ENTERED ON ONE LINE AND 00234000
  236. * AND MULTIPLE LINES MAY BE ENTERED. A NULL LINE INDICATES 00235000
  237. * THERE ARE NO MORE ENTRIES. A MAXIMUM OF 9 VOLUMES 00236000
  238. * (POSSIBLE CMS DISKS ACCESSED NOT INCLUDING SYSTEM DISK) 00237000
  239. * MAY BE DESCRIBED. IF THE MAXIMUM IS REACHED, A MSG IS 00238000
  240. * TYPED AND THE MULT BLOK IS STORED AS SUCH. BOTH THE 00239000
  241. * CMS MODE AND THE DOS LOGICAL UNIT ARE VALIDATED BEFORE 00240000
  242. * THEY ARE STORED IN THE MULTBLOK. 00241000
  243. * 00242000
  244. * EXTENT. USED TO DESCRIBE EACH DISK EXTENT FOR THE DATASET. 00243000
  245. * DMSDLB PROCESSES THIS OPTION IN SAME MANNER AS DESCRIBED 00244000
  246. * FOR 'MULT' OPTION EXCEPT EXTENT ACCEPTS TWO ADDITIONAL 00245000
  247. * OPERANDS, RELATIVE STARTING TRACK NO. AND NUMBER OF 00246000
  248. * TRACKS. THE FORMAT OF EACH DOSEXTTB BLOK ENTRY IS: 00247000
  249. * 00248000
  250. * ------------------------------------------------------------ 00249000
  251. * | | | | 00250000
  252. * | SAME AS | RELATIVE STARTING | NO. TRACKS | 00251000
  253. * | MULTIVOLUME| TRACK NO. OF EXTENT | IN EXTENT | 00252000
  254. * | BLOCK ENTRY| | | 00253000
  255. * | | E.G. '257' | E.G. '200' | 00254000
  256. * | | | | 00255000
  257. * | |----------------------|----------------------| 00256000
  258. * | | | | 00257000
  259. * | | X'00000101' | X'000000C8' | 00258000
  260. * | | | | 00259000
  261. * ------------------------------------------------------------ 00260000
  262. * 3 7 11 00261000
  263. * 00262000
  264. * MAXIMUM NUMBER FOR EXTENT VALUES IS 2**31-1, OR 00263000
  265. * 2,147,483,647. 00264000
  266. *. 00265000
  267. EJECT 00266000
  268. DMSDLB CSECT @V305006 00267000
  269. * 00268000
  270. * SET UP ADDRESSIBILITY AND RESET FIELDS FOR SERIAL REUSE 00269000
  271. * 00270000
  272. LR R12,R15 SET UP BASE REGISTER @V305006 00271000
  273. USING DMSDLB,R12 ... @V305006 00272000
  274. LA R11,4095 USE R11 AS 2ND BASE (SICK JOKE)@V305006 00273000
  275. LA R11,1(R12,R11) @V305006 00274000
  276. USING DMSDLB+4096,R11 @V305006 00275000
  277. USING NUCON,R0 ... @V305006 00276000
  278. ST R14,SAVE14 SAVE RETURN REGISTER @V305006 00277000
  279. L R13,CURRSAVE POINT TO SYS SAVE AREA @V305006 00278000
  280. USING SSAVE,R13 @V305006 00279000
  281. XC EGPR0(4),EGPR0 ZERO R0 FOR NOCHANGE @V305006 00280000
  282. LR R5,R1 SAVE INPUT PARAMETER POINTER@V305006 00281000
  283. XC PARMFLAG(CLEAREND-CLEARBEG),PARMFLAG RESET FLDS@V305006 00282000
  284. LA R7,OPTAB+9 GET OPTION TABLE BEGIN @V305006 00283000
  285. LA R8,14 AND LENGTH OF EACH ENTRY @V305006 00284000
  286. LA R9,TABEND-5 GET END OF TABLE @V305006 00285000
  287. RESET NI 0(R7),255-FOUND RESET OPTION 'FOUND' FLAGS @V305006 00286000
  288. BXLE R7,R8,RESET IN ALL ENTRIES IN TABLE @V305006 00287000
  289. CLM R5,8,=X'0C' HI BYTE OF R1 < X'0C' ? @V305006 00288000
  290. BL CHEKLST YES - INTERNAL CALL @V305006 00289000
  291. CLM R5,8,=X'0E' TEST FURTHER (0C/0D/0E) @V305006 00290000
  292. BH CHEKLST IF > X'0E' IT'S INTERNL CALL@V305006 00291000
  293. OI MISCFLAG,PRINT AS A CMD, ALLOW ERROR MSGS @V305006 00292000
  294. * 00293000
  295. * THE PLIST PTR IS UPDATED TO POINT TO OPERAND ONE AND 00294000
  296. * THE PLIST END INDICATOR IS PUT IN GR 6. 00295000
  297. * 00296000
  298. USING DOSSECT,R4 TABLE ADDRESSABILITY @V305006 00297000
  299. CHEKLST LA R5,8(,R5) SKIP TO FIRST PARAMETER @V305006 00298000
  300. SR R15,R15 ZERO RETURN CODE REGISTER @V305006 00299000
  301. L R6,PLISTEND SET REG 6 = X'FFFFFFFF' @V305006 00300000
  302. C R6,0(,R5) ? NULL ENTRIES ? @V305006 00301000
  303. BE LIST YES. GO LIST CURRENT DOSCB'S @V305006 00302000
  304. EJECT 00303000
  305. *********************************************************************** 00304000
  306. * CHECK FOR ALL OPTIONS. 00305000
  307. *********************************************************************** 00306000
  308. SPACE 1 00307000
  309. * FIRST CHECK FOR OPTION DELIMITERS '(', ')' 00308000
  310. C R6,8(R5) ONLY ONE PARM ENTERED? @V305006 00309000
  311. BE ERR50E ERROR IF SO @V305006 00310000
  312. SR R13,R13 USE AS 'OPTIONS FOUND' FLAG @V305006 00311000
  313. LR R2,R5 SAVE CURRENT PLIST POINTER @V305006 00312000
  314. LR R9,R6 TEMP SWITCH @V305006 00313000
  315. OPT1A C R6,0(,R2) ? END OF PARAMETER ? @V305006 00314000
  316. BE OPTSCAN YES - GO PROC OPTIONS, IF ANY@V305006 00315000
  317. CLI 0(R2),LFTPAREN ? START OF OPTIONS ? @V305066 00316000
  318. BNE ADDTO NO, TRY SOME MORE @V305006 00317000
  319. XR R9,R9 CLEAR SWITCH @V305006 00318000
  320. LR R13,R2 SAVE START OF OPTION @V305006 00319000
  321. ADDTO LA R2,8(,R2) INCREMENT @V305006 00320000
  322. CLI 0(R2),RTPAREN CHECK END OF PLIST @V305066 00321000
  323. BNE OPT1A NO - SCAN NEXT 8 BYTES @V305006 00322000
  324. LTR R9,R9 TEST FOR '(' ENTERED @V305006 00323000
  325. BNM REPFF @V305006 00324000
  326. LR R5,R2 ERROR IF NO '(' @V305006 00325000
  327. B ERR70E @V305006 00326000
  328. REPFF EQU * @V305006 00327000
  329. ST R6,0(,R2) REPL W/X'FF'S FOR LATER USE @V305006 00328000
  330. SPACE 1 00329000
  331. * NOW SCAN THE PLIST FOR THE ACTUAL OPTIONS 00330000
  332. OPTSCAN EQU * MTCH PLIST ENTRYS W/OPT TABL@V305006 00331000
  333. LTR R13,R13 ANY OPTIONS FOUND ABOVE? @V305006 00332000
  334. BZ OP1 NO--GO PROC REMAINING PARMS @V305006 00333000
  335. LA R8,8(,R13) POINT AT FIRST OPTION AND @V305006 00334000
  336. ST R8,OPSTART SAVE START OF OPTIONS @V305006 00335000
  337. LA R9,TABEND END OF OPTION TABLE 'OPTAB' @V305006 00336000
  338. LA R8,14 LENGTH OF SAME @V305006 00337000
  339. XR R3,R3 USE AS PLIST OFFSET CTR FOR PARMS@V305006 00338000
  340. TABLOOP EQU * START HERE FOR EACH PLIST ENTRY @V305006 00339000
  341. LA R7,OPTAB POINT START OF TABLE @V305006 00340000
  342. LA R3,1(,R3) INCR PLIST OFFSET COUNTR @V305006 00341000
  343. LA R13,8(,R13) POINT TO NEXT PLIST ENTRY @V305006 00342000
  344. CLC 0(3,R13),SYSXXX IS IT 'SYSXXX' OPTION? @V305006 00343000
  345. BNE CHKCAT NO, CONTINUE @VM03126 00344000
  346. TM DOSFLAGS,DOSMODE BETTER CHEK FOR DOS USER @V305006 00345000
  347. BZ ERR3EA IF NOT, IT'S INVALID @V305006 00346000
  348. LA R7,SYSXXX PT TO OPTAB FOR GOOD RETURN @V305006 00347000
  349. LA R10,MATCH RETN ADDR IF SUCCESSFUL SCAN@V305006 00348000
  350. B SYSCODE NOW GOTO SPEC CASE OPT SCAN @V305006 00349000
  351. CHKCAT CLC 0(8,R13),UCAT IS IT CAT OPTION ? @VM03130 00350000
  352. BNE ENDCHEK NO - CONTINUE @VM03126 00351000
  353. C R6,8(R13) END OF PLIST? @VM03126 00352000
  354. BNE CHK7 CHK FOR 7 CHAR CAT DDNAME @VM03126 00353000
  355. LA R13,8(R13) EXPECT PARM WITH CAT OPTION @VM03126 00354000
  356. B NULL BR TO PRINT NO PARM MESSAGE @VM03126 00355000
  357. CHK7 CLI 15(R13),BLANK ONLY 7 CHAR CAT DDNAME? @VM03126 00356000
  358. BE ENDCHEK YES, OK, CONTINUE @VM03126 00357000
  359. LA R5,8(R13) POINT TO INVALID CAT DDNAME @VM03126 00358000
  360. B ERR086E BR TO PRINT MESSAGE @VM03126 00359000
  361. ENDCHEK C R6,0(R13) END OF PLIST? @V305006 00360000
  362. BNE OPTCOMP NO - CONTINUE SCAN @V305006 00361000
  363. TM PARMFLAG,PARM THIS OPTN EXPECTING A PARM? @V305006 00362000
  364. BZ OP1 NO - END OF OPTIONS @V305006 00363000
  365. NULL LR R7,R13 YES - POINT TO NULL PARM ENTRY @VM03126 00364000
  366. B ERR29E AND TELL THE USER... @V305006 00365000
  367. EJECT 00366000
  368. OPTCOMP EQU * BXLE LOOP FOR OPTION TABLE @V305006 00367000
  369. CLC 0(8,R13),0(R7) PLIST ENTRY = TABLE OPTION @V305006 00368000
  370. BE MATCH BINGO @V305006 00369000
  371. BXLE R7,R8,OPTCOMP IF NOT, CONTINUE SCAN @V305006 00370000
  372. TM PARMFLAG,PARM THIS A PARM FOR LAST OPTION?@V305006 00371000
  373. BZ ERR3EA IF NOT, IT'S MISTAKE @V305006 00372000
  374. NI PARMFLAG,255-PARM IF SO, RESET FOR NEXT OPTION@V305006 00373000
  375. B TABLOOP IF PARM, CONT W/NEXT ENTRY @V305006 00374000
  376. MATCH EQU * IT'S A LEGIT OPTION (SO FAR)@V305006 00375000
  377. TM PARMFLAG,PARM SHOULD IT BE PARM FOR LAST OPT? @V305006 00376000
  378. BO ERR29E YES - TELL THE USER... @V305006 00377000
  379. TM 9(R7),FOUND THIS OPTION ALREADY 'FOUND'?@V305006 00378000
  380. BO ERR65E THAT'S A NO-NO...DUP OPTION @V305006 00379000
  381. L R2,10(,R7) NOW CHECK FOR CONFLICTS @V305006 00380000
  382. LA R2,0(,R2) CLEAR OFFSET BYTE FROM ADDR @V305006 00381000
  383. LTR R2,R2 ANY POSSIBLE FOR THIS OPTN? @V305006 00382000
  384. BZ CLEAN NO @V305006 00383000
  385. TM 9(R2),FOUND HAS CONFLICT BEEN ENTERED? @V305006 00384000
  386. BO ERR66E YES - TELL THE USER ABOUT IT@V305006 00385000
  387. SPACE 1 00386000
  388. CLEAN EQU * IT'S A CLEAN MACHINE! @V305006 00387000
  389. OI 9(R7),FOUND MARK THIS OPTION 'FOUND' @V305006 00388000
  390. OC OPTNFLAG,8(R7) SET OPTN FLAG FOR PROCESSING@V305006 00389000
  391. OC PARMFLAG,9(R7) REMEMBER IF IT HAS PARAMETER@V305006 00390000
  392. STC R3,10(R7) SAVE PARM PLIST OFFSET @V305006 00391000
  393. B TABLOOP AND CHECK NEXT PLIST ENTRY @V305006 00392000
  394. SPACE 2 00393000
  395. EJECT 00394000
  396. *********************************************************************** 00395000
  397. * 00396000
  398. * PROCESSING OF OPERAND ONE 00397000
  399. * 00398000
  400. * 1. TWO OPTIONS ARE POSSIBLE: 00399000
  401. * A. A DDNAME, OR 00400000
  402. * B. AN ASTERISK *, (CLEAR ALL). 00401000
  403. * 00402000
  404. * 2. TYPE AND VALIDITY ARE CHECKED. 00403000
  405. * A. WITH THE DDNAME, THE DOSCB TABLE IS SEARCHED FOR A 00404000
  406. * MATCH, AND DMSFREE CALLED IF NECESSARY. 00405000
  407. * B. FOR *, THE CLEAR OPTION IS PROCESSED. 00406000
  408. * 00407000
  409. *********************************************************************** 00408000
  410. * 00409000
  411. * PLIST POINTS TO PARAMETER 1. 00410000
  412. * THE FIRST PARAMETER IS CHECKED FOR TYPE AND VALIDITY. 00411000
  413. * 00412000
  414. OP1 EQU * @V305006 00413000
  415. CLI 0(R5),LFTPAREN '(' ENTERED AFTER 'DLBL'? @VA05247 00414000
  416. BE LIST2 IF SO, COULD WANT EXTENTS @VA05247 00415000
  417. CLI 7(R5),BLANK MORE THAN 7 CHARS ENTERED? @V305006 00416000
  418. BNE ERR086E IF SO, INVALID DOS DDNAME...@V305006 00417000
  419. CLC 0(2,R5),=CL2'*' ? CLEAR REQUEST ? @V305006 00418000
  420. BE CLEARALL YES-CLR ALL NON-PERM DOSCB'S@V305006 00419000
  421. * 00420000
  422. * VALID DDNAME EXISTS. THE NEXT CHECK IS TO SEE IF THERE IS 00421000
  423. * ALREADY AN ENTRY IN THE DOSCB TABLE. 00422000
  424. * 00423000
  425. SRCHDOS LH R2,DOSNUM GET COUNT OF DOSCB ENTRIES @V305006 00424000
  426. LTR R2,R2 ? ANY ENTRIES ? @V305006 00425000
  427. BZ NEWBLOK NO, SKIP UPDATING POINTERS @V305006 00426000
  428. * 00427000
  429. * PREVENT WILL CONTAIN THE ADDRESS OF THE LAST DOSCB ENTRY OR 00428000
  430. * THE LAST ONE BEFORE A MATCH WAS FOUND. 00429000
  431. * 00430000
  432. L R4,DOSFIRST PTR TO 1ST ENTRY. @V305006 00431000
  433. SRCHDOS1 CLC DOSDD(8),0(R5) ? FIND A MATCH ? @V305006 00432000
  434. BE OLDBLOK YES - REPLACE OLD ONE @V305006 00433000
  435. SRCHDOS5 ST R4,PREVENT SAVE PREVIOUS ENTRY POINT @V305006 00434000
  436. L R4,0(,R4) UPDATE PTR TO NEXT ENTRY @V305006 00435000
  437. BCT R2,SRCHDOS1 CONTINUE TIL NO MORE ENTRIES @V305006 00436000
  438. EJECT 00437000
  439. * 00438000
  440. * NO MATCH FOUND, SO A NEW ENTRY MUST BE OBTAINED. 00439000
  441. * 00440000
  442. NEWBLOK EQU * @V305006 00441000
  443. CLC 8(8,R5),CLEAR CLEAR REQUEST? @V305006 00442000
  444. BE ERR322I YES, TELL USER 'NO EXIST' @V305006 00443000
  445. NI MISCFLAG,255-(OLD+NEW) CLEAR FLAGBITS @V305106 00444000
  446. LA R0,DOSENSIZ GET N'DBLE WORDS FOR DOSSECT @V305006 00445000
  447. DMSFREE DWORDS=(0),TYPCALL=BALR,ERR=ERR109S @V305006 00446000
  448. OI MISCFLAG,NEW OK - SET BLK INDICATOR TO NEW@V305106 00447000
  449. LR R4,R1 GET V(DOSSECT) @V305006 00448000
  450. LR R0,R4 ADDR INTO R0 (SIC) FOR MVCL, @V305106 00449000
  451. LA R1,DOSENSIZ*8 AND SIZE (IN BYTES) INTO R1; @V305106 00450000
  452. * R14 IMMATERIAL; R15 IS STILL = 0; 00451000
  453. MVCL R0,R14 NOW CLEAR STORAGE OBTAINED. @V305106 00452000
  454. MVC DOSDD(8),0(R5) PUT DDNAME INTO NEW ENTRY @V305006 00453000
  455. MVC DOSCBID,=CL4'DLBL' DISTINGUISH DOSCB FROM CMSCB@V305006 00454000
  456. MVC DOSYSXXX(2),PLISTEND INITIALIZE LUB TO 'UA' @V305106 00455000
  457. MVI DOSTYPE,SAMDS DEFAULT TO SEQUENTIAL DATASET @V305106 00456000
  458. LNR R0,R4 @V305006 00457000
  459. L R13,CURRSAVE @V305006 00458000
  460. ST R0,EGPR0 @V305006 00459000
  461. CLC 0(8,R5),MCAT 'IJSYSCT' (MSTR CATLG) ENTERED? @V305106 00460000
  462. BNE CHKJCAT IF NOT, CONTINUE @V305106 00461000
  463. OI DOSINIT,DOSDDCAT IF SO, SIGNAL AS CATALOG @V305106 00462000
  464. MVI DOSTYPE,VSAMDS MARK AS VSAM DATASET @V305106 00463000
  465. B CHKDOS AND CONTINUE... @V305106 00464000
  466. CHKJCAT CLC 0(8,R5),JCAT 'IJSYSUC' (JOBCAT) ENTERED? @V305106 00465000
  467. BE JCATSUB GIVE IT SPECIAL TREATMENT @V305106 00466000
  468. TM OPTNFLAG,XUCAT IF 'CAT' ENTERED, DROP THRU @V305106 00467000
  469. BO CHKDOS @V305106 00468000
  470. TM VSAMFLG1,VSJOBCAT IS JOB CATALOG ACTIVE? @V305106 00469000
  471. BZ CHKDOS IF NOT, CONTINUE... @V305106 00470000
  472. OI DOSINIT,DOSJCAT+DOSUCAT IF SO, MARK THIS ALSO @V305106 00471000
  473. MVC DOSUCNAM,JCAT AND STORE THE JCAT NAME @V305106 00472000
  474. CHKDOS EQU * @V305106 00473000
  475. TM DOSFLAGS,DOSMODE+DOSSVC DOS USER? @VA11810 00474000
  476. BO CHKSYS YES, CHECK FOR SYSXXX @VA05247 00475000
  477. OI DOSINIT,DOSOS NO, MARK DOSCB AS 'OS' @VA05247 00476000
  478. B CHKPERM AND CONTINUE... @VA05247 00477000
  479. CHKSYS NI DOSINIT,255-DOSOS DOS USER...TURN OFF 'OS' @VA05247 00478000
  480. TM OPTNFLAG,XSYSXXX WAS 'SYSXXX' OPTION ENTERED?@V305106 00479000
  481. BO CHKPERM YES, WE'LL CHEK IT LATER... @V305106 00480000
  482. CLC DOSYSXXX(2),PLISTEND IF OLD BLOK CHEK FOR ENTRY@V305106 00481000
  483. BE ERR302E ERROR IF NO SYSXXX ENTRY @V305106 00482000
  484. CHKPERM EQU * @V305006 00483000
  485. TM OPTNFLAG,XPERM PERMANENT DOSCB @V305006 00484000
  486. BNO DUM NO @V305006 00485000
  487. OI DOSSECT,DOSPERM YES, FLAG IT @V305006 00486000
  488. B DUM GO PROCESS OPERAND TWO. @V305006 00487000
  489. EJECT 00488000
  490. * 00489000
  491. * AN EXISTING ENTRY WAS FOUND. 00490000
  492. * 00491000
  493. * A COPY OF IT WILL BE SAVED IN THE EVENT THAT ERRORS ARE DETECTED 00492000
  494. * BEFORE COMPLETION OF PROCESSING SO THAT A CANCELLED DLBL IMPLIES 00493000
  495. * THAT NO CHANGE HAS BEEN MADE TO EXISTING ENTRIES. 00494000
  496. * 00495000
  497. OLDBLOK EQU * @V305006 00496000
  498. CLC 8(8,R5),CLEAR CLEAR REQUEST? @V305006 00497000
  499. BE CLR YES, GET RID OF IT @V305006 00498000
  500. SRCHDOS6 TM OPTNFLAG,XNOCHNGE NOCHANGE ON EXISTING DOSCB @V305006 00499000
  501. BZ SRCHDOS3 NOPE. REVISE CURRENT DOSCB @V305006 00500000
  502. LR R0,R4 OTHERWISE, RET A(SPEC DOSCB) @V305006 00501000
  503. L R13,CURRSAVE RESTORE USER SAVE AREA @V305006 00502000
  504. ST R0,EGPR0 SAVE DOSCB ADDRESS @V305006 00503000
  505. B RETURN @V305006 00504000
  506. SRCHDOS3 OI MISCFLAG,OLD INDIC MATCH FOUND (OLD BLOCK)@V305006 00505000
  507. NI MISCFLAG,255-NEW SET BLOCK INDICATOR TO OLD @V305006 00506000
  508. LNR R0,R4 @V305006 00507000
  509. L R13,CURRSAVE @V305006 00508000
  510. ST R0,EGPR0 @V305006 00509000
  511. MVC OLDENTRY(DOSENSIZ*8),0(R4) SAVE OLDER COPY @V305006 00510000
  512. XC DOSOSFST(8),DOSOSFST CLEAR FST & DSN PTR @V305006 00511000
  513. B CHKDOS CHECK FOR DOS USER @V305006 00512000
  514. SPACE 2 00513000
  515. * 00514000
  516. * COME HERE FROM 'NEWBLOK' TO POINT ALL 00515000
  517. * CURRENT DOSCBS TO THE 'IJSYSUC' (JOB CATALOG) DOSCB 00516000
  518. * 00517000
  519. JCATSUB EQU * @V305106 00518000
  520. TM OPTNFLAG,XUCAT WAS 'UCAT' OPTION USED? @V305106 00519000
  521. BZ MARKJCAT IF NOT, CONTINUE @V305106 00520000
  522. LA R5,UCAT OTHERWISE, ERROR... @V305106 00521000
  523. B ERR3E @V305106 00522000
  524. MARKJCAT OI DOSINIT,DOSDDCAT+DOSJCAT MARK IJSYSUC AS JOBCAT @V305106 00523000
  525. OI VSAMFLG1,VSJOBCAT SIGNAL JOB CATALOG ACTIVE @V305106 00524000
  526. MVI DOSTYPE,VSAMDS MARK AS VSAM DATASET @V305106 00525000
  527. LH R1,DOSNUM GET NO. DOSCBS IN CHAIN @V305106 00526000
  528. LTR R1,R1 ANY DOSCBS ACTIVE? @V305106 00527000
  529. BZ CHKDOS IF NOT, WALK ON BY... @V305106 00528000
  530. L R3,DOSFIRST START WITH CHAIN ANCHOR @V305106 00529000
  531. DROP R4 @V305106 00530000
  532. USING DOSSECT,R3 @V305106 00531000
  533. JCLOOP TM DOSINIT,DOSDDCAT+DOSUCAT IF CATLG OR USING CATLG@V305106 00532000
  534. BNZ NXTDOS LEAVE IT ALONE @V305106 00533000
  535. OI DOSINIT,DOSJCAT+DOSUCAT IF NOT, MARK USING JCAT @V305106 00534000
  536. MVC DOSUCNAM,0(R5) AND STORE THE JCAT DDNAME @V305106 00535000
  537. NXTDOS L R3,DOSNEXT CONTINUE TO WORK THRU CHAIN @V305106 00536000
  538. BCT R1,JCLOOP UNTIL THERE ARE NO MORE... @V305106 00537000
  539. DROP R3 @V305106 00538000
  540. USING DOSSECT,R4 @V305106 00539000
  541. B CHKDOS RETURN AND HANDLE AS USUAL @V305106 00540000
  542. EJECT 00541000
  543. *********************************************************************** 00542000
  544. * 00543000
  545. * PROCESS THE 'CLEAR' OPERAND 00544000
  546. * 00545000
  547. *********************************************************************** 00546000
  548. CLEARALL EQU * ENTER HERE FOR 'CLEAR ALL' @V305006 00547000
  549. CLC CLEAR(8),8(R5) ? 2ND OPERAND CLEAR ? @V305006 00548000
  550. BNE ERR70E NO, ERROR EXIT. @V305006 00549000
  551. L R4,DOSFIRST START W/1ST DOSCB IN CHAIN @V305006 00550000
  552. CLR EQU * ENTER HERE FOR SINGLE CLEAR @V305006 00551000
  553. C R6,16(,R5) ONLY 2 PARAMETERS @V305006 00552000
  554. BE CLRLOOP YES CONTINUE @V305006 00553000
  555. LA R5,16(,R5) UPDATE PLIST FOR ERROR MSG @V305006 00554000
  556. B ERR70E PRINT ERROR MSG. @V305006 00555000
  557. CLRLOOP LA R4,0(,R4) CLEAR HIGH ORDER BYTE @V305006 00556000
  558. LTR R4,R4 END OF CHAIN @V305006 00557000
  559. BZ RETURN YES, RETURN @V305006 00558000
  560. CLC DOSDD(8),0(R5) IS THIS RIGHT DDNAM @V305006 00559000
  561. BE CLR2 YES, NOW CLEAR IT... @V305006 00560000
  562. CLI 0(R5),CHARAST IS THIS 'CLEAR ALL' ? @V305066 00561000
  563. BNE NXTCB IF NOT, TRY NEXT DOSCB @V305006 00562000
  564. TM 0(R4),DOSPERM IF SO, TEST FOR PERM DOSCB @V305006 00563000
  565. BZ CLR2 IF NOT PERM, CLEAR IT... @V305006 00564000
  566. NXTCB ST R4,PREVENT SAVE DOSCB ADDRESS @V305006 00565000
  567. L R4,0(,R4) GET NEXT DOSCB POINTER @V305006 00566000
  568. B CLRLOOP CHECK NEXT DOSCB @V305006 00567000
  569. CLR2 LR R3,R4 USE 'EXIT' CODE TO CLR BLKS @V305006 00568000
  570. BAL R9,OLDDSUB FREE DSN BLOCK @V305006 00569000
  571. BAL R9,OLDMSUB FREE MULTIVOL BLOCK @V305006 00570000
  572. BAL R9,OLDESUB FREE EXTENTS BLOCK @V305006 00571000
  573. L R1,PREVENT GET LAST BLOCK IN CHAIN @V305006 00572000
  574. LTR R1,R1 IS THIS FIRST OR ONLY BLOCK?@V305006 00573000
  575. BNZ DELINK IF NOT, TAKE BLK OUTOF CHAIN@V305006 00574000
  576. LA R1,DOSFIRST IF SO, WE NEED NEW ANCHOR @V305006 00575000
  577. DELINK MVC 1(3,R1),1(R4) MOVE FWD PTR BACK 1 IN CHAIN@V305006 00576000
  578. LH R2,DOSNUM GET NO. BLOKS IN CHAIN @V305006 00577000
  579. BCTR R2,0 DECREMENT BY 1 @V305006 00578000
  580. STH R2,DOSNUM AND STORE NEW NO. @V305006 00579000
  581. CLC DOSDD(8),MCAT MSTR CATALOG BEING CLEARED? @V305106 00580000
  582. BNE JCATCHEK IF NOT, CHEK FOR JOB CATALOG@V305106 00581000
  583. LA R8,MASTER IF SO, SET UP MESSAGE @V305106 00582000
  584. LA R10,FRETIT GO RIGHT TO FRET UPON RETURN@V305106 00583000
  585. B CLEARMSG AND TELL THE USER WHAT HE'S D@V305106 00584000
  586. JCATCHEK EQU * @V305106 00585000
  587. TM DOSINIT,DOSDDCAT+DOSJCAT CLEARING JCAT DDNAME? @V305106 00586000
  588. BNO FRETIT IF NOT, CONTINUE AS USUAL.. @V305106 00587000
  589. LR R9,R4 IF SO,SAVE PTR TO JCAT DOSCB@V305106 00588000
  590. BAL R10,JCLRSUB MAKE SURE WE CLEAN UP... @V305106 00589000
  591. LR R4,R9 RESTORE JCAT DOSCB PTR @V305106 00590000
  592. FRETIT LA R0,DOSENSIZ GET SIZE OF DOSCB @V305006 00591000
  593. LR R1,R4 AND ADDRESS OF CLEARED BLOCK@V305006 00592000
  594. L R4,0(,R4) GET NXT BLK IN CHAIN(FOR'*')@V305006 00593000
  595. BAL R10,FRET FREE THE BLOCK @V305006 00594000
  596. CLI 0(R5),CHARAST 'CLEAR ALL' ? @V305066 00595000
  597. BE CLRLOOP YES, CLR ALL DOSCB'S UNLESS PERM @V305006 00596000
  598. B RETURN IF NOT, RETURN IMMEDIATELY @V305006 00597000
  599. SPACE 2 00598000
  600. *********************************************************************** 00599000
  601. * 00600000
  602. * SUBROUTINE TO PROCESS 'IJSYSUC CLEAR' 00601000
  603. * 00602000
  604. *********************************************************************** 00603000
  605. JCLRSUB SR R2,R2 CLEAR OUT A COUPLE FOR LATER@V305106 00604000
  606. SR R3,R3 @V305106 00605000
  607. LH R1,DOSNUM GET NO. DOSCBS IN CHAIN @V305106 00606000
  608. LTR R1,R1 ANY ENTRIES? @V305106 00607000
  609. BZ CLRNUC IF NOT, JUST CLR NUCON FLDS @V305106 00608000
  610. L R4,DOSFIRST AND START WITH ANCHOR @V305106 00609000
  611. JCLRLOOP TM DOSINIT,DOSJCAT THIS DOSCB USING JOBCAT? @V305106 00610000
  612. BZ NXTONE IF NOT, TRY NEXT GUY @V305106 00611000
  613. NI DOSINIT,255-DOSJCAT-DOSUCAT JCAT INACTV FOR USER@V305106 00612000
  614. STM R2,R3,DOSUCNAM AND ERASE THE JOBCAT DDNAME @V305106 00613000
  615. NXTONE L R4,DOSNEXT LOAD UP NEXT DOSCB @V305106 00614000
  616. BCT R1,JCLRLOOP AND KEEP GOING... @V305106 00615000
  617. CLRNUC NI VSAMFLG1,255-VSJOBCAT REALLY MAKE JOBCAT INACTV @V305106 00616000
  618. LA R8,JOB SET UP JCAT CLEARED MSG @V305106 00617000
  619. SPACE 1 00618000
  620. CLEARMSG EQU * @V305106 00619000
  621. DMSERR NUM=323,LET=I,SUB=(CHARA,(R8)), @V305106*00620000
  622. TEXT='........ CATALOG DLBL CLEARED' @V305106 00621000
  623. SPACE 1 00622000
  624. BR R10 ALL DONE... RETURN TO CALLER@V305106 00623000
  625. EJECT 00624000
  626. *********************************************************************** 00625000
  627. * 00626000
  628. * PROCESS THE 'DUMMY', 'MODE', 'MODE DSN', 'MODE CMS' OPERANDS 00627000
  629. * 00628000
  630. *********************************************************************** 00629000
  631. * 00630000
  632. * PLIST (R5) STILL POINTS TO THE DDNAME (1ST OPERAND). 00631000
  633. * 00632000
  634. DUM EQU * @V305006 00633000
  635. CLC DUMMY(8),8(R5) ? DUMMY OPTION ? @V305006 00634000
  636. BNE MODE NO, GO CHECK FOR DSK. @V305006 00635000
  637. MVI DOSDEV,DOSDUM ENSURE DEVICE CODE = '00' @V305006 00636000
  638. B MODE2 AND CONTINUE @V305006 00637000
  639. MODE EQU * @V305006 00638000
  640. MVC DOSDSMD(2),8(R5) MOVE USER'S MODE TO DOSCB @VA11758 00639000
  641. CLI DOSDSMD,CHARAST IS FILE MODE ASTERISK? @VA11758 00639800
  642. BE SETDEVTP DON'T CHECK NUMBER @VA11758 00640600
  643. CLI DOSDSMD+1,BLANK IF NUMBER ENTERED--- @VA11758 00641400
  644. BNE SETDEVTP USE IT @VA11758 00642200
  645. MVI DOSDSMD+1,MODE1 ELSE SET DEFAULT TO 1 @VA11758 00643000
  646. SETDEVTP EQU * @VA11758 00643800
  647. MVI DOSDEV,DOSDSK SET DISK DEVICE TYPE @V305006 00645000
  648. MODE2 LA R9,16(,R5) POINT AT 'DSN' OR 'CMS' @V305006 00646000
  649. CLC 0(8,R9),=CL8'DSN' 'DSN' SPECIFIED? @V305006 00647000
  650. BNE CHEKCMS NO, CHEK FOR CMS DATASET @V305006 00648000
  651. OI MISCFLAG,DSNOP YES, REMEMBER DSN ENTERED @V305006 00649000
  652. B DEFAULT AND USE DEFAULT CMS FILEID @V305006 00650000
  653. CHEKCMS CLC 0(8,R9),CMS 'CMS' SPECIFIED? @V305006 00651000
  654. BNE DEFAULT NO, USE DEFAULT FILEID @V305006 00652000
  655. * YES, CHEK CMS FILEID... 00653000
  656. LA R9,8(,R9) POSITION R9 AFTER 'CMS' @V305006 00654000
  657. CLI 0(R9),LFTPAREN END OF OPERANDS? @V305066 00655000
  658. BE ERR001E FILEID MISSING... @V305006 00656000
  659. C R6,0(R9) CHEK END OF LINE @V305006 00657000
  660. BE ERR001E FILEID MISSING @V305006 00658000
  661. LA R9,8(,R9) BUMP R9 TO NEXT PLIST POS @V305006 00659000
  662. C R6,0(R9) IF END OF LINE, ERROR=NO FILETYPE@V305006 00660000
  663. BE ERR23E @V305006 00661000
  664. CLI 0(R9),LFTPAREN CHECK OPTION START @V305066 00662000
  665. BE ERR23E ALSO ERROR @V305006 00663000
  666. MVC DOSDSNAM(16),24(R5) USE USER NAME & TYPE @V305006 00664000
  667. MVC STATFN(18),DOSDSNAM INFO FOR STATE CALL @V305006 00665000
  668. LA R9,8(,R9) BUMP R9 TO NEXT PLIST POS @V305006 00666000
  669. OI MISCFLAG,CMSOP SIGNAL 'CMS' ENTERED @V305006 00667000
  670. B STATCALL @V305006 00668000
  671. SPACE 1 00669000
  672. DEFAULT MVC DOSDSNAM(8),FILE PUT IN DEFAULT NAME 'FILE' @V305006 00670000
  673. MVC DOSDSNAM+8(8),0(R5) AND USE DDNAME AS FILETYPE @V305006 00671000
  674. MVC STATFN(18),DOSDSNAM INFO FOR STATE CALL @V305006 00672000
  675. EJECT 00673000
  676. DSNCHEK EQU * @V305006 00674000
  677. TM MISCFLAG,DSNOP 'DSN' ENTERED? @V305006 00675000
  678. BZ STATCALL NO, DEFAULT ON DISK TYPE @V305006 00676000
  679. SPACE 1 00677000
  680. DMSFREE DWORDS=17,TYPCALL=BALR,ERR=ERR109S GET WK AREA@V305006 00678000
  681. SPACE 1 00679000
  682. ST R1,DSNSAVE SAVE DSN BLOCK ADDR @V305006 00680000
  683. LR R3,R1 ADDR. TO R3 @V305006 00681000
  684. CLC 8(8,R9),=CL8'?' PROMPT WANTED ? @V305006 00682000
  685. BNE NOPROMPT NO @V305006 00683000
  686. LA R9,16(0,R9) GET PAST '?' @V305006 00684000
  687. SPACE 1 00685000
  688. DMSERR TEXT='ENTER DATA SET NAME:',NUM=220,LET=R,DOT=NO 00686000
  689. SPACE 1 00687000
  690. STCM R3,BIN0111,DSNBUF SET TERMINAL READ PLIST @V305066 00688000
  691. LA R1,CONREAD PLIST TO R1 @V305006 00689000
  692. SVC 202 READ DOS DSNAME @V305006 00690000
  693. ICM R7,BIN0111,DSNBYTE GET LENGTH READ @V305066 00691000
  694. LTR R7,R7 ZERO BYTES @V305006 00692000
  695. BZ BADDSN YES, ERROR @V305006 00693000
  696. SH R7,=H'44' CHECK FOR > 44 CHARACTERS @V305006 00694000
  697. BNP OSDSNSET LESS THAN 44, CONTINUE @V305006 00695000
  698. EJECT 00696000
  699. CKOVR44 LA R1,43(R7,R3) GET ADDR OF NEXT BYTE CHECK @V305006 00697000
  700. CLI 0(R1),BLANK ANY NON BLANKS SPECIFIED? @V305006 00698000
  701. BNE BADDSN YES, THEN ERROR @V305006 00699000
  702. BCT R7,CKOVR44 CHECK NEXT CHARACTER @V305006 00700000
  703. B OSDSNSET GO COMPLETE DOSCB @V305006 00701000
  704. NOPROMPT LR R7,R3 USE R7 FOR WORK @V305006 00702000
  705. MVI 0(R3),BLANK BLANK DSNAME BLOCK @V305006 00703000
  706. MVC 1(44,R3),0(R3) PLUS ONE @V305006 00704000
  707. LA R1,45(0,R3) SET END OF DSNAME BLOCK - 3 @V305006 00705000
  708. NXTPARM LA R9,8(0,R9) NEXT PARAMETER @V305006 00706000
  709. CLI 0(R9),LFTPAREN END OF PARAM @V305066 00707000
  710. BE QUALEND YES, RELEASE WORK AREA @V305006 00708000
  711. C R6,0(R9) END OF PARAM @V305006 00709000
  712. BE QUALEND YES, RELEASE WORK AREA @V305006 00710000
  713. CR R8,R9 END OF PARAM @V305006 00711000
  714. BE QUALEND YES @V305006 00712000
  715. MVC 0(8,R7),0(R9) 1ST DOS QUALIFIER (OR NEXT) @V305006 00713000
  716. NXTQUAL LA R7,1(0,R7) NEXT CHAR. THIS QUALIFIER @V305006 00714000
  717. CR R7,R1 CHECK AGAINST 44 BYTE LIMIT @V305006 00715000
  718. BH BADDSN IF HIGH ERROR @V305006 00716000
  719. CLI 0(R7),BLANK BLANK @V305006 00717000
  720. BE PERIOD YES, SET PERIOD @V305006 00718000
  721. CLI 0(R7),DECPT IS PERIOD SPECIFIED? @V305066 00719000
  722. BE BADDSN YES, THEN BAD DATA SET NAME @V305006 00720000
  723. B NXTQUAL LOOK AT NEXT CHAR @V305006 00721000
  724. SPACE 1 00722000
  725. PERIOD MVI 0(R7),DECPT SET QUALIFIER END @V305066 00723000
  726. LA R7,1(0,R7) GET PAST PERIOD @V305006 00724000
  727. B NXTPARM CHECK FOR ANOTHER QUALIFIER @V305006 00725000
  728. QUALEND SH R7,=H'1' BACK OFF LAST PERIOD @V305006 00726000
  729. CR R7,R3 WERE ANY QUALIFIERS ENTERED @V305006 00727000
  730. BNH BADDSN NO, ERROR @V305006 00728000
  731. MVI 0(R7),BLANK RESET LAST PERIOD TO BLANK @V305006 00729000
  732. OSDSNSET LR R2,R3 SET TO SCAN FOR INVLD NAME @V305006 00730000
  733. CLI 0(R2),DECPT 1ST CHAR = '.' @V305066 00731000
  734. BE BADDSN YES, ERROR @V305006 00732000
  735. DSNLP LA R7,43(,R3) POINT TO END OF DSNAME @V305006 00733000
  736. SR R7,R2 LENGTH TO TRT @V305006 00734000
  737. BM BADDSN LONGER THAN 44 CHAR @V305006 00735000
  738. EX R7,OSTRT SCAN FOR INVLD CHAR @V305006 00736000
  739. BZ GOODDSN NO INVLD CHAR @V305006 00737000
  740. LR R2,R1 SET R2 TO INVLD CHAR @V305006 00738000
  741. CLI 0(R2),DECPT IS CHAR '.' @V305066 00739000
  742. BNE BADDSN NO, ERROR @V305006 00740000
  743. LA R2,1(,R2) NEXT CHAR @V305006 00741000
  744. CLI 0(R2),DECPT IS THIS '.' ALSO @V305066 00742000
  745. BNE DSNLP NO, OK @V305006 00743000
  746. EJECT 00744000
  747. BADDSN OI MISCFLAG,DSNERRS SIGNAL FOR FRET OF ALL 17 DWRDS@V305006 00745000
  748. B ERR221E @V305006 00746000
  749. OSTRT TRT 0(*-*,R2),OSTBL EXECUTED SCAN OF DSNAME @V305006 00747000
  750. SPACE 1 00748000
  751. GOODDSN LA R1,48(,R3) RELEASE ALL BUT DSNAME @V305006 00749000
  752. LA R0,FRETWDS DOUBLEWORDS TO DMSFRET @V305066 00750000
  753. BAL R10,FRET CALL FRET @V305006 00751000
  754. SPACE 1 00752000
  755. STATCALL EQU * @V305006 00753000
  756. LA R10,DCONT COMING IN FROM ABOVE.. @V305006 00754000
  757. STATSUB EQU * MAY BE CALLED FROM ELSEWHERE@V305006 00755000
  758. LA R1,STATLST PURELY SYNTACTICAL 'STATE' @V305006 00756000
  759. IC R2,DOSFLAGS SAVE CURRENT DOS STATUS @V305006 00757000
  760. OI DOSFLAGS,DOSSVC TELL DMSROS IN CASE OF OS USER@V305006 00758000
  761. SVC 202 @V305006 00759000
  762. DC AL4(*+4) @V305006 00760000
  763. STC R2,DOSFLAGS RESTORE DOS STATUS @V305006 00761000
  764. LTR R15,R15 @V305006 00762000
  765. BZ DISKCHEK IGNORE IF FOUND @V305006 00763000
  766. CH R15,=H'28' @V305006 00764000
  767. BE DISKCHEK IGNORE 'NOT FOUND' @V305006 00765000
  768. CH R15,=H'36' DISK NOT ACCESSED @VA12416 00765500
  769. BE ERRMSG36 YES, ISSUE MSG69E @VA12416 00765600
  770. CH R15,=H'80' DOS DATA SET NOT FOUND @V305006 00766000
  771. BL EXIT SYNTAX OR DISK NOT ACCESSED PROB @V305006 00767000
  772. DISKCHEK SR R15,R15 CLEAR R15; @V305106 00768000
  773. CLI DOSDEV,DOSDUM PERCHANCE 'DUMMY' SPEC'FD? @V305106 00769000
  774. BER R10 YES-RETN TO CALLER (W/R15=0)@V305106 00770000
  775. L R15,VCADTLKP OTHERWISE, CHECK @VM03093 00771000
  776. BALR R14,R15 THE DISK FORMAT @V305106 00772000
  777. XR R15,R15 CLEAR R15 IN CASE NO ERRS @V305006 00773000
  778. USING ADTSECT,R1 ADT OF DISK RETURNED IN R1 @V305006 00774000
  779. TM ADTFLG2,ADTFROS+ADTFDOS IS DISK OS OR DOS? @V305006 00775000
  780. BZ CMSDISK NO, MUST BE CMS DISK @V305006 00776000
  781. TM MISCFLAG,CMSOP WAS 'CMS' ENTERED? @V305006 00777000
  782. BZR R10 IF NOT, NO SWEAT. @V305006 00778000
  783. LA R3,CMS IF SO, TELL USER TYPE OF DATASET @V305006 00779000
  784. LA R2,NONCMS AND TYPE OF DISK FORMAT. @V305006 00780000
  785. B ERR308E @V305006 00781000
  786. CMSDISK TM MISCFLAG,DSNOP WAS 'DSN' SPECIFIED? @V305006 00782000
  787. BZR R10 IF NOT, CMS DATASET AND DISK@V305006 00783000
  788. LA R3,NONCMS IF SO, NONCMS DATASET @V305006 00784000
  789. LA R2,CMS ON CMS DISK? ...ERROR @V305006 00785000
  790. B ERR308E @V305006 00786000
  791. DCONT EQU * DROP THRU IN CASE OF MASTER MODE @V305106 00787000
  792. CLI DOSDEV,DOSDUM PERCHANE 'DUMMY' ? @VM03114 00788000
  793. BE DCONT2 YES, CONTINUE BELOW. @VM03114 00789000
  794. TM ADTFLG2,ADTFROS+ADTFDOS IS MASTER DISK OS/DOS ? @V305106 00790000
  795. DROP R1 @V305106 00791000
  796. BZ CMSFLG NO, MUST BE CMS DISK @V305106 00792000
  797. OI MISCFLAG,DSNOP MARK AS DOS/OS DISK @V305106 00793000
  798. OI DOSINIT,DOSDOS MARK AS DEFINED FOR DOS DISK@VA05247 00794000
  799. NI DOSINIT,255-DOSCMS CLEAN UP OLD SETTINGS @VA05247 00795000
  800. B DCONT2 AND CONTINUE BELOW @VM03114 00796000
  801. CMSFLG OI MISCFLAG,CMSOP MARK AS CMS DISK @V305106 00797000
  802. OI DOSINIT,DOSCMS MARK AS DEFINED FOR CMS DISK@VA05247 00798000
  803. NI DOSINIT,255-DOSDOS CLEAN UP OLD SETTINGS @VA05247 00799000
  804. DCONT2 C R6,0(R9) IF END OF LINE, GET OUT @VM03114 00800000
  805. BE EXIT @V305006 00801000
  806. CLI 0(R9),LFTPAREN START OF OPTIONS?? @V305066 00802000
  807. BNE ERR70EB IF NOT, TOO MANY PARMS.. @V305006 00803000
  808. EJECT 00804000
  809. *********************************************************************** 00805000
  810. * 00806000
  811. * OPTION PROCESSING 00807000
  812. * 00808000
  813. * TEST EACH OPTION'S FLAG IN 'OPTNFLAG;' 00809000
  814. * IF THE OPTION HAS BEEN ENTERED, PROCESS IT ACCORDINGLY. 00810000
  815. * IF THE 'PARM' FLAG IN 'OPTAB' IS ON FOR THE OPTION, ITS 00811000
  816. * PARAMETER MAY BE FOUND IN THE PLIST BY THE OFFSET FIELD 00812000
  817. * SET PREVIOUSLY IN ITS 'OPTAB' ENTRY. 00813000
  818. * 00814000
  819. *********************************************************************** 00815000
  820. SPACE 2 00816000
  821. *********************************************************************** 00817000
  822. * 00818000
  823. * PROCESS THE 'BUFSP' OPTION 00819000
  824. * 00820000
  825. *********************************************************************** 00821000
  826. BUFSPCHK EQU * @V305106 00822000
  827. TM OPTNFLAG,XBUFSP 'BUFSP' OPTION ENTERED? @V305106 00823000
  828. BZ SYSCHK IF NOT, TRY NEXT OPTION... @V305106 00824000
  829. SPACE 1 00825000
  830. TM MISCFLAG,CMSOP WAS 'CMS' ENTERED? @V305106 00826000
  831. BO ERR308EA SORRY, THIS IS VSAM OPTION..@V305106 00827000
  832. XR R8,R8 @V305106 00828000
  833. IC R8,BUFSP+10 GET PLIST DISPL FOR BUFSP VALUE @V305106 00829000
  834. SLL R8,3 MULT X 8 (SIZE OF CMS TOKEN)@V305106 00830000
  835. A R8,OPSTART ADD OPTN START, PT AT BUFSP VALUE@V305106 00831000
  836. BAL R10,CONVERT MAKE SURE IT'S VALID @V305106 00832000
  837. C R3,=F'999999' CHEK UPPER VSAM BUFSP LIMIT @V305106 00833000
  838. BH ERR304E ERROR IF MORE @V305106 00834000
  839. ST R3,DOSBUFSP GOOD VALUE, STOR IT IN DOSCB@V305106 00835000
  840. MVI DOSTYPE,VSAMDS MARK AS VSAM DATASET @V305106 00836000
  841. EJECT 00837000
  842. *********************************************************************** 00838000
  843. * 00839000
  844. * PROCESS THE 'SYSXXX' OPTION 00840000
  845. * 00841000
  846. *********************************************************************** 00842000
  847. SYSCHK EQU * @V305006 00843000
  848. TM OPTNFLAG,XSYSXXX WAS 'SYSXXX' ENTERED? @V305006 00844000
  849. BZ MULTCHK NO - TRY NEXT OPTION @V305006 00845000
  850. SPACE 1 00846000
  851. IC R1,DOSDSMD LOAD CURRENT MODE FOR VER'FN@V305006 00847000
  852. BAL R10,UNITEST INSURE ASSGN DONE FOR UNIT @V305006 00848000
  853. MVC DOSYSXXX,SAVEUNIT ASSGN DONE,STOR UNIT IN DOSCB@V305006 00849000
  854. TM OPTNFLAG,XMULT 'MULT' ENTERED? @V305106 00850000
  855. BO SYSEXT YES, DON'T BOTHER WITH FOLLOWING @V305106 00851000
  856. L R1,DOSVOLTB NO, CK FOR EXSTNG MULT BLK @V305106 00852000
  857. LTR R1,R1 ... @V305106 00853000
  858. BZ SYSEXT NONE, CHEK FOR EXTENT BLOK..@V305106 00854000
  859. LA R2,MULTLEN BINGO, LOAD ENTRY LENGTH @V305066 00855000
  860. XR R3,R3 @V305106 00856000
  861. ICM R3,1,DOSVOLNO AND NOUMBER ENTRIES @V305106 00857000
  862. BAL R10,MODESRCH SRCH MULT BLK FOR MSTR MODE @V305106 00858000
  863. SPACE 00859000
  864. SYSEXT TM OPTNFLAG,XEXTENT 'EXTENT' ENTERED? @V305106 00860000
  865. BO MULTCHK YES, DON'T BOTHER WITH FOLLOWING @V305106 00861000
  866. L R1,DOSEXTTB EXISTING EXTENT BLOK? @V305106 00862000
  867. LTR R1,R1 ... @V305106 00863000
  868. BZ MULTCHK NO, CONTINUE... @V305106 00864000
  869. LA R2,EXTLEN GET EXTENT ENTRY LENGTH @V305066 00865000
  870. XR R3,R3 .. @V305106 00866000
  871. ICM R3,1,DOSEXTNO AND NUMBER OF ENTRIES @V305106 00867000
  872. BAL R10,MODESRCH LK FOR MSTR MODE IN EXT BLK @V305106 00868000
  873. B MULTCHK CONTINUE OPTION CHEKING... @V305106 00869000
  874. SPACE 00870000
  875. MODESRCH EQU * SCAN A BLK FOR 'MASTER' MODE@V305106 00871000
  876. BLOOP CLC 0(1,R1),DOSDSMD MODE MATCH? @V305106 00872000
  877. BNE GETNEXT NO, KEEP LOOKING... @V305106 00873000
  878. MVC 1(2,R1),DOSYSXXX YES, STOR NEW LOG UNIT CODE @V305106 00874000
  879. GETNEXT LA R1,0(R2,R1) POINT TO NEXT ENTRY @V305106 00875000
  880. BCT R3,BLOOP LOOP THRU BLOK @V305106 00876000
  881. BR R10 RETN->CALLER WHEN END OF BLK@V305106 00877000
  882. EJECT 00878000
  883. SPACE 2 00879000
  884. *********************************************************************** 00880000
  885. * 00881000
  886. * 'SYSCODE' SUBROUTINE VALIDATES THE XXX OF THE 'SYSXXX' 00882000
  887. * OPTION AS A LEGITIMATE DOS LOGICAL UNIT. 00883000
  888. * 00884000
  889. * ENTRY - R13 POINTS TO USER SYSXXX ENTRY 00885000
  890. * - R10 CONTAINS RETURN ADDR FOR SUCCESSFUL TEST 00886000
  891. * 00887000
  892. * EXIT - 'SAVEUNIT' CONTAINS 2-BYTE UNIT CODE 00888000
  893. * 00889000
  894. * REGISTER USAGE - 1,2 00890000
  895. * 00891000
  896. * CALLED BY - 'OPTSCAN' ROUTINE FOR 'SYSXXX' OPTION, 00892000
  897. * AND BY 'MULT' AND 'EXTENT' OPTION PROCESSING 00893000
  898. * 00894000
  899. *********************************************************************** 00895000
  900. SYSCODE EQU * SPEC CASE VALID'N FOR 'SYSXXX' @V305006 00896000
  901. MVC SAVESYS,0(R13) SAVE THE 'XXX' IN CASE ERROR@V305006 00897000
  902. CLC 3(3,R13),=CL3'000' PROG/SYSTEM UNIT @V305006 00898000
  903. BL SYSTEM SYSTEM UNIT @V305006 00899000
  904. MVI SAVEUNIT,PROG PROGRAMMER LUB UNIT @V305006 00900000
  905. CLC 3(3,R13),=CL3'241' EXCEEDS MAX PROG LUB UNIT ? @V305006 00901000
  906. BH ERR3EA YES, INVALID OPTION @V305006 00902000
  907. PACK PACKFLD(8),3(3,R13) PACK XXX VALUE @V305006 00903000
  908. CVB R1,PACKFLD CONVERT IT TO BINARY @V305006 00904000
  909. STC R1,SAVEUNIT+1 SAVE CONVERTED XXX @V305006 00905000
  910. BR R10 ALL DONE FOR NOW @V305006 00906000
  911. SYSTEM MVI SAVEUNIT,SYSLOG SYSTEM LUB UNIT @V305006 00907000
  912. LA R1,UNITTAB GET SYSTEM TABLE BEGIN @V305006 00908000
  913. LA R2,UNITEND GET SYSTEM TABLE ENTRIES @V305006 00909000
  914. REPEAT CLC 3(3,R13),0(R1) MATCH ? @V305006 00910000
  915. BE MOVE1 YES, BRANCH @V305006 00911000
  916. LA R1,4(,R1) BUMP TO NEXT ENTRY @V305006 00912000
  917. BCT R2,REPEAT KEEP LOOKING @V305006 00913000
  918. B ERR3EA NOT FOUND @V305006 00914000
  919. MOVE1 MVC SAVEUNIT+1(1),3(R1) MOVE SYS LUB UNIT TO SAVE @V305006 00915000
  920. BR R10 ALL DONE @V305006 00916000
  921. EJECT 00917000
  922. *********************************************************************** 00918000
  923. * 00919000
  924. * 'UNITEST' SUBROUTINE SEARCHES THE DOS LUB AND 00920000
  925. * PUB TO INSURE THAT THE USER HAS PREVIOUSLY ISSUED 00921000
  926. * AN ASSGN COMMAND TO ASSOCIATE A DOS LOGICAL UNIT 00922000
  927. * WITH A CMS DISK MODE. 00923000
  928. * 00924000
  929. * ENTRY - R1 CONTAINS CMS DISK MODE LETTER IN LOW ORDER BYTE 00925000
  930. * - R10 CONTAINS RETURN ADDRESS FOR SUCCESSFUL TEST 00926000
  931. * - 'SAVEUNIT' CONTAINS LOGICAL UNIT CODE OBTAINED 00927000
  932. * FROM SUCCESSFUL 'SYSCODE' CALL 00928000
  933. * 00929000
  934. * REGISTER USAGE - 2,3,5,7 00930000
  935. * 00931000
  936. * CALLED BY - 'SYSXXX', 'MULT' AND 'EXTENT' OPTION PROCESSING 00932000
  937. * 00933000
  938. *********************************************************************** 00934000
  939. UNITEST EQU * @V305006 00935000
  940. USING BGCOM,R7 ESTABLISH COMREG ADDRESSABILITY @V305006 00936000
  941. GETLUB L R7,ASYSREF GET ADDRESS OF BGCOM @V305006 00937000
  942. LH R3,NICLPT NICL ADDRESS @V305006 00938000
  943. SR R2,R2 CLEAR REGISTER R2 @V305006 00939000
  944. IC R2,0(R3) NO. SYS LOGICAL UNITS FROM NICL @V305006 00940000
  945. SR R3,R3 CLEAR REGISTER @V305006 00941000
  946. IC R3,SAVEUNIT+1 LOG UNIT CLASS @V305006 00942000
  947. TM SAVEUNIT,PROG PROGRAMMER LOGICAL UNIT ? @V305006 00943000
  948. BNO DOUBLE NO, MUST BE SYSTEM UNIT @V305006 00944000
  949. AR R3,R2 INCREM BY NO SYSTEM LUBS @V305006 00945000
  950. DOUBLE AR R3,R3 DOUBLE VALUE IN R3 @V305006 00946000
  951. AH R3,LUBPT ADD LUB TABLE ADDRESS @V305006 00947000
  952. CLI DOSDEV,DOSDUM 'DUMMY' MODE USED? @V305006 00948000
  953. BNE GETPUB IF NOT, CHEK FOR MODE IN PUB @V305006 00949000
  954. TM VSAMFLG1,VSAMSERV IS THIS AMS 'TLBL' CALL? @V305106 00950000
  955. BOR R10 YES, RETURN FOR AMSERV DUMMY @VM03008 00951000
  956. CLI 0(R3),IGNORE IF 'DUMMY', ASSIGNED AS 'IGN'? @V305006 00952000
  957. BNE ERR306E ERROR IF NOT... @V305006 00953000
  958. BR R10 RETURN 'CAUSE IT'S OK @V305006 00954000
  959. * AT THIS TIME R3 POINTS TO LUB BYTE 00955000
  960. GETPUB LH R2,PUBPT PUB ADDRESS @V305006 00956000
  961. SR R5,R5 CLEAR REGISTER @V305006 00957000
  962. IC R5,0(R3) CONTAINS PUB INDEX CODE @V305006 00958000
  963. SLL R5,3 MULTIPLY BY LENGTH OF PUB @V305006 00959000
  964. AR R5,R2 ADD PUB ADDRESS @V305006 00960000
  965. DROP R7 @V305006 00961000
  966. * AT THIS TIME R5 POINTS TO CORRECT PUB ENTRY 00962000
  967. CLM R1,BIN0001,3(R5) USER'S MODE MATCH PUB ENTRY?@V305006 00963000
  968. BCR 8,R10 IF SO, IT'S O.K. TO RETURN @V305006 00964000
  969. STC R1,PARMFLAG SAVE THE MODE FOR ERRMSG @V305006 00965000
  970. B ERR301E IF NOT, STOP THE SHOW @V305006 00966000
  971. EJECT 00967000
  972. *********************************************************************** 00968000
  973. * 00969000
  974. * PROCESS THE 'MULT' OPTION 00970000
  975. * 00971000
  976. *********************************************************************** 00972000
  977. MULTCHK EQU * @V305106 00973000
  978. TM OPTNFLAG,XMULT WAS 'MULT' OPTION ENTERED? @V305106 00974000
  979. BZ EXTENCHK IF NOT, TRY NEXT OTPION @V305106 00975000
  980. SPACE 1 00976000
  981. TM MISCFLAG,CMSOP 'CMS' ENTERED? @V305106 00977000
  982. BO ERR308EA SORRY, THIS IS VSAM OPTION..@V305106 00978000
  983. MVI DOSVOLNO,ZEROVOL @V305066 00979000
  984. LA R0,MULTSIZE SIZE OF MULTBLOK IN DWORDS @V305106 00980000
  985. DMSFREE DWORDS=(0),ERR=ERR109S,TYPCALL=BALR @V305106 00981000
  986. LR R9,R1 KEEP MULTIVOL BLOK ADDR @V305106 00982000
  987. ST R9,MULTSAVE AND SAVE IT FOR POSTERITY @V305106 00983000
  988. XC 0(32,R9),0(R9) CLR BLK FOR STORING VOL INFO@V305106 00984000
  989. MVI DOSTYPE,VSAMDS MARK AS VSAM DATASET @V305106 00985000
  990. SPACE 1 00986000
  991. DMSERR LET=R,NUM=330,TEXT='ENTER VOLUME SPECIFICATIONS: ',DOT=*00987000
  992. NO @V305106 00988000
  993. SPACE 1 00989000
  994. RDLINE EQU * LOOP TO READ LINES FROM CONS@V305106 00990000
  995. BAL R10,RDTERM READ A LINE FROM CONSOLE @V305106 00991000
  996. LTR R0,R0 NULL LINE ENTERED? @V305106 00992000
  997. BNZ LINECHEK NO, VALIDATE AND STORE DATA @V305106 00993000
  998. L R9,MULTSAVE YES, LOAD THE BLOK ADDR @V305106 00994000
  999. CLI 0(R9),FIRST0 IS FIRST POSITION '0' @V305066 00995000
  1000. BNE UCATCHK NO, JUST END OF INPUT..CONT @V305106 00996000
  1001. LR R8,R9 YES, NO DATA ENTRD(1ST LINE NULL)@V305106 00997000
  1002. B ERR48E ERROR... @V305106 00998000
  1003. EJECT 00999000
  1004. LINECHEK EQU * CHEK LINE FOR VALID DATA ENTRIES @V305106 01000000
  1005. * R9 -> MULTIVOL BLOK 01001000
  1006. LR R8,R2 R8 -> CONSOLE DATA LINE @V305106 01002000
  1007. LR R6,R0 R6 = CONSOLE LINE LENGTH @V305106 01003000
  1008. CLI DOSVOLNO,0 FIRST TIME THRU (ENTRIES=0)?@V305106 01004000
  1009. BNE SCAN1 NO, MSTR MODE ALREDY ACC'TD FOR @V305106 01005000
  1010. MVC 0(1,R9),DOSDSMD INCL 'MASTER'MODE IN MULTBLK@V305106 01006000
  1011. MVC 1(2,R9),DOSYSXXX DITTO FOR LOG UNIT CODE @V305106 01007000
  1012. LA R7,ONE @V305106 01008000
  1013. STCM R7,1,DOSVOLNO INIT ENTRY COUNT TO ONE @V305106 01009000
  1014. LA R9,3(,R9) POINT TO NEXT ENTRY SLOT @V305106 01010000
  1015. SCAN1 CLI 0(R8),BLANK CURRENT CHAR BLANK? @V305106 01011000
  1016. BNE MODECHK IF NOT, IT'S MODE LETTER @V305106 01012000
  1017. NEXTSPEC EQU * @V305106 01013000
  1018. LA R8,1(,R8) IF SO, LOOK AT NEXT CHAR @V305106 01014000
  1019. BCT R6,SCAN1 CHEK FOR END OF LINE @V305106 01015000
  1020. B RDLINE IF END, READ ANOTHER LINE...@V305106 01016000
  1021. MODECHK EQU * VALIDATE MODE LETTER @V305106 01017000
  1022. CLI 0(R8),MODEA CHECK LOW RANGE @V305066 01018000
  1023. BL ERR48E ERROR IF LESS @V305106 01019000
  1024. CLI 0(R8),MODEZ ... @V305066 01020000
  1025. BE MODEOK O.K. IF 'Z' @V305106 01021000
  1026. CLI 0(R8),MODEY ... @V305066 01022000
  1027. BE MODEOK O.K. IF 'Y' @V305106 01023000
  1028. CLI 0(R8),MODEG CHECK HIGH RANGE @V305066 01024000
  1029. BH ERR48E ERROR IF HIGH @V305106 01025000
  1030. MODEOK EQU * VALID CMS DISK MODE @V305106 01026000
  1031. MVC STATMD(1),0(R8) N7 @V305106 01027000
  1032. BAL R10,STATSUB BY USING 'STATE' @V305106 01028000
  1033. MVC 0(1,R9),0(R8) STOR MODE IN MULTIVOL BLK ENTRY @V305106 01029000
  1034. TM DOSFLAGS,DOSMODE+DOSSVC DOS USER? @VA11810 01030000
  1035. BNO NXTENTRY NO, GET NEXT DISK ENTRY @VA11810 01031000
  1036. DOSUSER EQU * YES, CHEK FOR 'SYSXXX' ENTRY@V305106 01032000
  1037. LA R8,1(,R8) LOOK AT NEXT CHAR @V305106 01033000
  1038. BCT R6,SCAN2 CHEK FOR END OF LINE @V305106 01034000
  1039. B ERR302E ERROR IF NO 'SYSXXX' ENTERED@V305106 01035000
  1040. SCAN2 CLI 0(R8),BLANK CURRENT CHAR BLANK? @V305066 01036000
  1041. BE DOSUSER GET NEXT CHAR IF SO @V305106 01037000
  1042. CLC 0(3,R8),SYSXXX IF NOT, MUST BE 'SYS' @V305106 01038000
  1043. BNE ERR302E ERROR IF NO 'SYSXXX' @V305106 01039000
  1044. LR R13,R8 POINT AT ENTRY AND @V305106 01040000
  1045. BAL R10,SYSCODE VALIDATE 'XXX' AS LOG UNIT @V305106 01041000
  1046. IC R1,0(R9) MAKE SURE THE DISK WAS 'ASSGN'D @V305106 01042000
  1047. BAL R10,UNITEST DO IT @V305106 01043000
  1048. MVC 1(2,R9),SAVEUNIT COMPLETE THE MULTIVOL ENTRY @V305106 01044000
  1049. LA R8,6(,R8) POINT PAST 'SYSXXX' ENTRY @V305106 01045000
  1050. SH R6,=H'5' AND CHEK FOR END OF LINE @V305106 01046000
  1051. BM ERR302E JUST IN CASE... @V305106 01047000
  1052. BCT R6,SCAN3 @V305106 01048000
  1053. B MFINISH CLEANUP AND GET NEW LINE @V305106 01049000
  1054. SCAN3 CLI 0(R8),C',' END OF ENTRY? @V305106 01050000
  1055. BE MFINISH IF SO, GET NXT ENTRY ON LINE@V305106 01051000
  1056. CLI 0(R8),BLANK CURRENT CHAR BLANK? @V305106 01052000
  1057. BE NXTENTRY YES, CONTINUE @V305106 01053000
  1058. LR R5,R8 POINT TO JUNK @V305106 01054000
  1059. B ERR70E STRANGE DATA @V305106 01055000
  1060. NXTENTRY EQU * @V305106 01056000
  1061. LA R8,1(,R8) GET NEXT CHAR IN LINE @V305106 01057000
  1062. BCT R6,SCAN3 CHEK FOR END OF LINE @V305106 01058000
  1063. SPACE 2 01059000
  1064. MFINISH EQU * COME HERE AFTER EACH VALID ENTRY @V305106 01060000
  1065. LA R9,3(,R9) SKIP TO NEXT BLOK ENTRY @V305106 01061000
  1066. SR R7,R7 CLEAR FOR COUNT CALC. @V305106 01062000
  1067. ICM R7,1,DOSVOLNO LOAD PRESENT COUNT AND @V305106 01063000
  1068. LA R7,1(,R7) INCR COUNT BY 1 @V305106 01064000
  1069. STCM R7,1,DOSVOLNO OK, NOW STORE NEW COUNT @V305106 01065000
  1070. CLM R7,1,DISKLIM MAKE SURE NOT OUT OF ENTRIES @V305106 01066000
  1071. BL LTLIM WARN IF = 9 (POSSIBLE MODES)@V305106 01067000
  1072. SPACE 1 01068000
  1073. TM MISCFLAG,PRINT SUPPRESS ERRMSG? @V305106 01069000
  1074. BZ UCATCHK YES @V305106 01070000
  1075. DMSERR NUM=320,LET=I,TEXT='MAXIMUM NUMBER OF DISK ENTRIES RECO*01071000
  1076. RDED' @V305106 01072000
  1077. B UCATCHK CONTINUE WITH NEXT OPTION @V305106 01073000
  1078. SPACE 1 01074000
  1079. LTLIM C R6,ZERO END OF LINE? @V305106 01075000
  1080. BE RDLINE IF SO, READ ANOTHER LINE @V305106 01076000
  1081. B NEXTSPEC IF NOT, GET NEXT GROUP @V305106 01077000
  1082. EJECT 01078000
  1083. *********************************************************************** 01079000
  1084. * 01080000
  1085. * 'RDTERM' SUBROUTINE READS A LINE FROM THE CONSOLE. 01081000
  1086. * IF IT IS BEING CALLED FOR THE FIRST TIME, IT GETS 01082000
  1087. * FREE STORAGE FOR THE LINE BUFFER. WHEN A NULL LINE 01083000
  1088. * IS READ, RDTERM RETURNS THE FREE STORAGE USED FOR THE BUFFER. 01084000
  1089. * 01085000
  1090. * EXIT - R0 CONTAINS THE LENGTH OF THE LINE READ 01086000
  1091. * R2 CONTAINS THE ADDRESS OF THE LINE 01087000
  1092. * 01088000
  1093. * REGISTER USAGE - 1,2 01089000
  1094. * 01090000
  1095. * CALLED BY - 'MULT' AND 'EXTENT' OPTION PROCESSING 01091000
  1096. * 01092000
  1097. *********************************************************************** 01093000
  1098. RDTERM EQU * @V305106 01094000
  1099. XR R2,R2 @V305106 01095000
  1100. C R2,ATERMBUF IS THIS FIRST READ? @V305106 01096000
  1101. BE GETBUF IF SO, GET A CONSOLE BUFFER @V305106 01097000
  1102. L R2,ATERMBUF IF NOT, POINT TO THE BUFFER @V305106 01098000
  1103. B READ AND READ ANOTHER LINE @V305106 01099000
  1104. GETBUF DMSFREE DWORDS=17,ERR=ERR109S,TYPCALL=BALR @V305106 01100000
  1105. ST R1,ATERMBUF SAVE THE BUFFER ADDR @V305106 01101000
  1106. LR R2,R1 @V305106 01102000
  1107. READ RDTERM (R2),EDIT=UPCASE @V305106 01103000
  1108. LTR R0,R0 NULL LINE ENTERED? @V305106 01104000
  1109. BCR 7,R10 IF NOT, RETN TO CALLER IMMED@V305106 01105000
  1110. LR R1,R2 IF SO, FREE THE BUFFER @V305106 01106000
  1111. DMSFRET DWORDS=17,LOC=(1),TYPCALL=BALR @V305106 01107000
  1112. XR R0,R0 GIVE 'NULL LINE' INDICATION @V305106 01108000
  1113. BR R10 NOW RETURN TO USER @V305106 01109000
  1114. EJECT 01110000
  1115. *********************************************************************** 01111000
  1116. * 01112000
  1117. * PROCESS THE 'EXTENT' OPTION 01113000
  1118. * 01114000
  1119. *********************************************************************** 01115000
  1120. EXTENCHK EQU * @V305106 01116000
  1121. TM OPTNFLAG,XEXTENT 'EXTENT' OPTION ENTERED? @V305106 01117000
  1122. BZ UCATCHK IF NOT, TRY NEXT OPTION... @V305106 01118000
  1123. SPACE 1 01119000
  1124. TM MISCFLAG,CMSOP 'CMS' ENTERED? @V305106 01120000
  1125. BO ERR308EA SORRY, THIS IS VSAM OPTION..@V305106 01121000
  1126. MVI DOSEXTNO,ZEROEXT ZERO NO. EXTS IN NEW BLOK @V305066 01122000
  1127. LA R0,EXTNSIZE SIZE OF EXTENTS BLK IN DWRDS@V305106 01123000
  1128. DMSFREE DWORDS=(0),ERR=ERR109S,TYPCALL=BALR @V305106 01124000
  1129. LR R9,R1 KEEP EXTENTS BLOK ADDR @V305106 01125000
  1130. ST R9,EXTNSAVE AND SAVE IT FOR POSTERITY @V305106 01126000
  1131. XC 0(176,R9),0(R9) CLR BLK FOR STORING EXTENTS @V305106 01127000
  1132. MVI DOSTYPE,VSAMDS MARK AS VSAM DATASET @V305106 01128000
  1133. SPACE 1 01129000
  1134. DMSERR LET=R,NUM=331,TEXT='ENTER EXTENT SPECIFICATIONS: ',DOT=*01130000
  1135. NO @V305106 01131000
  1136. SPACE 1 01132000
  1137. RDLINE2 EQU * LOOP TO READ LINES FROM CONS@V305106 01133000
  1138. BAL R10,RDTERM READ A LINE FROM CONSOLE @V305106 01134000
  1139. LTR R0,R0 NULL LINE ENTERED? @V305106 01135000
  1140. BNZ LINECHK2 NO, VALIDATE AND STORE DATA @V305106 01136000
  1141. L R9,EXTNSAVE YES, LOAD THE BLOK ADDR @V305106 01137000
  1142. CLI 0(R9),FIRST0 IS FIRST POSITION '0' @V305066 01138000
  1143. BNE UCATCHK NO, JUST END OF INPUT..CONT @V305106 01139000
  1144. SR R5,R5 YES, NO DATA ENTRD(1ST LINE NULL)@V305106 01140000
  1145. B ERR304E ERROR... @V305106 01141000
  1146. EJECT 01142000
  1147. LINECHK2 EQU * CHEK LINE FOR VALID DATA ENTRIES @V305106 01143000
  1148. * R9 -> EXTENTS BLOK 01144000
  1149. LR R8,R2 R8 -> CONSOLE DATA LINE @V305106 01145000
  1150. LR R6,R0 R6 = CONSOLE LINE LENGTH @V305106 01146000
  1151. MVI BRSWITCH+1,ALTSW INIT ALTERNATING SWITCH @V305106 01147000
  1152. SCANA CLI 0(R8),BLANK CURRENT CHAR BLANK? @V305106 01148000
  1153. BNE TRKCHEK IF NOT, IT'S STARTING TRACK @V305106 01149000
  1154. EXSTART EQU * @V305106 01150000
  1155. LA R8,1(,R8) IF SO, LOOK AT NEXT CHAR @V305106 01151000
  1156. BCT R6,SCANA CHEK FOR END OF LINE @V305106 01152000
  1157. B RDLINE2 IF END, READ ANOTHER LINE...@V305106 01153000
  1158. TRKCHEK EQU * START CHEK FOR TRACK INFO @V305106 01154000
  1159. BAL R10,CONVERT CNVRT CHARS TO BINARY VALUE @V305106 01155000
  1160. LA R8,0(R5,R8) BUMP LINE PTR NO.CHARS(R5) @V305106 01156000
  1161. SR R6,R5 AND DON'T FORGET LINE COUNT @V305106 01157000
  1162. XI BRSWITCH+1,ALTSW ALTERNATING SWITCH... @V305066 01158000
  1163. BRSWITCH BC 15,NUMTRKS BRANCH ON EVEN TURNS @V305106 01159000
  1164. C R6,ZERO FIRST NUMBER, END OF LINE? @V305106 01160000
  1165. BE ERR305E ERROR 2ND NUMBER MISSING @V305106 01161000
  1166. ST R3,3(R9) IF NOT, STOR STARTNG TRK NO.@V305106 01162000
  1167. SCANB CLI 0(R8),BLANK NEXT CHAR BLANK? @V305106 01163000
  1168. BNE TRKCHEK IF NOT, GO CONVERT NO.TRACKS@V305106 01164000
  1169. LA R8,1(,R8) IF SO, NEXT CHAR, PLEASE @V305106 01165000
  1170. BCT R6,SCANB CHEK END OF LINE ALSO @V305106 01166000
  1171. B ERR305E ERROR IF NO 2ND NUMBER @V305106 01167000
  1172. NUMTRKS ST R3,7(R9) STORE NO.TRACKS IN BLOK @V305106 01168000
  1173. C R6,ZERO WAS IT LAST ENTRY ON LINE? @V305106 01169000
  1174. BE DEFSET IF SO, DEFAULT MODE SETTING @V305106 01170000
  1175. SCANC CLI 0(R8),BLANK IF NOT, CHEK FOR NEXT CHAR @V305106 01171000
  1176. BNE COMCHK HIT, COULD BE COMMA @V305106 01172000
  1177. LA R8,1(,R8) NEXT CHAR, PLEASE @V305106 01173000
  1178. BCT R6,SCANC AND LINE COUNT @V305106 01174000
  1179. B DEFSET USE DEFAULT MODE, ETC. @V305106 01175000
  1180. COMCHK CLI 0(R8),COMMA IS IT A COMMA? @V305066 01176000
  1181. BNE MODECHK2 IF NOT COMMA, MUST BE MODE..@V305106 01177000
  1182. DEFSET EQU * DEFAULT THE MODE AND SYSXXX @V305106 01178000
  1183. MVC 0(1,R9),DOSDSMD USE MODE FROM DOSCB @V305106 01179000
  1184. TM DOSFLAGS,DOSMODE DOS USER? @V305106 01180000
  1185. BZ EFINISH NO, DON'T WORRY ABOUT SYSXXX@V305106 01181000
  1186. MVC 1(2,R9),DOSYSXXX IF DOS, USE SYSXXX FRM DOSCB@V305106 01182000
  1187. B EFINISH GO CLEANUP A BIT... @V305106 01183000
  1188. MODECHK2 EQU * VALIDATE MODE LETTER @V305106 01184000
  1189. CLI 0(R8),MODEA CHECK LOW RANGE @V305066 01185000
  1190. BL ERR48E ERROR IF LESS @V305106 01186000
  1191. CLI 0(R8),MODEZ ... @V305066 01187000
  1192. BE MODEOK2 O.K. IF 'Z' @V305106 01188000
  1193. CLI 0(R8),MODEY ... @V305066 01189000
  1194. BE MODEOK2 O.K. IF 'Y' @V305106 01190000
  1195. CLI 0(R8),MODEG CHECK HIGH RANGE @V305066 01191000
  1196. BH ERR48E ERROR IF HIGH @V305106 01192000
  1197. MODEOK2 EQU * VALID CMS DISK MODE @V305106 01193000
  1198. MVC STATMD(1),0(R8) MAKE SURE DISK IS ACCESSED @V305106 01194000
  1199. BAL R10,STATSUB BY USING 'STATE' @V305106 01195000
  1200. MVC 0(1,R9),0(R8) STOR MODE IN EXTS BLK ENTRY @V305106 01196000
  1201. TM DOSFLAGS,DOSMODE+DOSSVC DOS USER? @VA11810 01197000
  1202. BNO NXENTRY2 NO, GET NEXT DISK ENTRY @VA11810 01198000
  1203. DOSUSER2 EQU * YES, CHEK FOR 'SYSXXX' ENTRY@V305106 01199000
  1204. LA R8,1(,R8) LOOK AT NEXT CHAR @V305106 01200000
  1205. BCT R6,SCAND CHEK FOR END OF LINE @V305106 01201000
  1206. B ERR302E ERROR IF NO 'SYSXXX' ENTERED@V305106 01202000
  1207. SCAND CLI 0(R8),BLANK CURRENT CHAR BLANK @V305066 01203000
  1208. BE DOSUSER2 GET NEXT CHAR IF SO @V305106 01204000
  1209. CLC 0(3,R8),SYSXXX IF NOT, MUST BE 'SYS' @V305106 01205000
  1210. BNE ERR302E ERROR IF NO 'SYSXXX' @V305106 01206000
  1211. LR R13,R8 POINT AT ENTRY AND @V305106 01207000
  1212. BAL R10,SYSCODE VALIDATE 'XXX' AS LOGL UNIT @V305106 01208000
  1213. IC R1,0(R9) MAKE SURE DISK WAS 'ASSGN'D @V305106 01209000
  1214. BAL R10,UNITEST DO IT @V305106 01210000
  1215. MVC 1(2,R9),SAVEUNIT COMPLETE THE EXTENTS ENTRY @V305106 01211000
  1216. LA R8,6(,R8) POINT PAST 'SYSXXX' ENTRY @V305106 01212000
  1217. SH R6,=H'5' AND CHEK FOR END OF LINE @V305106 01213000
  1218. BM ERR302E JUST IN CASE... @V305106 01214000
  1219. BCT R6,SCANE @V305106 01215000
  1220. B EFINISH CLEANUP AND GET NEW LINE @V305106 01216000
  1221. SCANE CLI 0(R8),COMMA END OF ENTRY ? @V305066 01217000
  1222. BE EFINISH IF SO, GET NXT ENTRY ON LINE@V305106 01218000
  1223. CLI 0(R8),BLANK CURRENT CHAR BLANK? @V305106 01219000
  1224. BE NXENTRY2 YES, CONTINUE @V305106 01220000
  1225. LR R5,R8 POINT TO JUNK @V305106 01221000
  1226. B ERR70E STRANGE DATA @V305106 01222000
  1227. NXENTRY2 EQU * @V305106 01223000
  1228. LA R8,1(,R8) GET NEXT CHAR IN LINE @V305106 01224000
  1229. BCT R6,SCANE CHEK FOR END OF LINE @V305106 01225000
  1230. EFINISH EQU * COME HERE AFTER EACH VALID ENTRY @V305106 01226000
  1231. LA R9,11(,R9) SKIP TO NEXT ENTRY IN BLOK @V305106 01227000
  1232. SR R7,R7 CLEAR FOR COUNT CALC. @V305106 01228000
  1233. ICM R7,1,DOSEXTNO LOAD THE PRESENT COUNT AND @V305106 01229000
  1234. LA R7,1(,R7) INCR COUNT BY 1 @V305106 01230000
  1235. STCM R7,1,DOSEXTNO OK, NOW STORE NEW COUNT @V305106 01231000
  1236. CLM R7,1,EXTNLIM MAKE SURE NOT OUT OF ENTRIES@V305106 01232000
  1237. BL LTLIM2 WARN IF=16 (POSS. EXTENTS) @V305106 01233000
  1238. SPACE 1 01234000
  1239. TM MISCFLAG,PRINT SUPPRESS ERRMSG? @V305106 01235000
  1240. BZ UCATCHK YES @V305106 01236000
  1241. DMSERR NUM=321,LET=I,TEXT='MAXIMUM NUMBER OF EXTENTS RECORDED' 01237000
  1242. B UCATCHK CONTINUE WITH NEXT OPTION @V305106 01238000
  1243. SPACE 1 01239000
  1244. LTLIM2 C R6,ZERO END OF LINE? @V305106 01240000
  1245. BE RDLINE2 IF SO, READ ANOTHER LINE @V305106 01241000
  1246. B EXSTART IF NOT, GET NEXT GROUP @V305106 01242000
  1247. EJECT 01243000
  1248. *********************************************************************** 01244000
  1249. * 01245000
  1250. * 'CONVERT' SUBROUTINE CONVERTS EBCDIC CHARACTERS TO BINARY 01246000
  1251. * VALUE. IT CHECKS THE NUMERIC VALIDITY AND SIZE OF THE ENTRY. 01247000
  1252. * 01248000
  1253. * - THE VALUE IS CHECKED FOR A MAXIMUM NUMBER OF 10 DIGITS. 01249000
  1254. * - A COUNT OF THE CHARACTERS ENTERED IS DETERMINED. 01250000
  1255. * - THEY ARE CHECKED TO MAKE SURE THEY ARE NUMERICS. 01251000
  1256. * - THE CHARACTERS ARE THEN PACKED AND CHECKED FOR A MAXIMUM 01252000
  1257. * - VALUE OF 2**31-1. 01253000
  1258. * - THE PACKED VALUE IS THEN CONVERTED TO BINARY. 01254000
  1259. * 01255000
  1260. * ENTRY - R8 CONTAINS ADDRESS OF THE EBCDIC VALUE 01256000
  1261. * 01257000
  1262. * EXIT - R3 CONTAINS THE EQUIVALENT BINARY VALUE 01258000
  1263. * R5 CONTAINS CHARACTER COUNT (MAYBE USEFUL TO CALLER) 01259000
  1264. * 01260000
  1265. * REGISTER USAGE - 3,5 01261000
  1266. * 01262000
  1267. * CALLED BY - 'EXTENT' AND 'BUFSP' OPTION PROCESSING 01263000
  1268. * 01264000
  1269. *********************************************************************** 01265000
  1270. CONVERT EQU * @V305106 01266000
  1271. LR R14,R8 SAVE POINTER TO EBCDIC VALUE @VM03191 01267000
  1272. LA R5,CHARMAX+1 SET R5 WITH MAX CHAR COUNT+1 @V305106 01268000
  1273. LA R3,CHARMAX SET R3 TO MAX CHAR COUNT @V305106 01269000
  1274. CONV1 CLI 1(R8),BLANK 1ST BLANK ? @V305106 01270000
  1275. BE CONV2 YES, CONTINUE @V305106 01271000
  1276. CLI 1(R8),COMMA LOOK AHEAD FOR POSS. COMMA @V305106 01272000
  1277. BE CONV2 YES, CONTINUE @V305106 01273000
  1278. CLI 1(R8),ENDLINE END OF CONSOLE LINE? @V305066 01274000
  1279. BE CONV2 YES, CONTINUE PROCESSING @V305106 01275000
  1280. CLI 1(R8),FENCE END OF PLIST ? @VM03191 01276000
  1281. BE CONV2 YES, CONTINUE PROCESSING @VM03191 01277000
  1282. LA R8,1(,R8) UPDATE TO NEXT CHARACTER @V305106 01278000
  1283. BCT R3,CONV1 DO THIS MAX-1 TIMES @V305106 01279000
  1284. B ERR304E TOO MANY CHARS, ERROR EXIT @V305106 01280000
  1285. * 01281000
  1286. * NOW CHECK TO MAKE SURE ALL CHARACTERS ENTERED ARE NUMERICS. 01282000
  1287. * R8 NOW POINTS TO THE LAST CHARACTER (DIGIT). 01283000
  1288. CONV2 SR R5,R3 GET COUNT OF CHAR IN R5 @V305106 01284000
  1289. LR R3,R5 IN R2 ALSO @V305106 01285000
  1290. CONV3 CLI 0(R8),CHAR0 ? IS IT NUMERIC ? @V305066 01286000
  1291. BL ERR304E NO, ERROR EXIT @V305106 01287000
  1292. CLI 0(R8),CHAR9 ... @V305066 01288000
  1293. BH ERR304E DITTO @V305106 01289000
  1294. BCTR R8,R0 BACK UP TO PREVIOUS CHAR @V305106 01290000
  1295. BCT R3,CONV3 DO THIS FOR EACH CHARACTER @V305106 01291000
  1296. * 01292000
  1297. * R8 NOW POINTS TO THE CHARACTER BEFORE THE FIRST ONE. 01293000
  1298. LA R8,1(,R8) POINT R8 TO 1ST CHAR, AND @V305106 01294000
  1299. LR R3,R5 SAVE CHAR COUNT FOR RETURN @V305106 01295000
  1300. BCTR R3,R0 REDUCE PACK COUNT FOR EXECUTE@V305106 01296000
  1301. EX R3,EXPACK PACK THE NUMERICS IN THE R8 @V305106 01297000
  1302. CP PACKFLD(8),NUMAX COMPARE IT TO THE MAX ALLOWED@V305106 01298000
  1303. BH ERR304E TOO BIG, TELL THE USER @V305106 01299000
  1304. CVB R3,PACKFLD CONVERT THIS TO BINARY @V305106 01300000
  1305. BR R10 RETURN TO CALLER @V305106 01301000
  1306. EXPACK PACK PACKFLD(8),0(,R8) PACK THE CHAR VALUE @V305106 01302000
  1307. SPACE 1 01303000
  1308. *********************************************************************** 01304000
  1309. * 01305000
  1310. * PROCESS THE 'CAT' OPTION 01306000
  1311. * 01307000
  1312. *********************************************************************** 01308000
  1313. UCATCHK EQU * @V305106 01309000
  1314. TM OPTNFLAG,XUCAT 'CAT' OPTION ENTERED? @V305106 01310000
  1315. BZ VSAMCHK NO, GO CHEK NEXT OPTION... @V305106 01311000
  1316. SPACE 1 01312000
  1317. TM MISCFLAG,CMSOP 'CMS' ENTERED? @V305106 01313000
  1318. BO ERR308EA SORRY, THIS IS VSAM OPTION..@V305106 01314000
  1319. XR R2,R2 @V305106 01315000
  1320. IC R2,UCAT+10 GET PLIST OFFSET FOR UCNAME @V305106 01316000
  1321. SLL R2,3 MULT OFFSET BY 8 (CMS TOKEN SIZE)@V305106 01317000
  1322. A R2,OPSTART ADD OPTN START,PT TO USERCAT NAME@V305106 01318000
  1323. LH R1,DOSNUM GET NO.DOSCBS FOR CHAIN SCAN@V305106 01319000
  1324. LTR R1,R1 ANY DOSCBS DEFINED? @V305106 01320000
  1325. BZ ERR307E NO CATALOG DEFINED....ERROR @V305106 01321000
  1326. DROP R4 @V305106 01322000
  1327. USING DOSSECT,R3 @V305106 01323000
  1328. L R3,DOSFIRST START SEARCH W/CHAIN ANCHOR @V305106 01324000
  1329. UCLOOP CLC DOSDD(7),0(R2) DDNAME MATCH? @V305106 01325000
  1330. BNE NXTDCB IF NOT, KEEP TRYING... @V305106 01326000
  1331. OI DOSINIT,DOSDDCAT IF FOUND, MARK AS CATALOG @V305106 01327000
  1332. B UCATOK WE'RE OK...CONTINUE @V305106 01328000
  1333. NXTDCB L R3,DOSNEXT NO, TRY NEXT DOSCB @V305106 01329000
  1334. BCT R1,UCLOOP KEEP GOING TILL WE RUN OUT..@V305106 01330000
  1335. DROP R3 @V305106 01331000
  1336. USING DOSSECT,R4 @V305106 01332000
  1337. B ERR307E DOESN'T EXIST...ERROR @V305106 01333000
  1338. SPACE 1 01334000
  1339. UCATOK MVC DOSUCNAM(8),0(R2) IT EXISTS,STOR UCNAME IN DOSCB@V305106 01335000
  1340. OI DOSINIT,DOSUCAT+DOSDDCAT MARK AS USER CATLG+USER@V305106 01336000
  1341. MVI DOSTYPE,VSAMDS MARK AS VSAM DATASET @V305106 01337000
  1342. SPACE 2 01338000
  1343. *********************************************************************** 01339000
  1344. * 01340000
  1345. * PROCESS THE 'VSAM' OPTION 01341000
  1346. * 01342000
  1347. *********************************************************************** 01343000
  1348. VSAMCHK EQU * @V305106 01344000
  1349. TM OPTNFLAG,XVSAM 'VSAM' OPTION ENTERED? @V305106 01345000
  1350. BZ EXIT NO, GO FINISH UP... @V305106 01346000
  1351. SPACE 1 01347000
  1352. TM MISCFLAG,CMSOP 'CMS' ENTERED? @V305106 01348000
  1353. BO ERR308EA SORRY, THS IS VSAM OPTION...@V305106 01349000
  1354. MVI DOSTYPE,VSAMDS MARK AS VSAM DATASET @V305106 01350000
  1355. B EXIT @V305106 01351000
  1356. EJECT 01352000
  1357. *********************************************************************** 01353000
  1358. * 01354000
  1359. * EXIT PROCESSING 01355000
  1360. * 01356000
  1361. *********************************************************************** 01357000
  1362. SPACE 2 01358000
  1363. EXIT EQU * @V305006 01359000
  1364. ST R15,SAVE15 SAVE RETURN CODE @V305006 01360000
  1365. TM MISCFLAG,NEW+OLD DID WE PROC BLOCK(OLD OR NEW) @V305006 01361000
  1366. BZ RETURN NO-EARLY ERRS, NO CLEANUP NEEDED @V305006 01362000
  1367. LTR R15,R15 ANY ERRORS? @V305006 01363000
  1368. BNZ ERRORS IF SO, SPECIAL CLEANUP CODE @V305006 01364000
  1369. TM MISCFLAG,NEW NEW DOSCB CREATED? @V305006 01365000
  1370. BZ OLDDCB IF NOT, WE CHANGED AN OLDIE @V305006 01366000
  1371. SPACE 1 01367000
  1372. *********************************************************************** 01368000
  1373. * NEW DOSCB... NO ERRORS 01369000
  1374. *********************************************************************** 01370000
  1375. L R1,MULTSAVE DID WE BLD NEW MULTIVOL BLK?@V305106 01371000
  1376. LTR R1,R1 @V305106 01372000
  1377. BZ EXTNEW IF NOT, CHEK EXTENT BLOK @V305106 01373000
  1378. ST R1,DOSVOLTB IF SO, SAVE A(MULTBLOK) IN DOSCB @V305106 01374000
  1379. EXTNEW L R1,EXTNSAVE DID WE BLD NEW EXTENTS BLK? @V305106 01375000
  1380. LTR R1,R1 @V305106 01376000
  1381. BZ DSNNEW IF NOT, CHEK FOR DSN BLOK @V305106 01377000
  1382. ST R1,DOSEXTTB IF SO, SAVE A(EXTBLOK) IN DOSCB @V305106 01378000
  1383. DSNNEW L R1,DSNSAVE DID WE BUILD A DATASETNAME BLOK? @V305006 01379000
  1384. LTR R1,R1 @V305006 01380000
  1385. BZ ATTACH IF NOT, ALL DONE, ATTACH NEW DOSC@V305006 01381000
  1386. ST R1,DOSOSDSN IF SO, SAVE A(DSNBLOK) IN DOSCB @V305006 01382000
  1387. ATTACH EQU * ATTACH NEW DOSCB TO CHAIN @V305006 01383000
  1388. L R2,PREVENT GET ADDR OF LAST ENTRY @V305006 01384000
  1389. LTR R2,R2 IS THIS FIRST ENTRY? @V305006 01385000
  1390. BNZ LINK NO, GO STORE IN PREV DOSCB @V305006 01386000
  1391. LA R2,DOSFIRST YES,USE THIS DOSCB AS ANCHOR@V305006 01387000
  1392. LINK STCM R4,BIN0111,1(R2) STOR 3-BYTE ADDR IN PREV DOSCB @V305006 01388000
  1393. * HIGH ORDER BYTE LEFT UNCHANGED 01389000
  1394. LH R2,DOSNUM GET COUNT OF ENTRIES @V305006 01390000
  1395. LA R2,1(,R2) ADD ONE TO IT, AND @V305006 01391000
  1396. STH R2,DOSNUM PUT IT BACK IN DOSCB HEADER @V305006 01392000
  1397. SPACE 1 01393000
  1398. RETURN EQU * RESTOR REGS AND RETN TO USER@V305006 01394000
  1399. L R15,SAVE15 RESTORE ERRCODE REG @V305006 01395000
  1400. L R14,SAVE14 RESTORE RETURN REG. @V305006 01396000
  1401. BR R14 RETURN @V305006 01397000
  1402. EJECT 01398000
  1403. *********************************************************************** 01399000
  1404. OLDDCB EQU * OLD DOSCB... NO ERRORS @V305006 01400000
  1405. *********************************************************************** 01401000
  1406. LA R3,OLDENTRY USE FOR MAPPING OLD COPY OF DOSCB@V305106 01402000
  1407. L R2,MULTSAVE DID WE BUILD NEW MULTBLOK? @V305106 01403000
  1408. LTR R2,R2 @V305106 01404000
  1409. BZ EXTOLD IF NOT, CHEK EXTENTS BLOK @V305106 01405000
  1410. LA R9,SAVMULT IF SO, CHEK FOR OLD MULTBLOK@V305106 01406000
  1411. DROP R4 @V305106 01407000
  1412. USING DOSSECT,R3 @V305106 01408000
  1413. OLDMSUB L R1,DOSVOLTB DID OLD COPY DOSCB HAVE MULTBLOK?@V305106 01409000
  1414. LTR R1,R1 @V305106 01410000
  1415. BZR R9 IF NOT, RETURN TO CALLER @V305106 01411000
  1416. DROP R3 @V305106 01412000
  1417. USING DOSSECT,R4 @V305106 01413000
  1418. LA R0,MULTSIZE GET SIZE OF MULTBLOK IN DWORDS @V305106 01414000
  1419. BAL R10,FRET FRET THE OLD MULTBLOK @V305106 01415000
  1420. BR R9 RETURN TO CALLER (OR DROP THRU) @V305106 01416000
  1421. SAVMULT ST R2,DOSVOLTB NOW SAVE A(NEW MULTBLOK) IN DOSCB@V305106 01417000
  1422. EXTOLD L R2,EXTNSAVE DID WE BUILD NEW EXTENTS BLOK? @V305106 01418000
  1423. LTR R2,R2 @V305106 01419000
  1424. BZ DSNOLD IF NOT, CHEK FOR NEW DATASETNAME @V305106 01420000
  1425. LA R9,SAVEXT IF SO, CHEK FOR OLD DSNAME BLOK @V305106 01421000
  1426. DROP R4 @V305106 01422000
  1427. USING DOSSECT,R3 @V305106 01423000
  1428. OLDESUB L R1,DOSEXTTB DID OLD COPY DOSCB HAVE EXTBLOK? @V305106 01424000
  1429. LTR R1,R1 @V305106 01425000
  1430. BZR R9 IF NOT, RETURN TO CALLER @V305106 01426000
  1431. LA R0,EXTNSIZE IF SO, GET SIZE OF EXTBLOK @V305106 01427000
  1432. DROP R3 @V305106 01428000
  1433. USING DOSSECT,R4 @V305106 01429000
  1434. BAL R10,FRET AND FRET THE OLD EXTBLOK @V305106 01430000
  1435. BR R9 RETURN TO CALLER (OR DROP THRU) @V305106 01431000
  1436. SAVEXT ST R2,DOSEXTTB NOW SAVE A(NEW EXTBLOK) IN DOSCB @V305106 01432000
  1437. DSNOLD L R2,DSNSAVE DID WE BUILD NEW DSNAME BLOK? @V305006 01433000
  1438. LTR R2,R2 @V305006 01434000
  1439. BZ RETURN IF NOT, WE'RE ALL THRU, RETURN @V305006 01435000
  1440. LA R9,SAVDSN IF SO, CHEK OLD COPY FOR DSNBLOK @V305006 01436000
  1441. DROP R4 @V305006 01437000
  1442. USING DOSSECT,R3 @V305006 01438000
  1443. OLDDSUB L R1,DOSOSDSN DOES OLD DSNBLOK EXIST? @V305006 01439000
  1444. LTR R1,R1 @V305006 01440000
  1445. BZR R9 IF NOT, RETURN TO CALLER @V305006 01441000
  1446. LA R0,DSNSIZE DSNBLOK SIZE IN DOUBLEWORDS @V305066 01442000
  1447. DROP R3 @V305006 01443000
  1448. USING DOSSECT,R4 @V305006 01444000
  1449. BAL R10,FRET AND FRET THE OLD DSNBLOK @V305006 01445000
  1450. BR R9 RETURN TO CALLER (OR DROP THRU) @V305006 01446000
  1451. SAVDSN ST R2,DOSOSDSN NOW SAVE NEW DSNAME BLOK @V305006 01447000
  1452. B RETURN ALL DONE...RETURN @V305006 01448000
  1453. EJECT 01449000
  1454. *********************************************************************** 01450000
  1455. ERRORS EQU * ERROR(S)... OLD OR NEW DOSCB@V305006 01451000
  1456. *********************************************************************** 01452000
  1457. L R1,MULTSAVE GET ADDR OF NEW MULTBLOK(IF ANY) @V305106 01453000
  1458. LA R0,MULTSIZE AND ITS SIZE ... @V305106 01454000
  1459. BAL R10,FRET FRET NEW MULTBLOK (IF ANY) @V305106 01455000
  1460. EXTERR L R1,EXTNSAVE GET ADDR OF NEW EXTBLOK (IF ANY) @V305106 01456000
  1461. LA R0,EXTNSIZE AND ITS SIZE ... @V305106 01457000
  1462. BAL R10,FRET FRET NEW EXTENTS BLOK (IF ANY) @V305106 01458000
  1463. DSNERR L R1,DSNSAVE DID WE BUILD A NEW DSNAME BLOK? @V305006 01459000
  1464. LTR R1,R1 @V305006 01460000
  1465. BZ DCBFRET IF NOT, GO DOSCB FRET CHEK @V305006 01461000
  1466. LA R0,DSNSIZE GET SIZE OF DSN BLOCK @V305066 01462000
  1467. TM MISCFLAG,DSNERRS ERRORS IN DATASET NAME? @V305006 01463000
  1468. BZ DSNFRET IF NOT, JUST FRET NAME (6DWRDS) @V305006 01464000
  1469. LA R0,BUFFSIZE IF SO, FRET THE WHOLE BUFFER @V305066 01465000
  1470. DSNFRET BAL R10,FRET FRET THE NEW DSNAME BLOK... @V305006 01466000
  1471. SPACE 1 01467000
  1472. DCBFRET TM MISCFLAG,OLD DO WE HAVE A OLD(CHANGED) DOSCB? @V305006 01468000
  1473. BZ NEWDCB NO, MUST BE NEW... @V305006 01469000
  1474. MVC 0(DOSENSIZ*8,R4),OLDENTRY IF OLD, JUST RESTOR IT@V305006 01470000
  1475. B RETURN AND RETURN TO USER. @V305006 01471000
  1476. NEWDCB LA R0,DOSENSIZ GET SIZE OF DOSCB IN DWORDS @V305006 01472000
  1477. LR R1,R4 PROVIDE ADDR OF SAME AND... @V305006 01473000
  1478. BAL R10,FRET FRET THE NEW DOSCB. @V305006 01474000
  1479. B RETURN ALL DONE, RETURN. @V305006 01475000
  1480. SPACE 3 01476000
  1481. *********************************************************************** 01477000
  1482. * 01478000
  1483. * SUB-ROUTINE TO CALL DMSFRET 01479000
  1484. * 01480000
  1485. *********************************************************************** 01481000
  1486. FRET EQU * @V305006 01482000
  1487. LTR R1,R1 CK WHETHER BLOK REALLY EXISTS... @V305106 01483000
  1488. BZR R10 IF NOT, RETURN FORTHWITH TO CALLER@V305106 01484000
  1489. ST R15,SAVE15 @V305006 01485000
  1490. DMSFRET DWORDS=(0),LOC=(1),TYPCALL=BALR @V305006 01486000
  1491. L R15,SAVE15 @V305006 01487000
  1492. BR R10 RETURN TO INVOKER'S ADDRESS @V305006 01488000
  1493. EJECT 01489000
  1494. *********************************************************************** 01490000
  1495. * 01491000
  1496. * CONSTANTS AND WORK AREAS * 01492000
  1497. * 01493000
  1498. *********************************************************************** 01494000
  1499. SPACE 2 01495000
  1500. CONREAD DS 0D @V305006 01496000
  1501. DC CL8'CONREAD' PROMPT PLIST @V305006 01497000
  1502. DC AL1(1) @V305006 01498000
  1503. DSNBUF DC AL3(0) INPUT BUFFER @V305006 01499000
  1504. DC CL1'U' TRANSLATE TO UPPER, PAD W/BLNKS @V305006 01500000
  1505. DSNBYTE DC AL3(0) NO. OF BYTES READ @V305006 01501000
  1506. PLISTEND DC XL4'FFFFFFFF' PARAM LIST END INDICATOR. @V305006 01502000
  1507. STATLST DS 0D @V305006 01503000
  1508. DC CL8'STATE' @V305006 01504000
  1509. STATFN DC CL8' ' @V305006 01505000
  1510. DC CL8' ' @V305006 01506000
  1511. STATMD DC CL2' ' @V305006 01507000
  1512. DC CL2' ' @V305006 01508000
  1513. DC A(*-*) @V305006 01509000
  1514. SPACE 1 01510000
  1515. SAVE14 DS F @V305006 01511000
  1516. ZERO DC F'0' @V305006 01512000
  1517. FILE DC CL8'FILE' @V305006 01513000
  1518. DISK DC CL8'DISK' @V305006 01514000
  1519. CMS DC CL8'CMS' @V305006 01515000
  1520. NONCMS DC CL8'NON-CMS' @V305006 01516000
  1521. DUMMY DC CL8'DUMMY' @V305006 01517000
  1522. CLEAR DC CL8'CLEAR' @V305106 01518000
  1523. JOB DC CL8'JOB' @V305106 01519000
  1524. MASTER DC CL8'MASTER' @V305106 01520000
  1525. JCAT DC CL8'IJSYSUC' NAME OF DOS VSAM JOBCAT @V305106 01521000
  1526. MCAT DC CL8'IJSYSCT' NAME OF DOS VSAM MASTER CATALOG @V305106 01522000
  1527. PACKFLD DS D @V305006 01523000
  1528. NUMAX DC PL8'2147483647' 2**31-1 @V305006 01524000
  1529. SAVESYS DC CL8'SYS___ ' SYSXXX ENTRY WITH 'XXX' FILLED-IN@V305106 01525000
  1530. DISKLIM DC X'09' MAX 9 CMS MODES @V305006 01526000
  1531. EXTNLIM DC X'10' MAX 16 EXTENTS @V305006 01527000
  1532. SPACE 1 01528000
  1533. BLANK EQU C' ' @V305006 01529000
  1534. LFTPAREN EQU C'(' @V305066 01530000
  1535. RTPAREN EQU C')' @V305066 01531000
  1536. CHARAST EQU C'*' @V305066 01532000
  1537. MODE1 EQU C'1' @V305066 01533000
  1538. DECPT EQU C'.' @V305066 01534000
  1539. BIN0001 EQU B'0001' @V305066 01535000
  1540. BIN0111 EQU B'0111' @V305066 01536000
  1541. FRETWDS EQU 11 @V305066 01537000
  1542. ZEROVOL EQU X'00' @V305066 01538000
  1543. FIRST0 EQU X'00' @V305066 01539000
  1544. MODEA EQU C'A' @V305066 01540000
  1545. MODEZ EQU C'Z' @V305066 01541000
  1546. MODEY EQU C'Y' @V305066 01542000
  1547. MODEG EQU C'G' @V305066 01543000
  1548. ZEROEXT EQU X'00' @V305066 01544000
  1549. ENDLINE EQU X'00' @V305066 01545000
  1550. CHAR0 EQU C'0' @V305066 01546000
  1551. CHAR9 EQU C'9' @V305066 01547000
  1552. DSNSIZE EQU 6 @V305066 01548000
  1553. BUFFSIZE EQU 17 @V305066 01549000
  1554. FENCE EQU X'FF' FENCE CODE @VM03191 01550000
  1555. PROG EQU X'01' @V305006 01551000
  1556. SYSLOG EQU X'00' @V305006 01552000
  1557. IGNORE EQU X'FE' UNIT CODE FOR 'IGN' ASSGNMT @V305006 01553000
  1558. MULTSIZE EQU 4 SIZE OF MULTIVOL BLOK IN DWORDS @V305006 01554000
  1559. EXTNSIZE EQU 22 SIZE OF EXTENTS BLOK IN DWORDS @V305006 01555000
  1560. CHARMAX EQU 10 @V305006 01556000
  1561. VSAMDS EQU C'A' VSAM LABEL RECORD CODE @V305106 01557000
  1562. SAMDS EQU C'S' DITTO FOR SEQUENTIAL (SAM) @V305106 01558000
  1563. MULTLEN EQU 3 @V305066 01559000
  1564. EXTLEN EQU 11 @V305066 01560000
  1565. ONE EQU 1 @V305066 01561000
  1566. COMMA EQU C',' @V305066 01562000
  1567. ALTSW EQU X'F0' @V305066 01563000
  1568. EJECT 01564000
  1569. * 01565000
  1570. * THIS TABLE CONTAINS ALL VALID OPTIONS, KEYWORD & NON-KEYWORD. 01566000
  1571. * EACH TABLE ENTRY CONSISTS OF THE VALID OPTION NAME, 01567000
  1572. * AN OPTION FLAG WHICH SETS 'OPTNFLAG' FOR PROCESSING, 01568000
  1573. * A FLAG BYTE, A PARAMETER OFFSET BYTE, AND THE ADDRESS 01569000
  1574. * OF A CONFLICTING OPTION, IF ANY. 01570000
  1575. * 01571000
  1576. * THE HIGH-ORDER FOUR BITS OF THE FLAG BYTE ARE 01572000
  1577. * SET ON WHEN THE OPTION IS FOUND IN THE COMMAND LINE. 01573000
  1578. * THIS PART OF THE FLAG IS CHECKED WHEN THE CONFLICTING 01574000
  1579. * OPTION IS FOUND IN THE COMMAND LINE. 01575000
  1580. * THE LOW ORDER FOUR BITS ARE INITIALIZED ON WHEN THE OPTION 01576000
  1581. * INCLUDES A PARAMETER WHICH ALSO MUST BE PROCESSED. 01577000
  1582. * 01578000
  1583. * IF AN OPTION IS FOUND IN THE PLIST AND IT TAKES A 01579000
  1584. * PARAMETER ('PARM' FIELD IN FLAG BYTE), DLBL STORES 01580000
  1585. * THE PLIST OFFSET OF THE OPTION'S PARAMETER IN THE OFFSET 01581000
  1586. * FIELD IN 'OPTAB' TO FACILITATE OPTION PROCESSING. 01582000
  1587. * 01583000
  1588. OPTAB DS 0D @V305006 01584000
  1589. PERM DC CL8'PERM',X'40',X'00',AL1(0),AL3(0) @V305006 01585000
  1590. CHANGE DC CL8'CHANGE',X'00',X'00',AL1(0),AL3(NOCHANGE) @V305006 01586000
  1591. NOCHANGE DC CL8'NOCHANGE',X'80',X'00',AL1(0),AL3(CHANGE) @V305006 01587000
  1592. SYSXXX DC CL8'SYS000',X'20',X'00',AL1(0),AL3(0) @V305106 01588000
  1593. BUFSP DC CL8'BUFSP',X'10',X'0F',AL1(0),AL3(0) @V305106 01589000
  1594. UCAT DC CL8'CAT',X'08',X'0F',AL1(0),AL3(0) @V305106 01590000
  1595. MULT DC CL8'MULT',X'04',X'00',AL1(0),AL3(EXTENT) @V305106 01591000
  1596. EXTENT DC CL8'EXTENT',X'02',X'00',AL1(0),AL3(MULT) @V305106 01592000
  1597. VSAM DC CL8'VSAM',X'01',X'00',AL1(0),AL3(0) @V305106 01593000
  1598. TABEND EQU * @V305006 01594000
  1599. SPACE 3 01595000
  1600. UNITTAB DC CL3'RDR',BL1'00000000' @V305006 01596000
  1601. DC CL3'IPT',BL1'00000001' @V305006 01597000
  1602. DC CL3'PCH',BL1'00000010' @V305006 01598000
  1603. DC CL3'LST',BL1'00000011' @V305006 01599000
  1604. DC CL3'LOG',BL1'00000100' @V305006 01600000
  1605. DC CL3'LNK',BL1'00000101' @V305006 01601000
  1606. DC CL3'RES',BL1'00000110' @V305006 01602000
  1607. DC CL3'SLB',BL1'00000111' @V305006 01603000
  1608. DC CL3'RLB',BL1'00001000' @V305006 01604000
  1609. DC CL3'XXX',BL1'00001001' (FILLER) @VA05247 01605000
  1610. DC CL3'XXX',BL1'00001010' (FILLER) @VA05247 01606000
  1611. DC CL3'CLB',BL1'00001011' @V305006 01607000
  1612. DC CL3'XXX',BL1'00001100' (FILLER) @VA05247 01608000
  1613. DC CL3'CAT',BL1'00001101' @V305006 01609000
  1614. UNITEND EQU (*-UNITTAB)/4 @V305006 01610000
  1615. EJECT 01611000
  1616. CLEARBEG EQU * THIS IS THE BEGIN ADDR OF FLAGS @V305006 01612000
  1617. * & FIELDS THAT ARE CLEARED BY 'XC' AT START OF PROGRAM. 01613000
  1618. * KEEP IN ORDER AND ADD FIELDS THAT NEED SAME TREATMENT. 01614000
  1619. * 01615000
  1620. * FOLLOWING FLAG CORRESPONDS TO FLAG BYTE IN OPTION TABLE 01616000
  1621. * 01617000
  1622. PARMFLAG DC X'00' @V305006 01618000
  1623. PARM EQU X'0F' PREVIOUS OPTION HAS A PARAMETER @V305006 01619000
  1624. FOUND EQU X'F0' OPTION FOUND IN COMMAND LINE @V305006 01620000
  1625. * 01621000
  1626. * THE FOLLOWING FLAG CORRESPONDS TO OPTION FLAG IN OPTAB 01622000
  1627. * 01623000
  1628. OPTNFLAG DC X'00' FLG SHOWS WHICH OPTIONS ENTERED @V305006 01624000
  1629. XNOCHNGE EQU X'80' @V305006 01625000
  1630. XPERM EQU X'40' @V305006 01626000
  1631. XSYSXXX EQU X'20' @V305006 01627000
  1632. XBUFSP EQU X'10' @V305006 01628000
  1633. XUCAT EQU X'08' @V305006 01629000
  1634. XMULT EQU X'04' @V305006 01630000
  1635. XEXTENT EQU X'02' @V305006 01631000
  1636. XVSAM EQU X'01' @V305106 01632000
  1637. * 01633000
  1638. MISCFLAG DC X'00' @V305006 01634000
  1639. OLD EQU X'40' ON IF DOSCB IS OLD (TO BE MOD'FD)@V305006 01635000
  1640. NEW EQU X'80' ON IF DOSCB IS NEW @V305006 01636000
  1641. DSNOP EQU X'20' ON IF 'DSN' SPEC NONCMS DATASET @V305006 01637000
  1642. CMSOP EQU X'10' ON IF 'CMS' ENTRD FOR CMS DATASET@V305006 01638000
  1643. DSNERRS EQU X'08' ON IF FULL DSN FUFF SHLD BE FRET @V305006 01639000
  1644. PRINT EQU X'04' ON IF ERRMSGS ARE PRINTED @V305006 01640000
  1645. XFOUND EQU X'02' ON IF EXT OR MULT BLOK FOUND@VA05247 01641000
  1646. SPACE 1 01642000
  1647. ATERMBUF DS A ADDRESS OF CONSOLE BUFFER @V305106 01643000
  1648. MULTSAVE DS A ADDRESS OF MULTIVOL BLOK @V305106 01644000
  1649. EXTNSAVE DS A ADDRESS OF EXTENTS BLOK @V305106 01645000
  1650. DSNSAVE DS A ADDRESS OF DATASET NAME BLOK@V305106 01646000
  1651. PREVENT DS A PTR TO PREVIOUS DOSCB IN CHAIN @V305106 01647000
  1652. SPACE 1 01648000
  1653. SAVE15 DS F SAVE GR 15 BEFORE DMSFRET CALL. @V305006 01649000
  1654. OPSTART DS F SAVE START OF OPTIONS PTR @V305006 01650000
  1655. SAVEUNIT DS H DOS LOGICAL UNIT CODE (HEX) @V305006 01651000
  1656. SPACE 2 01652000
  1657. CLEAREND EQU * END ADDR OF REUSABLE FIELDS @V305006 01653000
  1658. * INSERT ALL REUSABLE FIELDS ABOVE THIS LABEL 01654000
  1659. EJECT 01655000
  1660. LTORG @V305006 01656000
  1661. DOSCB @V305006 01657000
  1662. DMSDLB CSECT @V305006 01658000
  1663. OLDENTRY DC (DOSEND-DOSSECT)X'DD' SAVEAREA FOR EXISTNG DOSCB@V305006 01659000
  1664. SPACE 1 01660000
  1665. OSTBL DC 256X'00' TRANSLATE TBL FOR DSNAME @V305006 01661000
  1666. ORG OSTBL+C'.' @V305006 01662000
  1667. DC X'01' @V305006 01663000
  1668. ORG OSTBL+256 @V305006 01664000
  1669. EJECT 01665000
  1670. *********************************************************************** 01666000
  1671. * 01667000
  1672. * ERROR MESSAGES 01668000
  1673. * 01669000
  1674. *********************************************************************** 01670000
  1675. ERR3EA LR R5,R13 @V305006 01671000
  1676. ERR3E EQU * @V305006 01672000
  1677. DMSERR NUM=3,LET=E,SUB=(CHARA,(R5)),TEXT='INVALID OPTION ''...*01673000
  1678. .....''' @V305006 01674000
  1679. LA R15,24 RETURN CODE = 24 @V305006 01675000
  1680. B EXIT EXIT @V305006 01676000
  1681. SPACE 2 01677000
  1682. ERR29E EQU * @V305106 01678000
  1683. LA R2,8 BACK-UP R13 TO POINT AT @VM03130 01679000
  1684. SR R13,R2 OPTION WITH NO PARAMETER. @VM03130 01680000
  1685. DMSERR TEXT='NO ''........'' SPECIFIED',NUM=5,LET=E, @VM03130*01681000
  1686. SUB=(CHARA,(R13)) @VM03130 01682000
  1687. LA R15,24 RETURN CODE = 24 @V305006 01683000
  1688. B EXIT @V305006 01684000
  1689. EJECT 01685000
  1690. ERR65E EQU * @V305006 01686000
  1691. CLC 0(3,R7),=CL3'SYS' IS THIS SYSXXX OPTION ? @V305006 01687000
  1692. BNE ERR65 NO, CONTINUE @V305006 01688000
  1693. MVC 3(3,R7),=CL3'XXX' MAKE OPTION SYSXXX @V305006 01689000
  1694. ERR65 EQU * @V305006 01690000
  1695. DMSERR NUM=65,LET=E,SUB=(CHARA,(R7)),TEXT='''........'' OPTION*01691000
  1696. SPECIFIED TWICE' @V305006 01692000
  1697. LA R15,24 RETURN CODE = 24 @V305006 01693000
  1698. B EXIT EXIT @V305006 01694000
  1699. SPACE 2 01695000
  1700. ERR66E EQU * @V305006 01696000
  1701. DMSERR NUM=66,LET=E,SUB=(CHARA,(R2),CHARA,(R7)),TEXT='''......*01697000
  1702. ..'' AND ''........'' ARE CONFLICTING OPTIONS',RENT=NO 01698000
  1703. LA R15,24 RETURN CODE = 24 @V305006 01699000
  1704. B EXIT EXIT @V305006 01700000
  1705. EJECT 01701000
  1706. ERR23E EQU * @V305006 01702000
  1707. DMSERR NUM=23,LET=E,TEXT='NO FILETYPE SPECIFIED' @V305006 01703000
  1708. LA R15,24 RETURN CODE = 24 @V305006 01704000
  1709. B EXIT EXIT @V305006 01705000
  1710. SPACE 1 01706000
  1711. ERR50E EQU * @V305006 01707000
  1712. DMSERR NUM=50,LET=E,TEXT='PARAMETER MISSING AFTER DDNAME' 01708000
  1713. LA R15,24 RETURN CODE = 24 @V305006 01709000
  1714. B EXIT EXIT @V305006 01710000
  1715. SPACE 2 01711000
  1716. ERR70EB LR R5,R9 POINT AT CORRECT PARM @V305006 01712000
  1717. ERR70E EQU * @V305006 01713000
  1718. DMSERR NUM=70,LET=E,SUB=(CHARA,(R5)),TEXT='INVALID PARAMETER '*01714000
  1719. '........''' @V305006 01715000
  1720. LA R15,24 RETURN CODE = 24 @V305006 01716000
  1721. B EXIT EXIT @V305006 01717000
  1722. EJECT 01718000
  1723. ERR322I TM MISCFLAG,PRINT SUPPRESS MSGS? @V305006 01719000
  1724. BZ RET322 YES @V305006 01720000
  1725. DMSERR NUM=322,LET=I,TEXT='DDNAME ''........'' NOT FOUND; NO C*01721000
  1726. LEAR EXECUTED',SUB=(CHARA,(R5)) @V305006 01722000
  1727. RET322 B RETURN EXIT @V305006 01723000
  1728. SPACE 2 01724000
  1729. ERR221E DMSERR TEXT='INVALID DATASET NAME',NUM=221,LET=E @V305006 01725000
  1730. LA R15,24 RETURN CODE = 24 @V305006 01726000
  1731. B EXIT EXIT @V305006 01727000
  1732. SPACE 2 01728000
  1733. EJECT 01729000
  1734. ERR48E EQU * @V305006 01730000
  1735. DMSERR NUM=48,LET=E,SUB=(CHARA,(R8)),TEXT='INVALID MODE ''..''*01731000
  1736. ' @V305006 01732000
  1737. LA R15,24 @V305006 01733000
  1738. B EXIT @V305006 01734000
  1739. SPACE 1 01735000
  1740. ERR109S EQU * @V305006 01736000
  1741. DMSERR LET=S,NUM=109,TEXT='VIRTUAL STORAGE CAPACITY EXCEEDED' 01737000
  1742. LA R15,104 @V305006 01738000
  1743. B EXIT @V305006 01739000
  1744. SPACE 1 01740000
  1745. ERR001E EQU * @V305006 01741000
  1746. DMSERR NUM=1,LET=E,TEXT='NO FILENAME SPECIFIED' @V305006 01742000
  1747. LA R15,24 @V305006 01743000
  1748. B EXIT @V305006 01744000
  1749. EJECT 01745000
  1750. ERR301E EQU * @V305006 01746000
  1751. DMSERR NUM=301,LET=E,TEXT='''......'' NOT ASSIGNED FOR DISK ''*01747000
  1752. ..''',SUB=(CHARA,SAVESYS,CHARA,(PARMFLAG,1)),RENT=NO 01748000
  1753. LA R15,36 @V305006 01749000
  1754. B EXIT @V305006 01750000
  1755. ERR302E EQU * @V305006 01751000
  1756. DMSERR LET=E,NUM=302,TEXT='NO SYSXXX OPERAND ENTERED' @V305006 01752000
  1757. LA R15,24 @V305006 01753000
  1758. B EXIT @V305006 01754000
  1759. ERR086E EQU * @V305006 01755000
  1760. DMSERR LET=E,NUM=086,SUB=(CHARA,(R5)),TEXT='INVALID DDNAME ''.*01756000
  1761. .......''' @V305006 01757000
  1762. LA R15,24 @V305006 01758000
  1763. B EXIT @V305006 01759000
  1764. EJECT 01760000
  1765. ERR304E EQU * @V305006 01761000
  1766. LR R8,R14 POINT TO PARAMETER IN ERR. @VM03191 01762000
  1767. DMSERR NUM=304,LET=E,SUB=(CHARA,((R8),(R5))),TEXT='INVALID OPE*01763000
  1768. RAND VALUE ''................''' @V305006 01764000
  1769. LA R15,24 @V305006 01765000
  1770. B EXIT @V305006 01766000
  1771. ERR305E EQU * @V305106 01767000
  1772. DMSERR NUM=305,LET=E,TEXT='INCOMPLETE EXTENT RANGE' @V305106 01768000
  1773. LA R15,24 @V305106 01769000
  1774. B EXIT @V305106 01770000
  1775. ERR306E EQU * @V305006 01771000
  1776. DMSERR NUM=306,LET=E,SUB=(CHARA,SAVESYS),TEXT='...... NOT ASSI*01772000
  1777. GNED FOR ''IGNORE''' @V305006 01773000
  1778. LA R15,36 @V305006 01774000
  1779. B EXIT @V305006 01775000
  1780. EJECT 01776000
  1781. ERR307E EQU * @V305106 01777000
  1782. DMSERR NUM=307,LET=E,SUB=(CHARA,(R2)),TEXT='CATALOG DDNAME ''.*01778000
  1783. .......'' NOT FOUND' @V305106 01779000
  1784. LA R15,24 @V305106 01780000
  1785. B EXIT @V305106 01781000
  1786. SPACE 1 01782000
  1787. ERR308EA LA R2,CMS ENTER HERE FOR VSAM OPTS W/'CMS' @V305106 01783000
  1788. LA R3,NONCMS ... @V305106 01784000
  1789. ERR308E EQU * @V305006 01785000
  1790. DMSERR NUM=308,LET=E,SUB=(CHARA,(STATMD,1),CHARA,(R2),CHARA,(R*01786000
  1791. 3)),TEXT='''..'' DISK IN ........ FORMAT; INVALID FOR ..*01787000
  1792. ...... DATASET',RENT=NO @V305006 01788000
  1793. LA R15,24 @VA05247 01789000
  1794. B EXIT @VA05247 01790000
  1795. ERRMSG36 EQU * @VA12416 01790100
  1796. DMSERR TEXT='DISK ''..'' NOT ACCESSED',NUM=69, X01790200
  1797. LET=E,SUB=(CHARA,(STATMD,1)) @VA12416 01790300
  1798. LA R15,36 RETURN CODE = 36 @VA12416 01790400
  1799. B EXIT @VA12416 01790500
  1800. EJECT @VA05247 01791000
  1801. ***************************************************************@VA05247 01792000
  1802. * @VA05247 01793000
  1803. * PROCESS THE 'NO OPERANDS' CONDITION: @VA05247 01794000
  1804. * @VA05247 01795000
  1805. * THE USER HAS REQUESTED A LIST OF ALL CURRENT DOSCBS @VA05247 01796000
  1806. * @VA05247 01797000
  1807. ***************************************************************@VA05247 01798000
  1808. SPACE 1 @VA05247 01799000
  1809. LIST EQU * LOOP THRU DOSCB CHAIN @VA05247 01800000
  1810. LA R0,LSTLEND GET DWORDS FOR LIST AREA @VA05247 01801000
  1811. LA R10,LIST1 DROP THRU AT END OF SUBRTN @VA05247 01802000
  1812. LISTPREP LH R2,DOSNUM GET NO. DOSCBS @VA05247 01803000
  1813. LTR R2,R2 ANY THERE? @VA05247 01804000
  1814. BZ ERR324A NO...EARLY OUT. @VA05247 01805000
  1815. LA R4,DOSFIRST LOAD A(DOSCB CHAIN ANCHOR) @VA05247 01806000
  1816. DMSFREE DWORDS=(0),ERR=ERR109S GET LIST AREA @VA05247 01807000
  1817. LR R3,R1 USE R3 FOR LIST @VA05247 01808000
  1818. USING DOSCBLST,R3 @VA05247 01809000
  1819. LR R8,R0 USE R8 FOR CLEAR LENGTH @VA05247 01810000
  1820. SLL R8,3 CONVERT DWORDS TO BYTES @VA05247 01811000
  1821. BCTR R8,R0 MINUS FOR CLEAR MVC @VA05247 01812000
  1822. BCTR R8,R0 ONE MORE TIME @VA05247 01813000
  1823. MVI 0(R3),BLANK BLANK THE LIST AREA @VA05247 01814000
  1824. EX R8,EXCLR ... @VA05247 01815000
  1825. BR R10 RETURN TO CALLER @VA05247 01816000
  1826. EXCLR MVC 1(*-*,R3),0(R3) ... @VA05247 01817000
  1827. SPACE 2 @VA05247 01818000
  1828. LIST1 MVC 0(HEADLEN,R3),LISTHEAD HEADER TO WORK AREA @VA05247 01819000
  1829. LA R6,HEADLEN AND LENGTH OF SAME @VA05247 01820000
  1830. BAL R10,WRTERM GO DISPLAY THE HEADER @VA05247 01821000
  1831. SPACE 1 @VA05247 01822000
  1832. LISTLOOP EQU * LOOP FOR EACH DOSCB @VA05247 01823000
  1833. L R4,0(,R4) POINT TO NEXT DOSCB @VA05247 01824000
  1834. MVC LDDNAME,DOSDD GET DDNAME @VA05247 01825000
  1835. CLI DOSDEV,DOSDUM IS THIS ONE 'DUMMY'? @VA05247 01826000
  1836. BNE LISTMODE NO @VA05247 01827000
  1837. MVC LMODE,DUMMY YES, DISPLAY IT SO @VA05247 01828000
  1838. B LISTLOGU GO GET 'SYSXXX' @VA05247 01829000
  1839. LISTMODE MVC LMODE(L'DOSDSMD),DOSDSMD GET CMS DISKMODE @VA05247 01830000
  1840. SPACE 1 @VA05247 01831000
  1841. LISTLOGU TM DOSINIT,DOSOS 'OS' DLBL ISSUED? @VA05247 01832000
  1842. BO LISTYPE YES, SKIP SYSXXX PROCESS @VA05247 01833000
  1843. MVC LLOGUNIT,SYSXXX MOVE IN 'SYS' @VA05247 01834000
  1844. XR R8,R8 USE R8 FOR LUB CODE @VA05247 01835000
  1845. ICM R8,ONE,DOSXXX INSERT LUB CODE @VA05247 01836000
  1846. CLI DOSSYS,SYSLOG IS IT 'SYSTEM' UNIT? @VA05247 01837000
  1847. BNE LISTLOGP NO, PROCESS AS PROG... @VA05247 01838000
  1848. LA R7,UNITTAB SYSTEM...LOOK FOR 3 ALPHAS @VA05247 01839000
  1849. SLL R8,TWO INDX TO TABLE ENTRY @VA05247 01840000
  1850. AR R7,R8 ... @VA05247 01841000
  1851. MVC LLOGXXX,0(R7) MOVE IT TO LIST @VA05247 01842000
  1852. B LISTYPE GOTO 'TYPE' FIELD... @VA05247 01843000
  1853. LISTLOGP CVD R8,PACKFLD GET CODE READY FOR LIST @VA05247 01844000
  1854. UNPK LLOGXXX,PACKFLD+6(L'LLOGXXX-1) LIST SYS CODE @VA05247 01845000
  1855. OI LLOGXXX+2,ZONE 'OR' FOR NUMERIC @VA05247 01846000
  1856. SPACE 1 @VA05247 01847000
  1857. LISTYPE CLI DOSTYPE,SAMDS SAM DATASET? @VA05247 01848000
  1858. BNE LISTVSAM NO, MUST BE VSAM... @VA05247 01849000
  1859. MVC LTYPE,SEQNTL 'SEQ' INTO LIST @VA05247 01850000
  1860. B LISTPERM SKIP BY ALL VSAM FIELDS... @VA05247 01851000
  1861. SPACE 1 @VA05247 01852000
  1862. LISTVSAM MVC LTYPE,VSAM 'VSAM' INTO LIST @VA05247 01853000
  1863. CLI DOSUCNAM,FIRST0 ANY USER CATALOG? @VA05247 01854000
  1864. BE LISTMCAT NO, DEFAULT TO MASTER @VA05247 01855000
  1865. MVC LCATALOG,DOSUCNAM PUT USER CAT NAME @VA05247 01856000
  1866. B LISTEXT AND CONTINUE... @VA05247 01857000
  1867. LISTMCAT MVC LCATALOG,MCAT 'IJSYSCT' INTO LIST @VA05247 01858000
  1868. LISTEXT XR R8,R8 USE R8 FOR EXT, VOL NOS. @VA05247 01859000
  1869. ICM R8,ONE,DOSEXTNO GET NO. EXTENTS @VA05247 01860000
  1870. CVD R8,PACKFLD PREP NUM FOR EDIT @VA05247 01861000
  1871. MVC EDIT,PATTERN SETUP PATTERN FIELD @VA05247 01862000
  1872. ED EDIT(L'LEXT+2),PACKFLD+6 FORMAT NO. EXTENTS @VA05247 01863000
  1873. MVC LEXT,EDIT+2 INTO LIST WITH IT.. @VA05247 01864000
  1874. LISTVOL ICM R8,ONE,DOSVOLNO GET NO. VOLUMES @VA05247 01865000
  1875. CVD R8,PACKFLD PREP NUM FOR EDIT @VA05247 01866000
  1876. MVC EDIT,PATTERN SETUP PATTERN @VA05247 01867000
  1877. ED EDIT(L'LVOL+2),PACKFLD+6 FORMAT NO. VOLS @VA05247 01868000
  1878. MVC LVOL,EDIT+2 INTO THE LIST @VA05247 01869000
  1879. LISTBUFS L R8,DOSBUFSP GET BUFFER SPACE @VA05247 01870000
  1880. CVD R8,PACKFLD PREP FOR EDIT @VA05247 01871000
  1881. MVC EDIT,PATTERN SETUP PATTERN @VA05247 01872000
  1882. ED EDIT(L'LBUFSPC+2),PACKFLD+4 FORMAT BUFSP PARM @VA05247 01873000
  1883. MVC LBUFSPC,EDIT+2 INTO THE LIST... @VA05247 01874000
  1884. SPACE 1 @VA05247 01875000
  1885. LISTPERM TM DOSINIT,DOSPERM DOSCB MARKED 'PERM'? @VA05247 01876000
  1886. BZ LISTNO NO, CONTINUE @VA05247 01877000
  1887. MVC LPERM,YES MOVE 'YES' TO LIST @VA05247 01878000
  1888. B LISTDISK AND CONTINUE @VA05247 01879000
  1889. LISTNO MVC LPERM,NO 'NO' TO LIST @VA05247 01880000
  1890. SPACE 1 @VA05247 01881000
  1891. LISTDISK TM DOSINIT,DOSDOS 'DOS' DISK DATASET? @VA05247 01882000
  1892. BZ LISTCMS NO, MUST BE CMS.. @VA05247 01883000
  1893. MVC LDISK,DOS 'DOS' DISK DATASET @VA05247 01884000
  1894. L R7,DOSOSDSN GET DOS(OS) DSNAME... @VA05247 01885000
  1895. LTR R7,R7 DO WE HAVE ONE? @VA05247 01886000
  1896. BZ LISTLIST NO, GOTO WRAP-UP... @VA05247 01887000
  1897. MVC LFILEID,0(R7) MOVE ENTIRE DOS FILEID @VA05247 01888000
  1898. B LISTLIST CONTINUE... @VA05247 01889000
  1899. LISTCMS MVC LDISK,CMS 'CMS' DISK DATASET @VA05247 01890000
  1900. MVC LFILENAM,DOSDSNAM LIST CMS FILENAME, @VA05247 01891000
  1901. MVC LFILETYP,DOSDSTYP AND CMS FILETYPE @VA05247 01892000
  1902. EJECT @VA05247 01893000
  1903. LISTLIST LA R6,LSTLEND*8 BYTE-LENGTH FOR DISPLAY @VA05247 01894000
  1904. BAL R10,WRTERM DISPLAY THE GOODIES @VA05247 01895000
  1905. BCT R2,LISTLOOP LOOP THRU DOSCB CHAIN... @VA05247 01896000
  1906. SPACE 1 @VA05247 01897000
  1907. LA R0,LSTLEND LIST AREA IN DWORDS @VA05247 01898000
  1908. LEND LR R1,R3 @VA05247 01899000
  1909. BAL R10,FRET FRET THE WORK AREA @VA05247 01900000
  1910. TM OPTNFLAG,XEXTENT+XMULT EXTENTS OR MULT WANTED? @VA05247 01901000
  1911. BZ RETURN NO, CLOSE THE SHOP... @VA05247 01902000
  1912. TM MISCFLAG,XFOUND EXTENT OR MULT WANTED,FOUND?@VA05247 01903000
  1913. BO RETURN YES, END IN PEACE... @VA05247 01904000
  1914. LA R7,EXTENT ASSUME EXTENTS WANTED @VA05247 01905000
  1915. TM OPTNFLAG,XEXTENT EXTENTS NOT FOUND? @VA05247 01906000
  1916. BO ERR324I YES...TELL THE USER. @VA05247 01907000
  1917. LA R7,MULT MULT.VOL LIST WANTED, @VA05247 01908000
  1918. B ERR324I SO SAY NONE FOUND. @VA05247 01909000
  1919. SPACE 1 @VA05247 01910000
  1920. ***************************************************************@VA05247 01911000
  1921. * 'WRTERM' SUBRTN TO DISPLAY LINE: @VA05247 01912000
  1922. * ENTRY - R3 = A(LINE) @VA05247 01913000
  1923. * R6 = LINE LENGTH (BYTES) @VA05247 01914000
  1924. ***************************************************************@VA05247 01915000
  1925. WRTERM EQU * @VA05247 01916000
  1926. WRTERM (R3),(R6) @VA05247 01917000
  1927. BCTR R6,R0 MINUS 1 FOR CLEAR TECHNIQUE @VA05247 01918000
  1928. BCTR R6,R0 AND ONE MORE FOR MVC @VA05247 01919000
  1929. MVI 0(R3),BLANK BLANK THE WORK AREA AGAIN @VA05247 01920000
  1930. EX R6,EXCLR2 ... @VA05247 01921000
  1931. BR R10 RETURN TO CALLER @VA05247 01922000
  1932. EXCLR2 MVC 1(*-*,R3),0(R3) ... @VA05247 01923000
  1933. EJECT @VA05247 01924000
  1934. ***************************************************************@VA05247 01925000
  1935. * @VA05247 01926000
  1936. * 'DLBL (EXTENT)' OR 'DLBL (MULT)' ENTERED: @VA05247 01927000
  1937. * USER WISHES EXTENTS OR VOLUMES LISTED. @VA05247 01928000
  1938. * @VA05247 01929000
  1939. ***************************************************************@VA05247 01930000
  1940. LIST2 EQU * COME HERE FOR EXTENTS LIST @VA05247 01931000
  1941. TM OPTNFLAG,XEXTENT EXTENT' USED? @VA05247 01932000
  1942. BO L2EXT YES, PROCESS... @VA05247 01933000
  1943. TM OPTNFLAG,XMULT 'MULT' USED? @VA05247 01934000
  1944. BZ ERR086E ERROR IF NEITHER... @VA05247 01935000
  1945. SPACE 1 @VA05247 01936000
  1946. L2EXT EQU * EITHER EXTENTS OR VOLS WANTE@VA05247 01937000
  1947. LA R0,EXTLEND DWORDS FOR WORK AREA @VA05247 01938000
  1948. BAL R10,LISTPREP GET STORAGE AND INIT. STUFF @VA05247 01939000
  1949. USING EXTLIST,R3 @VA05247 01940000
  1950. MVC EHDR,LISTHEAD PROVIDE MOST OF HEADER @VA05247 01941000
  1951. TM OPTNFLAG,XEXTENT EXTENTS WANTED? @VA05247 01942000
  1952. BZ L2LOOP IF NOT SKIP... @VA05247 01943000
  1953. MVC EEXTEND+1(L'EXTENT),EXTENT EXTENT HEADER @VA05247 01944000
  1954. SPACE 1 @VA05247 01945000
  1955. L2LOOP EQU * LOOP THRU ALL DOSCBS @VA05247 01946000
  1956. L R4,0(,R4) POINT TO NEXT DOSCB @VA05247 01947000
  1957. XR R5,R5 FOR LATER... @VA05247 01948000
  1958. TM OPTNFLAG,XEXTENT LOOKING FOR EXTENTS? @VA05247 01949000
  1959. BZ LMLTPREP NO, CHEK MULT VOLS @VA05247 01950000
  1960. LA R6,DOSEXTNO POINT TO NO. EXTENTS @VA05247 01951000
  1961. L R9,DOSEXTTB AND EXTENT TABLE... @VA05247 01952000
  1962. LA R0,EXTLEN LOAD SIZE OF EXT TABLE @VA05247 01953000
  1963. B ICMNUM SKIP TO CHEK ENTRIES @VA05247 01954000
  1964. LMLTPREP LA R6,DOSVOLNO POINT TO NO. VOLUMES @VA05247 01955000
  1965. L R9,DOSVOLTB AND VOLUME TABLE... @VA05247 01956000
  1966. LA R0,MULTLEN LOAD SIZE OF VOL TABLE @VA05247 01957000
  1967. ICMNUM ICM R5,ONE,0(R6) LOAD NUM OF ENTRIES @VA05247 01958000
  1968. BZ L2END NEXT DOSCB IF NO ENTRIES @VA05247 01959000
  1969. CLI 0(R3),BLANK HAVE WE LISTED HDR YET? @VA05247 01960000
  1970. BE LDDMOVE YES, SKIP THRU... @VA05247 01961000
  1971. LA R6,EXTLEND*8 PROVIDE HDR LENGTH @VA05247 01962000
  1972. BAL R10,WRTERM DISPLAY THE HEADER @VA05247 01963000
  1973. OI MISCFLAG,XFOUND REMEMBER WE FOUND SOMETHING @VA05247 01964000
  1974. LDDMOVE MVC EDDNAME,DOSDD LIST DDNAME OF DOSCB @VA05247 01965000
  1975. SPACE 1 @VA05247 01966000
  1976. LBLKLOOP EQU * LOOP THRU TABLE ENTRIES @VA05247 01967000
  1977. MVC EMODE(L'EMODE-1),DMODE(R9) MOVE MODE TO LIST @VA05247 01968000
  1978. TM DOSINIT,DOSOS 'OS' DOSCB ? @VA05247 01969000
  1979. BO LEXTCHK2 YES, SKIP SYSXXX PROCESS @VA05247 01970000
  1980. MVC ELOGUNIT,SYSXXX MOVE IN 'SYS' @VA05247 01971000
  1981. XR R8,R8 USE R8 FOR LUB CODE @VA05247 01972000
  1982. ICM R8,ONE,DSYSCODE(R9) INSERT LUB CODE @VA05247 01973000
  1983. CLI DSYS(R9),SYSLOG IS IT 'SYSTEM' UNIT? @VA05247 01974000
  1984. BNE LSTLOGP2 NO, PROCESS AS PROG... @VA05247 01975000
  1985. LA R7,UNITTAB SYSTEM...LOOK FOR 3 ALPHAS @VA05247 01976000
  1986. SLL R8,TWO INDX TO TABLE ENTRY @VA05247 01977000
  1987. AR R7,R8 ... @VA05247 01978000
  1988. MVC ELOGXXX,0(R7) MOVE IT TO LIST @VA05247 01979000
  1989. B LEXTCHK2 GO CHEK FOR EXTENTS... @VA05247 01980000
  1990. LSTLOGP2 CVD R8,PACKFLD GET CODE READY FOR LIST @VA05247 01981000
  1991. UNPK ELOGXXX,PACKFLD+6(L'ELOGXXX-1) LIST SYS CODE @VA05247 01982000
  1992. OI ELOGXXX+2,ZONE 'OR' FOR NUMERIC @VA05247 01983000
  1993. SPACE 1 @VA05247 01984000
  1994. LEXTCHK2 TM OPTNFLAG,XEXTENT EXTENTS WANTED? @VA05247 01985000
  1995. BZ LDISPLAY NO, SKIP THRU... @VA05247 01986000
  1996. L R8,DEXTB(R9) GET BEGIN. OF EXTENT @VA05247 01987000
  1997. CVD R8,PACKFLD BINARY TO DECIMAL @VA05247 01988000
  1998. MVC EDIT,PATTERN PROVIDE EDIT PATTERN @VA05247 01989000
  1999. ED EDIT(L'EEXTBEG+2),PACKFLD+2 EDIT THE VALUE @VA05247 01990000
  2000. MVC EEXTBEG,EDIT+2 AND MOVE IT TO DISPLAY AREA @VA05247 01991000
  2001. L R8,DEXTE(R9) GET END OF EXTENT @VA05247 01992000
  2002. CVD R8,PACKFLD BINARY TO DECIMAL @VA05247 01993000
  2003. MVC EDIT,PATTERN PROVIDE EDIT PATTERN @VA05247 01994000
  2004. ED EDIT(L'EEXTEND+2),PACKFLD+2 EDIT THE VALUE @VA05247 01995000
  2005. MVC EEXTEND,EDIT+2 AND MOVE IT TO DISPLAY AREA @VA05247 01996000
  2006. LDISPLAY LA R6,EXTLEND*8 PROVIDE LINE LENGTH @VA05247 01997000
  2007. BAL R10,WRTERM DISPLAY THE GOODIES @VA05247 01998000
  2008. AR R9,R0 POINT TO NEXT TAB ENTRY @VA05247 01999000
  2009. BCT R5,LBLKLOOP GET NEXT ENTRY IN TABLE @VA05247 02000000
  2010. SPACE 1 @VA05247 02001000
  2011. L2END BCT R2,L2LOOP GET NEXT DOSCB @VA05247 02002000
  2012. LA R0,EXTLEND DWORDS TO DMSFRET @VA05247 02003000
  2013. B LEND GO FREE WORK AREA , QUIT @VA05247 02004000
  2014. SPACE 1 @VA05247 02005000
  2015. ERR324A LA R7,DLBL NO DOSCBS ACTIVE @VA05247 02006000
  2016. ERR324I DMSERR NUM=324,LET=I,SUB=(CHARA,(R7)), *02007000
  2017. TEXT='NO USER DEFINED ........''S IN EFFECT' @VA05247 02008000
  2018. B RETURN THAT'S ALL THERE IS... @VA05247 02009000
  2019. EJECT @VA05247 02010000
  2020. ***************************************************************@VA05247 02011000
  2021. * @VA05247 02012000
  2022. * STORAGE FIELDS PECULIAR TO 'LIST' PROCESSING... @VA05247 02013000
  2023. * @VA05247 02014000
  2024. ***************************************************************@VA05247 02015000
  2025. DOS DC CL3'DOS' @VA05247 02016000
  2026. YES DC CL3'YES' @VA05247 02017000
  2027. NO DC CL3'NO' @VA05247 02018000
  2028. SEQNTL DC CL3'SEQ' @VA05247 02019000
  2029. PATTERN DC XL12'402020202020202020202020' @VA05247 02020000
  2030. EDIT DC CL12' ' @VA05247 02021000
  2031. DLBL DC CL8'DLBL' @VA05247 02022000
  2032. TWO EQU 2 @VA05247 02023000
  2033. ZONE EQU X'F0' @VA05247 02024000
  2034. * FOLLOWING ARE DISPLACEMENTS IN EXTENT, VOLUME TABLES @VA05247 02025000
  2035. DMODE EQU 0 DISK MODE (BOTH) @VA05247 02026000
  2036. DSYS EQU 1 SYS/PROG CODE (BOTH) @VA05247 02027000
  2037. DSYSCODE EQU 2 LOG UNIT CODE (BOTH) @VA05247 02028000
  2038. DEXTB EQU 3 BEGIN. EXTENT (EXT ONLY) @VA05247 02029000
  2039. DEXTE EQU 7 END EXTENT (EXT TAB ONLY) @VA05247 02030000
  2040. SPACE 2 @VA05247 02031000
  2041. LISTHEAD DS 0D ***DOSCB LIST HEADER*** @VA05247 02032000
  2042. DC C'DDNAME ' @VA05247 02033000
  2043. DC C'MODE ' @VA05247 02034000
  2044. DC C'LOGUNIT ' @VA05247 02035000
  2045. DC C'TYPE ' @VA05247 02036000
  2046. DC C'CATALOG ' @VA05247 02037000
  2047. DC C'EXT ' @VA05247 02038000
  2048. DC C'VOL ' @VA05247 02039000
  2049. DC C'BUFSPC ' @VA05247 02040000
  2050. DC C'PERM ' @VA05247 02041000
  2051. DC C'DISK ' @VA05247 02042000
  2052. DC C'DATASET.NAME' @VA05247 02043000
  2053. DS 0D @VA05247 02044000
  2054. HEADLEN EQU *-LISTHEAD @VA05247 02045000
  2055. EJECT @VA05247 02046000
  2056. EXTLIST DSECT @VA05247 02047000
  2057. DS 0D EXTENT, VOLUME INFO. @VA05247 02048000
  2058. EHDR DS 0CL22 @VA05247 02049000
  2059. EDDNAME DS CL7 DDNAME @VA05247 02050000
  2060. DS CL2 @VA05247 02051000
  2061. EMODE DS CL2 DISK MODE @VA05247 02052000
  2062. DS CL2 @VA05247 02053000
  2063. ELOGUNIT DS CL3 ALWAYS 'SYS' @VA05247 02054000
  2064. ELOGXXX DS CL3 LOGICAL UNIT CODE @VA05247 02055000
  2065. DS CL3 @VA05247 02056000
  2066. EEXTBEG DS CL10 BEGIN OF EXTENT @VA05247 02057000
  2067. EEXTEND DS CL10 END OF EXTENT @VA05247 02058000
  2068. DS 0D @VA05247 02059000
  2069. EXTLEND EQU (*-EXTLIST)/8 LENGTH IN DWORDS @VA05247 02060000
  2070. SPACE 2 @VA05247 02061000
  2071. DOSCBLST DSECT @VA05247 02062000
  2072. DS 0D ***DOSCB LIST WORK AREA*** @VA05247 02063000
  2073. LDDNAME DS CL7 @VA05247 02064000
  2074. DS CL2 @VA05247 02065000
  2075. LMODE DS CL3 CMS DISK MODE OR 'DUM' @VA05247 02066000
  2076. DS CL1 @VA05247 02067000
  2077. LLOGUNIT DS CL3 ALWAYS 'SYS' @VA05247 02068000
  2078. LLOGXXX DS CL3 DOS LOGICAL UNIT CODE @VA05247 02069000
  2079. DS CL3 @VA05247 02070000
  2080. LTYPE DS CL4 'VSAM' OR 'SEQ' @VA05247 02071000
  2081. DS CL1 @VA05247 02072000
  2082. LCATALOG DS CL7 'IJSYSCT','IJSYSUC',ETC. @VA05247 02073000
  2083. DS CL1 @VA05247 02074000
  2084. LEXT DS CL2 NO. EXTENTS @VA05247 02075000
  2085. DS CL2 @VA05247 02076000
  2086. LVOL DS CL2 NO. VOLUMES @VA05247 02077000
  2087. DS CL2 @VA05247 02078000
  2088. LBUFSPC DS CL6 BUFFER SPACE SIZE @VA05247 02079000
  2089. DS CL2 @VA05247 02080000
  2090. LPERM DS CL3 'YES' OR 'NO' @VA05247 02081000
  2091. DS CL2 @VA05247 02082000
  2092. LDISK DS CL3 'CMS' OR 'DOS' @VA05247 02083000
  2093. DS CL2 @VA05247 02084000
  2094. LFILEID DS CL44 DATASET NAME @VA05247 02085000
  2095. ORG *-44 @VA05247 02086000
  2096. LFILENAM DS CL8 CMS FILENAME @VA05247 02087000
  2097. DS CL1 @VA05247 02088000
  2098. LFILETYP DS CL8 CMS FILETYPE @VA05247 02089000
  2099. ORG , @VA05247 02090000
  2100. DS 0D @VA05247 02091000
  2101. LSTLEND EQU (*-DOSCBLST)/8 LENGTH IN DWORDS @VA05247 02092000
  2102. EJECT @VA05247 02093000
  2103. ***************************************************************@VA05247 02094000
  2104. * DSECTS AND DUMMY AREAS @VA05247 02095000
  2105. ***************************************************************@VA05247 02096000
  2106. NUCON @VA05247 02097000
  2107. BGCOM @VA05247 02098000
  2108. SVCSAVE @VA05247 02099000
  2109. ADT @VA05247 02100000
  2110. REGEQU @V305006 02101000
  2111. DMSDLB CSECT @V305006 02102000
  2112. END 02103000