Table of Contents

DMSFLD Source

References

Source Listing

DMSFLD.ASSEMBLE.txt
  1. FLD TITLE 'DMSFLD (CMS) VM/370 - RELEASE 6' 00001000
  2. * 00002000
  3. * MODULE NAME: 00003000
  4. * 00004000
  5. * DMSFLD (FILEDEF) 00005000
  6. * 00006000
  7. * FUNCTION: 00007000
  8. * 00008000
  9. * TO ALLOW THE USER TO SPECIFY, IN A MANNER SIMILAR TO 00009000
  10. * THE OS DATA DEFINITION CARD, I/O DEVICES AND CERTAIN 00010000
  11. * FILE CHARACTERISTICS WHICH WILL BE USED BY A PROGRAM AT 00011000
  12. * EXECUTION TIME. CAN ALSO BE USED TO MODIFY, DELETE AND 00012000
  13. * LIST PREVIOUSLY DEFINED FILE DESCRIPTIONS. 00013000
  14. * 00014000
  15. * ATTRIBUTES: TRANSIENT 00015000
  16. * NOTE: FILEDEF MUST BE GENMOD'D WITH THE SYSTEM OPTION 00016000
  17. * 00017000
  18. * ENTRY POINTS: 00018000
  19. * DMSFLD 00019000
  20. * 00020000
  21. * ENTRY CONDITIONS: 00021000
  22. * R1 MUST POINT TO FILEDEF PARAMETER LIST 00022000
  23. * CMS USER'S GUIDE GIVES A FULL DESCRIPTION OF THE 00023000
  24. * VARIOUS PARAMETER FORMATS. 00024000
  25. * THE GENERAL FORMAT IS AS FOLLOWS: 00025000
  26. * DS 0F 00026000
  27. * PLIST DC CL8'FILEDEF' 00027000
  28. * DC CL8'DDNAME' 00028000
  29. * DC CL8'CLEAR' OR 'DUMMY' OR DEVICE-TYPE V0742 00029000
  30. *| <DC CL8'FILENAME' FILEID OPTIONAL; USED ONLY 00030000
  31. *| DC CL8'FILETYPE' WITH 'DISK' 00031000
  32. *| <DC CL8'FILEMODE'>> 00032000
  33. * DC CL8'(' START OF OPTIONS 00033000
  34. * DC CL8'OPTIONS' 00034000
  35. * DC 8X'FF' FENCE 00035000
  36. * 00036000
  37. * 00037000
  38. * EXIT CONDITIONS: 00038000
  39. * NORMAL RETURN 00039000
  40. * R15 = 0 00040000
  41. * R0 = ADDRESS OF FCB 00041000
  42. * POSITIVE IF ALREADY EXISTS 00042000
  43. * NEGATIVE IF OBTAINED OR MODIFIED BY THIS CALL 00043000
  44. * 00044000
  45. * ERROR RETURN: 00045000
  46. * R15 NON-ZERO : 00046000
  47. * = 24 INVALID, DUPLICATE OR CONFLICTING OPTIONS 00047000
  48. * 24 NO FILETYPE, INVALID DEVICE, INVALID OPTION PARM 00048000
  49. * 24 INVALID TAPE MODE, PARAMETER MISSING 00049000
  50. * ENTER DATA SET NAME 00050000
  51. * 24 INVALID DATA SET NAME 00051000
  52. * 00052000
  53. * CALLS TO OTHER ROUTINES: 00053000
  54. *| DMSFREB,DMSFREC,DMSCWRB 00054000
  55. * 00055000
  56. * EXTERNAL REFERENCE: 00056000
  57. *| TYPE 00057000
  58. * CMSCB 00058000
  59. *| REGEQU 00059000
  60. * NUCON 00060000
  61. * 00061000
  62. * CALLED BY: 00062000
  63. * SOIOMAN, LANGUAGE PROCESSORS, 00063000
  64. * EXECUTION INTERFACES FOR PLI, FORTRAN 00064000
  65. * 00065000
  66. * 00066000
  67. * TABLES AND WORK AREAS: 00067000
  68. * 00068000
  69. * TABSTART - VALID OPTION TABLE 00069000
  70. * RECFTAB - VALID SETTINGS FOR 'RECFM' OPTION 00070000
  71. *| TRTCH - TAPE RECORDING MODE TABLE 00071000
  72. *| TRTAB - DISPLACEMENTS IN 'TRTCH' TABLE FOR TRTCH OPTION 00072000
  73. * COPYLIST - PLIST COPY INTERNAL 00073000
  74. * FCB FILE CONTROL BLOCK FREE STORAGE 00074000
  75. * DSN - BLOCK TO HOLD OS DATA SET NAME FREE STORAGE 00075000
  76. * 00076000
  77. * REGISTER USAGE: 00077000
  78. * 00078000
  79. * R0 - ADDRESS RETURN 00079000
  80. * R1 - PLIST ON ENTRY 00080000
  81. * R2 - WORKING REGISTER 00081000
  82. *| R3 - WORKING REGISTER 00082000
  83. * R4 - FCBSECT 00083000
  84. * R5 - PLIST - WORKING COPY 00084000
  85. *| R6 - FENCE 00085000
  86. *| R7 - WORKING TEMPORARY 00086000
  87. *| R8 - A(START OF OPTIONS) IF ANY; OTHERWISE, A(DDNAME) IN PLIST 00087000
  88. *| R9 - WORKING TEMPORARY 00088000
  89. * R10 - INTERNAL LINKAGE 00089000
  90. *| R11 - BASE2 00090000
  91. * R12 - BASE 00091000
  92. * R13 - SAVE AREA 00092000
  93. * R14 - EXTERNAL LINKAGE 00093000
  94. * R15 - EXTERNAL LINKAGE 00094000
  95. * 00095000
  96. * NOTES: 00096000
  97. * 00097000
  98. * | "FILEDEF" IS TREATED AS A "COMMAND" OR A "FUNCTION" 00098000
  99. * | ACCORDING TO THE HIGH-ORDER BYTE OF R1 AT INPUT, VIZ: 00099000
  100. * | If = x'0B', it was issued as a command from DMSINT. HRC309DS 00100000
  101. * | If = x'0D', it was issued from an EXEC file (DMSEXT), HRC309DS 00101000
  102. * | with "&CONTROL" set to either "CMS" or "ALL". HRC309DS 00102000
  103. * | If = X'01', it was issued from an EXEC file (DMSEXT), HRC309DS 00103000
  104. * | with "&CONTROL OFF" in effect. HRC309DS 00104000
  105. * | Otherwise it is assumed to be issued from a function, HRC309DS 00105000
  106. * | I.E. called from another program. HRC309DS 00106000
  107. * 00107000
  108. * | FOR "FILEDEF" AS A COMMAND, ALL ERROR MESSAGES ARE GIVEN, 00108000
  109. * | WHEREAS AS A FUNCTION THEY ARE OMITTED. 00109000
  110. * 00110000
  111. * OPERATION: 00111000
  112. * 00112000
  113. * THE STARTING ADDRESS OF THE CHAIN OF FCB'S IS 00113000
  114. *| OBTAINED FROM THE FCBSECT. THE PLIST IS THEN PLACED IN 00114000
  115. *| THE TRANSIENT AREA FOR A WORKING COPY OF THE PLIST. 00115000
  116. * 00116000
  117. *| THE PLIST IS THEN EXAMINED FOR 'STATUS' OPTIONS. IF EITHER 00117000
  118. * PERM AND/OR NOCHNG IS SPECIFIED, APPROPRIATE FLAGS 00118000
  119. *| ARE SET. 00119000
  120. * 00120000
  121. * SUBSEQUENT PROCESSING DEPENDS ON THE OPERANDS 00121000
  122. * SPECIFIED. THE FIRST OPERAND IS CHECKED, AND 00122000
  123. * DEPENDING ON ITS CONTENTS, OPERATION CONTINUES AS 00123000
  124. * DESCRIBED BELOW. 00124000
  125. * 00125000
  126. * NO OPERAND. FILEDEF WITH NO OPERAND 00126000
  127. * REQUESTS A LIST OF CURRENT FILE DEFINITIONS. FCBNUM 00127000
  128. * CONTAINS THE NUMBER OF ENTRIES IN THE CHAIN OF FCB'S. 00128000
  129. * THIS IS USED TO LOOP THROUGH THE CHAIN. FOR EACH, 00129000
  130. * FCBDD AND FCBDEV IS TYPED TO THE TERMINAL. FOR 00130000
  131. * DEFINITIONS OF DISK, FCBDSNAM (THE CMS FILENAME) AND 00131000
  132. * FCBDSTYP (THE CMS FILETYPE) ARE ALSO TYPED. 00132000
  133. * 00133000
  134. * *CLEAR. ALL FCB'S ON THE CHAIN ARE RELEASED EXCEPT 00134000
  135. * THOSE FLAGGED PERMANENT. THESE ARE RELEASED ONLY WHEN 00135000
  136. * SPECIFICALLY CLEARED. 00136000
  137. * 00137000
  138. * NUMERIC DDNAME. THE NUMBER IS CONVERTED TO A FORTRAN 00138000
  139. * DATA SET REFERENCE NUMBER (I.E., FTXXFNNN). 00139000
  140. * PROCESSING CONTINUES AS DESCRIBED UNDER ALPHA FILEID 00140000
  141. * BELOW. 00141000
  142. * 00142000
  143. * DDNAME. FCB IS USED TO LOOP THROUGH THE FCB CHAIN IN 00143000
  144. * FREE STORAGE LOOKING FOR THE SPECIFIED FCB. IF NO 00144000
  145. * MATCH IS FOUND, THE NEW FCB FLAG IS SET, FREE STORAGE 00145000
  146. * IS OBTAINED, AND THE ADDRESS OF THIS FCB IS PLACED IN 00146000
  147. * THE FIRST WORD OF THE LAST FCB ON THE CHAIN. THE 00147000
  148. * ADDRESS OF THE NEW FCB IS PUT IN REGISTER 0 AS A 00148000
  149. * NEGATIVE QUANTITY AND SAVED TO BE PASSED BACK TO THE 00149000
  150. * USER WHEN PARAMETER PROCESSING IS COMPLETE. IF THE 00150000
  151. * PERM FLAG IS SET, THE HIGH ORDER BYTE OF THE NEW FCB 00151000
  152. * IS FLAGGED PERMANENT. 00152000
  153. * 00153000
  154. * IF A MATCHING FCB IS FOUND, AND THE NOCHNG FLAG IS 00154000
  155. * SET, FILEDEF RETURNS TO THE USER WITH THE ADDRESS OF 00155000
  156. * THE FCB IN REGISTER 0. 00156000
  157. * 00157000
  158. * IF A MATCHING FCB IS FOUND AND THE NOCHNG FLAG IS NOT 00158000
  159. * SET, THE OLD FCB IS SAVED IN CASE OF AN ERROR, THE 00159000
  160. * OLD ENTRY FLAG IS SET, AND THE ADDRESS OF THE FCB IS 00160000
  161. * NEGATIVELY STORED IN REGISTER 0. IF THE PERM FLAG IS 00161000
  162. * SET, THE FCB IS FLAGGED PERMANENT. 00162000
  163. * 00163000
  164. * PROCESSING IS THEN DEPENDENT ON THE DEVICE TYPE AND 00164000
  165. * RELATED PARAMETERS SPECIFIED. 00165000
  166. * 00166000
  167. * DUMMY. FOR DEVICE DUMMY AN FCB IS CREATED 00167000
  168. * WITH A DEVICE TYPE OF X'00'. OPTIONS ARE PROCESSED AS 00168000
  169. * IF 'DISK' HAD BEEN SPECIFIED AS THE DEVICE. 00169000
  170. * 00170000
  171. * DEVICES: 00171000
  172. * 00172000
  173. * TERMINAL - USER'S TERMINAL 00173000
  174. * 00174000
  175. *| DISK - DISK FILE; FILEID IS OPTIONAL. IF FMODE IS 00175000
  176. * NOT A PART OF THE FILEID, THE FILE WILL BE 00176000
  177. * PLACED ON THE A-DISK. 00177000
  178. * 00178000
  179. * DSN - IF THE PARAMETER DSN ? IS SPECIFIED, FILEDEF 00179000
  180. * WILL TYPE OUT MSG. DMSFLD220R TO REQUEST THE USER 00180000
  181. * TO TYPE IN AN OS DATA SET NAME IN THE FORMAT Q1.Q2.QN, 00181000
  182. * Q1 Q2 AND QN BEING THE QUALIFIERS IN AN OS DATA SET NAME. 00182000
  183. * IF THE PARAMETER DSN Q1 Q2 QN IS SPECIFIED, FILEDEF WILL 00183000
  184. * ASSUME THAT Q1 Q2 AND QN ARE THE QUALIFIERS OF AN OS 00184000
  185. * DATA SET NAME. THE Q1 Q2 AND QN QUALIFIERS ARE STORED 00185000
  186. * IN THE FORMAT Q1.Q2.QN IN A FREE STORAGE BLOCK THAT 00186000
  187. * IS CHAINED TO THE FCB. 00187000
  188. * 00188000
  189. * PRINTER, PUNCH, READER - REPETITIVE SPOOLED DEVICES 00189000
  190. * 00190000
  191. * TAPN - TAPE FILE; WHERE N = 0-F, INDICATING THE HRC002DS 00191490
  192. * SYMBOLIC TAPE ADDRESS. 00192000
  193. * 00193000
  194. * OPTIONS: 00194000
  195. * 00195000
  196. *| UPCASE - PROVIDE TRANSLATION TO UPPERCASE. 00196000
  197. *| THIS IS THE DEFAULT CONDITION. 00197000
  198. * 00198000
  199. *| LOWCASE - PROVIDE NO TRANSLATION TO UPPERCASE; 00199000
  200. *| THE FCBCASE BIT IS SET ON IN THE FCBIOSW BYTE. 00200000
  201. * 00201000
  202. * CHANGE|NOCHANGE - DETERMINES IF AN EXISTING CMSCB IS 00202000
  203. * TO BE CHANGED OR REMAIN UNMODIFIED. CHANGE IS DEFAULT. 00203000
  204. * 00204000
  205. * PERMANENT - THE CMSCB CREATED FOR THIS DDNAME IS 00205000
  206. * RETAINED UNTIL SPECIFICALLY CLEARED; 00206000
  207. *| IT IS NOT REMOVED AFTER A GENERAL '*CLEAR' REQUEST. 00207000
  208. *| THE FCBPERM BIT (X'04') IS SET IN THE FCBINIT BYTE. 00208000
  209. * 00209000
  210. * AUXPROC - KEYWORD FOLLOWED BY ADCON CONTAINING THE V0742 00210000
  211. * ADDRESS OF AN AUXILIARY PROCESSING ROUTINE WHICH WILL V0742 00211000
  212. * RECEIVE CONTROL FROM DMSSEB TO PERFORM DEVICE I/O. V0742 00212000
  213. * THIS FEATURE, INVOKED BY INTERNAL CALL ONLY, IS MOST V0742 00213000
  214. * COMMONLY USED BY THE CMS LANGUAGE PROCESSOR INTERFACES. V0742 00214000
  215. * 00215000
  216. * CONCAT - IF THE CONCAT OPTION IS SPECIFIED, FILEDEF 00216000
  217. * WILL ASSUME THAT THE SPECIFIED FILEDEF IS UNIQUE UNLESS 00217000
  218. * A FILEDEF IS OUTSTANDING WITH A MATCHING DDNAME, 00218000
  219. * FILENAME AND FILETYPE. THIS ALLOWS THE USER TO 00219000
  220. * SPECIFY MORE THAN ONE FILEDEF FOR A PARTICULAR 00220000
  221. * DDNAME. THE CONCAT OPTION ALSO SETS THE FCBCATML 00221000
  222. * BIT IN THE FCB SO THAT THE OS SIMULATION KNOWS 00222000
  223. * THE FCB IS FOR A CONCATONATED MACLIB. 00223000
  224. * 00224000
  225. * MEMBER - IF THE MEMBER OPTION IS SPECIFIED, FILEDEF 00225000
  226. * STORES THE MEMBER NAME IN FCBMEMBR IN THE FCB TO 00226000
  227. * INDICATE THAT THE OS SIMULATION SHOULD SET THE 00227000
  228. * READ WRITE POINTER TO POINT TO THE MEMBER OF THE 00228000
  229. * SPECIFIED BPAM FILE AT OPEN TIME. 00229000
  230. * 00230000
  231. *| DSORG - PS|PO|DA SET THE FCBDSORG BYTE TO RECORD 00231000
  232. *| PHYSICAL SEQUENTIAL, PARTITIONED OR DIRECT ACCESS 00232000
  233. *| DATASET ORGANIZATION. 00233000
  234. * 00234000
  235. * 00235000
  236. * RECFM F|FB|V|VB|U - THE RECORD FORMAT IS SET IN THE 00236000
  237. * JFCRECFM INDICATING FIXED, FIXED BLOCKED, 00237000
  238. *| FIXED STANDARD, FIXED BLOCKED STANDARD, 00238000
  239. *| VARIABLE, VARIABLE BLOCKED, VARIABLE SPANNED, 00239000
  240. *| VARIABLE BLOCKED SPANNED, UNDEFINED, AND ANY TYPE 00240000
  241. *| WITH ASA OR MACHINE CONTROL CHARACTERS. 00241000
  242. * 00242000
  243. *| DISP MOD - ALLOWS USER TO UPDATE BDAM FILES. 00243000
  244. * 00244000
  245. * LRECL N - THE JFCLRECL IS SET TO N TO INDICATE THE 00245000
  246. * LOGICAL RECORD LENGTH. 00246000
  247. * 00247000
  248. * BLOCK N - INDICATES THE LENGTH OF A BLOCK OF RECORDS; 00248000
  249. * JFCBLKSI IS SET. 00249000
  250. * 00250000
  251. * OPTCD A|E|F|R - THE DESIRED OPTION CODE FOR THE DATA 00251000
  252. *| SET IS INDICATED IN JFCOPTCD. ANY COMBINATION 00252000
  253. *| (NON-DELIMITED, WITH A,R MUTUALLY EXCLUSIVE) IS 00253000
  254. *| ALLOWED. 00254000
  255. * 00255000
  256. * KEYLEN NN - SPECIFIES THE SIZE OF THE KEY IN BYTES. 00256000
  257. * 00257000
  258. * XTENT 50|NN - FOR BDAM DATA SETS, XTENT INDICATES THE 00258000
  259. * PRE-FORMATTED NUMBER OF RECORDS TO BE SET IN 00259000
  260. * JFCXTENT. 00260000
  261. * 00261000
  262. * LIMCT NN - SPECIFIES THE LIMIT COUNT ON THE NUMBER OF 00262000
  263. * BLOCKS TO BE SEARCHED WITHIN A BDAM DATA SET. 00263000
  264. * 00264000
  265. * FOR DEVICE = TAPN, ONLY: 00265000
  266. * 00266000
  267. * 7TRACK|9TRACK - SPECIFIES TRACK SETTING 00267000
  268. * 00268000
  269. * DEN 200|556|800|1600|6250 SPECIFIES BIT DENSITY @V200414 00269000
  270. * 00270000
  271. * TRTCH O|OC|OT|E|ET - INDICATES THE DESIRED TAPE 00271000
  272. * RECORDING TECHNIQUE ('O' IS DEFAULT): 00272000
  273. * 00273000
  274. * PARITY (ODD, EVEN), CONVERTER (ON, OFF), 00274000
  275. * TRANSLATOR (ON, OFF). 00275000
  276. *. 00276000
  277. EJECT 00277000
  278. DMSFLD START X'0' 00278000
  279. * 00279000
  280. * SET UP BASIC ADDRESSABILITY * 00280000
  281. * 00281000
  282. LR R12,R15 00282000
  283. USING DMSFLD,R12,R11 ADDRESSIBILITY 00283000
  284. LA R11,4095(R12) SET SECOND BASE @V201105 00284000
  285. LA R11,1(0,R11) @V201105 00285000
  286. ST R14,GR14SA 00286000
  287. LR R5,R1 SAVE INPUT PARAMETER POINTER 00287000
  288. ST R13,GR13SA SAVE SA POINTER 00288000
  289. USING NUCON,R0 00289000
  290. L R13,CURRSAVE POINT TO SYSTEM SAVE AREA 00290000
  291. USING SSAVE,R13 00291000
  292. SR R0,R0 CLEAR R0 FOR NOCHANGE PROCESSING 00292000
  293. ST R0,EGPR0 SAVE IT 00293000
  294. USING NUCON,R0 00294000
  295. SR R13,R13 CLEAR R13 FOR LATER USE 00295000
  296. XC VALFLAG(8),VALFLAG RESET FLAGS FOR RE-UE@SE 00296000
  297. LA R7,TABSTART+8 00297000
  298. LA R8,12 LENGTH OF EACH ENTRY 00298000
  299. LA R9,TABEND-4 00299000
  300. RESET0 NI 0(R7),X'0F' RESET OPTION 'FOUND' FLAGS 00300000
  301. BXLE R7,R8,RESET0 00301000
  302. MVI MSGSWT,00 DEFAULT SWITCH FOR "FUNCTION" @VA01154 00302000
  303. * (WITHOUT ERROR MESSAGES) 00303000
  304. CLM R5,8,=X'0B' hi byte of "R1" < X'0B' ? HRC309DS 00304000
  305. BL LETSGO yes, it's a function or EXEC HRC309DS 00305000
  306. CLM R5,8,=X'0D' EXEC w/&CONTROL ALL or CMS? HRC309DS 00306000
  307. BH LETSGO no, treat as a function call HRC309DS 00307000
  308. OI MSGSWT,PRINT called from DMSINT or EXEC, so HRC309DS 00308000
  309. * we will display error messages HRC309DS 00309000
  310. * 00310000
  311. * THE PLIST PTR IS UPDATED TO POINT TO OPERAND ONE AND 00311000
  312. * THE PLIST END INDICATOR IS PUT IN GR 6. 00312000
  313. * 00313000
  314. USING FCBSECT,R4 TABLE ADDRESSABILITY 00314000
  315. LETSGO LA R5,8(,R5) SKIP TO FIRST PARAMETER 00315000
  316. SR R15,R15 ZERO RETURN CODE REGISTER 00316000
  317. L R6,PLISTEND SET REG 6 = X'FFFFFFFF' 00317000
  318. C R6,0(,R5) ? NULL ENTRIES ? 00318000
  319. BE LIST YES. GO LIST CURRENT OSCB 00319000
  320. * CHECK FOR ANY OPTIONS. 00320000
  321. LR R2,R5 SAVE CURRENT PLIST POINTER 00321000
  322. LR R9,R6 TEMP SWITCH P1017 00322000
  323. OPT1A C R6,0(,R2) ? END OF PARAMETER ? 00323000
  324. BE SETPLIST YES - GO SET UP PLIST COPY 00324000
  325. CLI 0(R2),C'(' ? START OF OPTIONS ? 00325000
  326. BNE ADDTO NO, TRY SOME MORE 00326000
  327. C R6,8(R2) check for '(' as last parm HRC309DS 00326050
  328. BNE OPT1B not there, proceed normally HRC309DS 00326100
  329. ST R6,8(R2) overwrite the lone '(' with HRC309DS 00326150
  330. ST R6,12(R2) a fence to make it go away HRC309DS 00326200
  331. B SETPLIST and pretend we never saw it HRC309DS 00326250
  332. OPT1B DS 0H HRC309DS 00326300
  333. LTR R9,R9 P1017 00327000
  334. BM PAROK O.K., FIRST PAREN P1017 00328000
  335. LR R5,R2 TWO '(' FOUND: ERROR P1017 00329000
  336. B ERR3E P1017 00330000
  337. PAROK EQU * P1017 00331000
  338. XR R9,R9 CLEAR SWITCH P1017 00332000
  339. SR R13,R13 00333000
  340. LR R13,R2 SAVE START OF OPTION 00334000
  341. ADDTO LA R2,8(,R2) INCREMENT 00335000
  342. CLI 0(R2),C')' CHEK END OF PLIST 00336000
  343. BNE OPT1A NO - SCAN NEXT 8 BYTES 00337000
  344. LTR R9,R9 TEST FOR '(' ENTERED P1017 00338000
  345. BNM REPFF P1017 00339000
  346. LR R5,R2 ERROR IF NO '(' P1017 00340000
  347. B ERR70E P1017 00341000
  348. REPFF EQU * P1017 00342000
  349. ST R6,0(,R2) REPLACE WITH X'FF'S FOR LATER USE... 00343000
  350. SETPLIST LR R4,R5 SET UP LENGTH REGISTER 00344000
  351. LA R9,COPYLIST PROGRAM'S END 00345000
  352. LR R8,R2 SAVE TEMP (R2) FOR STATUS OPTION CHEK 00346000
  353. SR R8,R4 PUT LENGTH OF PLIST IN R8 00347000
  354. EXECUTE EX R8,COPY COPY PLIST AT PROGRAM'S END 00348000
  355. LA R9,COPYLIST START OF PLIST COPY 00349000
  356. AR R8,R9 ADD LENGTH OF PLIST COPY 00350000
  357. MVC 0(4,R8),PLISTEND BORDER PATROL 00351000
  358. LA R5,COPYLIST POINT TO COPY ADDRESS 00352000
  359. TESTOPT LTR R13,R13 ANY OPTIONS? 00353000
  360. BNZ OPTNS YES. 00354000
  361. OI OPTNFLAG,NOOPTNS NO '(' FOUND: NO OPTIONS ALLOWED 00355000
  362. LR R8,R5 DUMMY R8 00356000
  363. B OP1 GO PROCESS PARAMS 00357000
  364. EJECT 00358000
  365. * 00359000
  366. * IF A '(' HAS BEEN DETECTED, USER OPTIONS FOLLOWING IT WILL BE VALID 00360000
  367. * AND R8 WILL POINT TO THE FIRST OF THESE OPTIONS; 00361000
  368. * OTHERWISE, R8 WILL POINT TO START OF PLIST (DDNAME). 00362000
  369. * 00363000
  370. OPTNS CLC CLEAR(8),8(R5) ? CLEAR REQUEST ? @VA04076 00364000
  371. BE ERR704I YES, THAT'S A NO-NO 00365000
  372. SR R13,R4 CALCULATE LENGTH OF PARAMETERS 00366000
  373. LR R4,R13 SAVE LENGTH 00367000
  374. LR R13,R5 START OF PLIST COPY 00368000
  375. AR R13,R4 START OF OPTION 00369000
  376. CLI 1(R13),BLANK DO OPTIONS FOLLOW IMMEDIATELY? 00370000
  377. BNE ADJOPT YES 00371000
  378. LA R13,8(,R13) GET FIRST OPTION 00372000
  379. LR R8,R13 SAVE OPTION START 00373000
  380. B NOCHTEST 00374000
  381. ADJOPT MVC 0(7,R13),1(R13) LEFT ADJUST OPTION CHECK 00375000
  382. MVI 7(R13),X'40' PAD WITH BLANK 00376000
  383. LR R8,R13 SAVE OPTION START 00377000
  384. * 00378000
  385. * CHECK STATUS OPTIONS... 00379000
  386. NOCHTEST MVC KEYWORD(8),NOCHANGE SET UP NOCHNG OPTION CHECK 00380000
  387. LR R1,R5 SAVE DEVICE PTR 00381000
  388. BAL R10,SCAN 00382000
  389. CLI FLAG2,MATCH ? HIT 00383000
  390. BNE PERMTEST NO 00384000
  391. OI FLAG3,NOCH YES - SO STIPULATE 00385000
  392. PERMTEST LR R5,R13 00386000
  393. MVC KEYWORD(8),PERM SET UP PERM CHECK 00387000
  394. BAL R10,SCAN SCAN... 00388000
  395. LR R5,R13 RESET 00389000
  396. CLI FLAG2,MATCH ? HIT 00390000
  397. BNE CONCATCK NO @V201105 00391000
  398. OI FLAG3,PERMBIT SET PERM BIT IN FCB 00392000
  399. CONCATCK MVC KEYWORD(8),CONCAT LOOK FOR CONCAT OPTION @V201105 00393000
  400. BAL R10,SCAN @V201105 00394000
  401. LR R5,R13 RESTORE R5 @V201105 00395000
  402. CLI FLAG2,MATCH FOUND @V201105 00396000
  403. BNE CHNGTEST NO @V201105 00397000
  404. OI FLAG3,CATFLG REMEMBER IT @V201105 00398000
  405. OI FLAG1,NEW IDICATE NEW ENTRY @V201105 00399000
  406. CLC 8(8,R1),=CL8'DSN' OS DISK @V201105 00400000
  407. BE CATDEF YES, SET FN FT DEFAULT @V201105 00401000
  408. CLC 16(8,R1),=CL8'DSN' SAME QUESTION @V201105 00402000
  409. BE CATDEF SAME ANSWER @V201105 00403000
  410. C R6,16(R1) FN SPECIFIED @V201105 00404000
  411. BE CATDEF NO, USE DEFAULT @V201105 00405000
  412. CLI 16(R1),C'(' SAME QUESTION @V201105 00406000
  413. BE CATDEF SAME ANSWER @V201105 00407000
  414. MVC STATFN(16),16(R1) SAVE FN FT FOR FCB LOOP @V201105 00408000
  415. B CHNGTEST @V201105 00409000
  416. CATDEF MVC STATFN(8),=CL8'FILE' DEFAULT FNAME @V201105 00410000
  417. MVC STATFN+8(8),0(R1) DDNAME AS FTYPE @V201105 00411000
  418. CHNGTEST MVC KEYWORD(8),CHANGE 00412000
  419. BAL R10,SCAN 00413000
  420. LR R5,R1 RESET DEVICE POINTR 00414000
  421. B OP1 GO CHECK PARAMETERS 00415000
  422. EJECT 00416000
  423. * 00417000
  424. *********************************************************************** 00418000
  425. * 00419000
  426. * PROCESSING NULL OPERANDS 00420000
  427. * 00421000
  428. * 1. THIS IS A REQUEST FOR A LIST ON SYSOUT OF THE 00422000
  429. * DDNAMES IN THE FCB TABLE. 00423000
  430. * 00424000
  431. *********************************************************************** 00425000
  432. * 00426000
  433. LIST EQU * 00427000
  434. LH R2,FCBNUM GET COUNT OF ENTRIES 00428000
  435. LTR R2,R2 00429000
  436. BZ RETURN ALL CLEAR 00430000
  437. L R4,FCBFIRST GET PTR TO 1ST ENTRY 00431000
  438. LIST1 MVC LISTMES(8),FCBDD PUT DDNAME INTO MESSAGE 00432000
  439. SR R8,R8 CLEAR REG 8 00433000
  440. IC R8,FCBDEV GET DEVICE TYPE CODE 00434000
  441. AR R8,R8 DOUBLE IT FOR TABLE LOOK UP 00435000
  442. LA R7,DUMMY GET ADDRESS OF DUMMY 00436000
  443. AR R7,R8 POINT TO PROPER ENTRY IN TABLE 00437000
  444. MVC LISTMES+9(8),0(R7) MOVE DEV NAME TO MSG 00438000
  445. CLC LISTMES+9(8),TAP IS IT A TAPE DEVICE. 00439000
  446. BNE LIST2 00440000
  447. MVC LISTMES+12(1),FCBTAPID+3 PUT TAP NUMBER INTO MSG 00441000
  448. * TYPE '8 BLANKS' 00442000
  449. LIST2 CLC LISTMES+9(2),DISK ? IS IT DISK ? 00443000
  450. BNE LIST3 NO 00444000
  451. MVC LISTMES+18(8),FCBDSNAM MOVE IN DSNAME 00445000
  452. MVC LISTMES+27(8),FCBDSTYP MOVE IN DSTYPE 00446000
  453. MVC LISTMES+36(2),FCBDSMD MOVE IN DSMODE @V201122 00447000
  454. MVC LISTLEN(3),DSKLEN 00448000
  455. L R1,FCBOSDSN GET OS DSN ADDR @V201122 00449000
  456. LTR R1,R1 IS IT SPECIFIED @V201122 00450000
  457. BZ LIST3 NO, DON'T USE DSN @V201122 00451000
  458. MVC LISTOSDS(44),0(R1) TYPE OS DSN @V201122 00452000
  459. MVC LISTLEN(3),OSDSKLEN USE OS DSN LENGTH @V201122 00453000
  460. LIST3 LA R1,LISTYP ADDRESS OF DESCRIPTION 00454000
  461. B LISTSVC CALL TYPE. 00455000
  462. DS 0F ALIGN. 00456000
  463. LISTYP DC CL8'TYPLIN' 00457000
  464. DC AL1(1),AL3(LISTMES),C'D' 00458000
  465. LISTLEN DC AL3(L'LISTMES) 00459000
  466. LISTMES DC CL22' ' FOR DDNAMES AND DEVICE NAMES @V201122 00460000
  467. LISTDSK DC CL18' ' FOR DSNAMES AND DSTYPES 00461000
  468. LISTOSDS DC CL44' ' SPACE FOR OS DSN @V201122 00462000
  469. LISTSVC SVC CMS 00463000
  470. L R4,0(,R4) GET PTR TO NEXT ENTRY 00464000
  471. MVC LISTLEN(3),GENLEN RESTORE DEFAULT LENGTH 00465000
  472. MVI LISTMES,X'40' SET FIRST BYTE TO BLANK @VA02592 00466000
  473. MVC LISTMES+1(21),LISTMES BLANK OUT MSG FIELD @VA02592 00467000
  474. BCT R2,LIST1 CONTINUE FOR ALL ENTRIES 00468000
  475. B RETURN FINISHED. 00469000
  476. DSKLEN DC AL3(LISTOSDS-LISTMES) @V201122 00470000
  477. OSDSKLEN DC AL3(LISTSVC-LISTMES) @V201122 00471000
  478. GENLEN DC AL3(L'LISTMES) 00472000
  479. DS 0H @V201122 00473000
  480. * 00474000
  481. EJECT 00475000
  482. * 00476000
  483. *********************************************************************** 00477000
  484. * 00478000
  485. * PROCESSING OF OPERAND ONE 00479000
  486. * 00480000
  487. * 1. THREE OPTIONS ARE POSSIBLE: 00481000
  488. * A. A DDNAME, OR 00482000
  489. * B. A DATA SET REFERENCE NUMBER (DSRN), OR 00483000
  490. * C. AN ASTERISK *, (CLEAR ALL). 00484000
  491. * 00485000
  492. * 2. TYPE AND VALIDITY ARE CHECKED. 00486000
  493. * 3. FOR DSRN, A DDNAME IS CREATED. 00487000
  494. * A. WITH THE DDNAME, THE FCB TABLE IS SEARCHED FOR A 00488000
  495. * MATCH, AND SVCFREE CALLED IF NECESSARY. 00489000
  496. * B. FOR *, THE CLEAR OPTION IS PROCESSED. 00490000
  497. * 00491000
  498. *********************************************************************** 00492000
  499. * 00493000
  500. * PLIST POINTS TO PARAMETER 1. 00494000
  501. * THE FIRST PARAMETER IS CHECKED FOR TYPE AND VALIDITY. 00495000
  502. * 00496000
  503. OP1 EQU * 00497000
  504. OI FLAG4,OLD RESET SVCFREE FLAG 00498000
  505. NI FLAG4,255-NEW 00499000
  506. C R6,8(,R5) ? ONLY 1 PARAM ? 00500000
  507. BE ERR50E YES, QUIT 00501000
  508. CLI 0(R5),C'Z' ? 1ST CHAR NUMERIC ? 00502000
  509. BH DSRN YES IF > THAN X'E9'. 00503000
  510. CLI 0(R5),C'*' ? CLEAR REQUEST ? 00504000
  511. BNE SRCHFCB NO, GO PROCESS AS DDNAME. 00505000
  512. * 00506000
  513. * PROCESS * CLEAR REQUEST. 00507000
  514. * 00508000
  515. AST EQU * 00509000
  516. CLI 1(R5),BLANK ? ONLY * ENTERED ? R 195 00510000
  517. BNE ERR70E NO, ERROR EXIT @VA03259 00511000
  518. CLC CLEAR(8),8(R5) ? 2ND OPERAND CLEAR ? 00512000
  519. BNE ERR3E NO, ERROR EXIT. 00513000
  520. C R6,16(,R5) ? ONLY 2 PARAMETERS ? 00514000
  521. BE RELEASE YES - CONTINUE 00515000
  522. LA R5,16(,R5) POINT TO THE INVALID OPTION 00516000
  523. B ERR3E AND GO TO ERR RTN. 00517000
  524. * 00518000
  525. * ALL ENTRIES EXCEPT SYSIN AND SYSOUT WILL BE RELEASED. 00519000
  526. * 00520000
  527. RELEASE LH R7,FCBNUM GET COUNT OF ENTRIES 00521000
  528. LTR R7,R7 ? ANY ENTRIES ? 00522000
  529. BZ RETURN NO, FINISHED. 00523000
  530. LR R6,R7 SET UP LOOPING REGISTER 00524000
  531. LA R2,FCBFIRST INITIALIZE CHAIN 00525000
  532. LA R5,FCBENSIZ SIZE TO RELEASE IN DLWDS 00526000
  533. ST R5,PLFREE+8 STORE IN FRET LIST 00527000
  534. LOOP LR R4,R2 SAVE CHAIN POINTER 00528000
  535. L R1,0(,R2) GET POINTER TO NEXT FCB 00529000
  536. TM 0(R1),PERMBIT IS THIS A PERMANENT FCB? 00530000
  537. LR R2,R1 SAVE POINTER 00531000
  538. BO ITERATE SKIP FRET - PERMANENT FCB 00532000
  539. MVC 1(3,R4),1(R1) RESET FORWARD POINTER 00533000
  540. LR R2,R4 RESTORE POINTER 00534000
  541. ST R1,PLFREE+12 STORE FCB ADDRESS IN FRET LIST 00535000
  542. DROP R4 @V201105 00536000
  543. LR R4,R1 PUT ADDRESS OF FCB INTO REG4 @VA12529 00536500
  544. USING FCBSECT,R1 @V201105 00537000
  545. L R1,FCBOSDSN GET OS DSNAME BLOCK POINTER @V201105 00538000
  546. LA R1,0(,R1) @V201105 00539000
  547. DROP R1 @V201105 00540000
  548. USING FCBSECT,R4 @V201105 00541000
  549. LTR R1,R1 DOES IT EXIST @V201105 00542000
  550. BZ FSTRLS NO @VA12529 00543000
  551. DMSFRET DWORDS=6,LOC=(1) RELEASE IT @V201105 00544000
  552. FSTRLS EQU * 00544200
  553. LR R5,R2 SAVE CHAIN POINTER @VA12529 00544400
  554. STH R7,FCBNUM SAVE CURRENT FCB COUNT @VA12529 00544600
  555. L R7,FCBOSFST GET OSFST ADDRESS @VA12529 00544800
  556. SR R8,R8 CLEAR REGISTER @VA12529 00545000
  557. BAL R10,CLRFST1 CHECK FOR OSFST FREE @VA12529 00545200
  558. BAL R10,FRET GO RELEASE FCB @VA12529 00545400
  559. LR R2,R5 RESTORE CHAIN POINTER @VA12529 00545600
  560. LH R7,FCBNUM RESTORE COUNT OF ENTRIES @VA12529 00545800
  561. BCTR R7,R0 DECREMENT FCBNUM 00546000
  562. ITERATE BCT R6,LOOP LOOP UNTIL ALL ENTRIES CHECKED 00547000
  563. STH R7,FCBNUM SET NEW FCBNUM 00548000
  564. B RETURN GET OUT 00549000
  565. EJECT 00550000
  566. * 00551000
  567. * PROCESS 1ST OPERAND AS A DSRN. 00552000
  568. * 00553000
  569. DSRN CLI 1(R5),BLANK 1 DIGIT DSRN 00554000
  570. BE DSRN1 YES, COMPLETE DDNAME. 00555000
  571. CLI 1(R5),C'0' ? 2ND CHAR A DIGIT TOO ? 00556000
  572. BL ERR70E NO, ERROR @VA03259 00557000
  573. CLI 2(R5),BLANK ? ONLY 2 DIGITS ? 00558000
  574. BNE ERR70E NO, ERROR EXIT @VA03259 00559000
  575. MVC REFNUM(2),0(R5) CREAT DDNAME FROM DUMMY 00560000
  576. B DSRN2 GO PUT DDNAME INTO PLIST. 00561000
  577. DSRN1 MVI REFNUM,C'0' PAD SINGLE DIGIT WITH ZERO. 00562000
  578. MVC REFNUM+1(1),0(R5) PUT SINGLE DIGIT IN DUMMY 00563000
  579. DSRN2 MVC 0(8,R5),DSRNDUM MOVE DUMMY DDNAME TO PLIST 00564000
  580. EJECT 00565000
  581. * 00566000
  582. * VALID DDNAME/DSRN EXISTS. THE NEXT CHECK IS TO SEE IF THERE IS 00567000
  583. * ALREADY AN ENTRY IN THE FCB TABLE. 00568000
  584. * 00569000
  585. SRCHFCB LH R2,FCBNUM GET COUNT OF FCB ENTRIES 00570000
  586. LTR R2,R2 ? ANY ENTRIES ? 00571000
  587. BZ SRCHFCB4 NO, SKIP UPDATING POINTERS 00572000
  588. * 00573000
  589. * THIS COUNT SHOULD BE CHECKED FOR ZERO IF THE USER CAN CLEAR THE 00574000
  590. * SYSIN/SYSOUT ENTRIES. 00575000
  591. * ALSO, PREVENT WILL CONTAIN THE ADDRESS OF THE LAST FCB ENTRY OR 00576000
  592. * THE LAST ONE BEFORE A MATCH WAS FOUND. 00577000
  593. * 00578000
  594. L R4,FCBFIRST PTR TO 1ST ENTRY. 00579000
  595. SRCHFCB1 CLC FCBDD(8),0(R5) ? FIND A MATCH ? 00580000
  596. BE SRCHFCB2 YES, SKIP FREE CALL BUT SAVE OLD ENTRY. 00581000
  597. SRCHFCB6 ST R4,PREVENT SAVE PREVIOUS ENTRY POINT @V201105 00582000
  598. L R4,0(,R4) UPDATE PTR TO NEXT ENTRY 00583000
  599. BCT R2,SRCHFCB1 CONTINUE UNTIL NO MORE ENTRIES 00584000
  600. * 00585000
  601. * NO MATCH FOUND, SO A NEW ENTRY MUST BE OBTAINED. 00586000
  602. * 00587000
  603. SRCHFCB4 EQU * @VA01157 00588000
  604. CLC 8(8,R5),CLEAR CLEAR REQUEST? @VA01157 00589000
  605. BE CLR YES, DON'T GET A NEW AREA @VA01157 00590000
  606. OI FLAG4,NEW SET SVCFREE FLAG ON @VA01157 00591000
  607. NI FLAG4,255-OLD 00592000
  608. OI FLAG1,NEW SET ENTRY INDICATOR TO NEW. 00593000
  609. NI FLAG1,255-OLD 00594000
  610. LA R0,FCBENSIZ GET N'DBLE WORDS FOR FCBSECT 00595000
  611. ST R0,PLFREE+8 SAVE IN OLD PLIST 00596000
  612. DMSFREE DWORDS=(0),TYPE=USER 00597000
  613. SR R15,R15 CLEAR ERROR REG. 00598000
  614. ST R1,PLFREE+12 SAVE A(NEWLY ACQUIRED FREE CORE) 00599000
  615. LH R4,FCBNUM TEST FOR FIRST ENTRY 00601000
  616. LTR R4,R4 00602000
  617. BNZ CHAIN BRANCH AROUND INITIALIZATION @VA05963 00603000
  618. ST R1,FCBFIRST SET UP FIRST FCB ENTRY 00604000
  619. B CLRSTOR NO PREVIOUS ENTRY @VA05963 00605000
  620. CHAIN EQU * @VA05963 00606000
  621. L R4,PREVENT GET PREVIOUS FCB ADDR @VA05963 00607000
  622. USING FCBSECT,R4 @VA05963 00608000
  623. STCM R1,B'0111',FCBNEXT+1 POINT FORWARD TO NEW FCB @VA05963 00609000
  624. DROP R4 @VA05963 00610000
  625. CLRSTOR EQU * @VA05963 00611000
  626. LR R4,R1 GET V(FCBSECT) 00612000
  627. USING FCBSECT,R4 @VA05963 00613000
  628. MVI 0(R4),X'00' CLEAR THE STORAGE OBTAINED 00614000
  629. MVC 1(FCBENSIZ*8-1,R4),0(R4) FROM SVCFREE 00615000
  630. MVC FCBDD(8),0(R5) PUT DDNAME INTO NEW ENTRY 00616000
  631. LNR R0,R4 00617000
  632. L R13,CURRSAVE 00618000
  633. ST R0,EGPR0 00619000
  634. CKCATFLG TM FLAG3,CATFLG CONCAT SPECIFIED @V201105 00620000
  635. BNO CHKPERM NO @V201105 00621000
  636. OI FCBINIT,FCBCATML SET FCB CONCAT INDICATOR @V201105 00622000
  637. CLC FCBDD(8),=CL8'DOSLIB' IS IT DOSLIB FCB ? @V305001 00623000
  638. BNE CHKPERM NO, BRANCH @V305001 00624000
  639. OI FCBINIT,FCBDOSL SET CONCAT DOSLIB FCB @V305001 00625000
  640. CHKPERM TM FLAG3,PERMBIT PERMANENT FCB @V201105 00626000
  641. BNO DUM1 NO 00627000
  642. OI FCBSECT,PERMBIT YES, FLAG IT 00628000
  643. B DUM1 GO PROCESS OPERAND TWO. 00629000
  644. * 00630000
  645. * AN EXISTING ENTRY WAS FOUND. 00631000
  646. * 00632000
  647. * A COPY OF IT WILL BE SAVED IN THE EVENT THAT ERRORS ARE DETECTED 00633000
  648. * BEFORE COMPLETION OF PROCESSING SO THAT A CANCELLED FILEDEF IMPLIES 00634000
  649. * THAT NO CHANGE HAS BEEN MADE TO EXISTING ENTRIES. 00635000
  650. * 00636000
  651. SRCHFCB2 EQU * @VA01157 00637000
  652. CLC 8(8,R5),CLEAR CLEAR REQUEST? @VA01157 00638000
  653. BE CLRA YES,GET RID OF IT @VA01157 00639000
  654. TM FLAG3,CATFLG CONCAT REQUESTED? @VA01157 00640000
  655. BNO SRCHFCB8 NO @V201105 00641000
  656. OI FCBINIT,FCBCATML INDICATE CONCATENATION @VA14030 00641500
  657. CLC FCBDSNAM(16),STATFN REQUESTED FN FT=EXISTING FN @V201105 00642000
  658. BNE SRCHFCB6 NO, LOOK FOR MORE @V201105 00643000
  659. SRCHFCB8 TM FLAG3,NOCH NOCHANGE ON EXISTING FCB @V201105 00644000
  660. BZ SRCHFCB3 NOPE. REVISE CURRENT OSCB 00645000
  661. LR R0,R4 RETURN THE A (SPECIFIC OSCB) 00646000
  662. L R13,CURRSAVE RESTORE USER SAVE AREA 00647000
  663. ST R0,EGPR0 SAVE FCB ADDRESS 00648000
  664. B RETURN 00649000
  665. SRCHFCB3 OI FLAG1,OLD INDICATE MATCH FOUND (OLD ENTRY) 00650000
  666. LNR R0,R4 00651000
  667. L R13,CURRSAVE 00652000
  668. ST R0,EGPR0 00653000
  669. SRCHFCB5 NI FLAG1,255-NEW SET ENTRY INDICATOR TO OLD 00654000
  670. MVC OLDENTRY(FCBENSIZ*8),0(R4) SAVE OLDER COPY 00655000
  671. NI FCBINIT,255-FCBCATML TURN OFF CONCATENATION @VA14030 00655500
  672. XC FCBMEMBR(12),FCBMEMBR CLEAR FST & MEMBER @VA04338 00656000
  673. B CKCATFLG CHECK FOR CONCAT FLAG @V201122 00657000
  674. EJECT 00658000
  675. *********************************************************************** 00659000
  676. * 00660000
  677. * 00661000
  678. * PROCESSING OF OPERAND TWO 00662000
  679. * 00663000
  680. * 00664000
  681. *********************************************************************** 00665000
  682. * 00666000
  683. *********************************************************************** 00667000
  684. * 00668000
  685. * PROCESS THE DUMMY OPERAND 00669000
  686. * 00670000
  687. ********************************************** ************************ 00671000
  688. * 00672000
  689. * PLIST STILL POINTS TO THE FIRST OPERAND (PARAMETER). 00673000
  690. * 00674000
  691. DUM1 EQU * 00675000
  692. CLC DUMMY(8),8(R5) ? DUMMY OPTION ? 00676000
  693. BNE D1 NO, GO CHECK FOR DSK. 00677000
  694. XC FCBDSNAM(FCBSIZ),FCBDSNAM CLEAR OUT BLOCK @VA06191 00678000
  695. LA R9,16(,R5) POSITION PTR AFTER 'DUMMY' 00679000
  696. B D1BB AND ACT LIKE 'DISK' DEVICE-TYPE 00680000
  697. EJECT 00681000
  698. *********************************************************************** 00682000
  699. * 00683000
  700. * PROCESS THE DISK OPERAND 00684000
  701. * 00685000
  702. *********************************************************************** 00686000
  703. * 00687000
  704. * PLIST (R5) STILL POINTS TO THE DDNAME (PARAMETER 1). 00688000
  705. * 00689000
  706. D1 CLC DISK(8),8(R5) 'DISK' DEVICE 00690000
  707. BNE T1 NEITHER, TRY TAPE OPTION 00691000
  708. TM FLAG1,NEW IS THIS A 'NEW' FILEDEF? @VA06191 00692000
  709. BO D1AA BRANCH IF YES @VA06191 00693000
  710. CLI FCBDEV,FCBDSK WAS OLD DEVTYP DISK? @VA06191 00694000
  711. BE D1AA BRANCH IF YES @VA06191 00695000
  712. XC FCBDSNAM(FCBSIZ),FCBDSNAM CLEAR OUT BLOCK @VA06191 00696000
  713. MVC FCBDSNAM(8),FILE DEFAULT FILENAME EQ FILE @VA09122 00696200
  714. MVC FCBDSTYP(8),0(R5) DEFAULT FILETYPE TO DDNAME @VA09122 00696400
  715. MVC FCBDSMD(2),A1 DEFAULT MODE EQ A1 @VA09122 00696600
  716. D1AA LA R9,16(,R5) POSITION R9 AFTER 'DISK' 00697000
  717. MVI FCBDEV,FCBDSK SET DISK DEVICE CODE 00698000
  718. * 00699000
  719. * REMEMBER...R8 HAS A(OPTION START) IF ANY; OTHERWISE, START OF PLIST 00700000
  720. D1BB CR R9,R8 CHEK FOR START OF OPTIONS 00701000
  721. BE DEFAULT IF SO, DEFAULT NAME,TYPE AND MODE 00702000
  722. * 00703000
  723. * IF FILEDEF IS ISSUED FROM THE TERMINAL, A '(' WILL REMAIN IN PLIST; 00704000
  724. * IF FILEDEF IS CALLED VIA 'SVC', THERE IS NO '(' AT THIS POINT...THUS 00705000
  725. * THERE ARE CHEKS FOR BOTH 'START OF OPTIONS' CONDITIONS: 00706000
  726. * R9=R8 ... SVC CALL '(' ... TERMINAL COMMAND 00707000
  727. * 00708000
  728. CLI 0(R9),C'(' SAME FOR TERM. COMMAND... 00709000
  729. BE DEFAULT 00710000
  730. C R6,0(R9) CHEK END OF LINE 00711000
  731. BNE BUMPR9 IF NOT, TRY NEXT PLIST POSITION 00712000
  732. * 00713000
  733. DEFAULT EQU * @VA04338 00714000
  734. TM FLAG1,NEW IS THIS A NEW FILEDEF ? @VA04338 00715000
  735. BO DEFFNFT GO GET DEFAULT FN FT @VA06191 00716000
  736. CLI FCBDEV,FCBDUM DUMMY DEVICE? @VA06191 00717000
  737. BNE STATCALL BRANCH IF NOT, KEEP FN FT @VA06191 00718000
  738. DEFFNFT EQU * @VA06191 00719000
  739. MVC FCBDSNAM(8),FILE PUT IN DEFAULT NAME 'FILE' @VA04338 00720000
  740. MVC FCBDSNAM+8(8),0(R5) AND USE DDNAME AS FILETYPE 00721000
  741. DEFMODE MVC FCBDSMD(2),A1 PROVIDE DEFAULT MODE 00722000
  742. STATCALL MVC STATFN(18),FCBDSNAM INFO. FOR STATE CALL 00723000
  743. CLC 0(8,R9),=CL8'DSN' OS REQUESTED @V201105 00724000
  744. BNE FLDSTATE NO @V201105 00725000
  745. DMSFREE DWORDS=17,TYPE=USER GET WORK AREA @V201105 00726000
  746. LR R3,R1 ADDR. TO R3 @V201105 00727000
  747. CLC 8(8,R9),=CL8'?' PROMPT WANTED ? @V201105 00728000
  748. BNE NOPROMPT NO @V201105 00729000
  749. LA R9,16(0,R9) GET PAST '?' @V201105 00730000
  750. REREAD DMSERR TEXT='ENTER DATA SET NAME:',NUM=220,LET=R,DOT=NO 00731000
  751. STCM R3,B'0111',DSNBUF SET TERMINAL READ PBIST @V201105 00732000
  752. LA R1,CONREAD PLIST TO R1 @V201105 00733000
  753. SVC 202 READ OS DSNAME @V201105 00734000
  754. ICM R15,B'0111',DSNBYTE GET LENGTH READ @V201105 00735000
  755. LTR R15,R15 ZERO BYTES @V201122 00736000
  756. BZ BADDSN YES, ERROR @V201122 00737000
  757. SH R15,=H'44' CHECK FOR > 44 CHARACTERS @V201122 00738000
  758. BNP OSDSNSET LESS THAN 44, CONTINUE @V201122 00739000
  759. CKOVR44 LA R1,43(R15,R3) GET ADDR OF NEXT BYTE CHECK @V201122 00740000
  760. CLI 0(R1),C' ' ANY NON BLANKS SPECIFIED? @V201122 00741000
  761. BNE BADDSN YES, THEN ERROR @V201122 00742000
  762. BCT R15,CKOVR44 CHECK NEXT CHARACTER @V201122 00743000
  763. B OSDSNSET GO COMPLETE FCB @V201122 00744000
  764. NOPROMPT LR R15,R3 USE R15 FOR WORK @V201105 00745000
  765. MVI 0(R3),C' ' BLANK DSNAME BLOCK @V201105 00746000
  766. MVC 1(44,R3),0(R3) PLUS ONE @V201105 00747000
  767. LA R1,45(0,R3) SET END OF DSNAME BLOCK MINUS 3 @V201105 00748000
  768. NXTPARM LA R9,8(0,R9) NEXT PARAMETER @V201105 00749000
  769. CLI 0(R9),C'(' END OF PARAM @V201105 00750000
  770. BE QUALEND YES, RELEASE WORK AREA @V201105 00751000
  771. C R6,0(R9) END OF PARAM @V201105 00752000
  772. BE QUALEND YES, RELEASE WORK AREA @V201105 00753000
  773. CR R8,R9 END OF PARAM @V201105 00754000
  774. BE QUALEND YES @V201105 00755000
  775. MVC 0(8,R15),0(R9) 1ST OS QUALIFIER (OR NEXT) @V201105 00756000
  776. NXTQUAL LA R15,1(0,R15) NEXT CHAR. THIS QUALIFIER @V201105 00757000
  777. CR R15,R1 CHECK AGAINST 44 BYTE LIMIT @V201105 00758000
  778. BH BADDSN IF HIGH ERROR @V201105 00759000
  779. CLI 0(R15),C' ' BLANK @V201105 00760000
  780. BE PERIOD YES, SET PERIOD @V201105 00761000
  781. CLI 0(R15),C'.' IS PERIOD SPECIFIED @V201105 00762000
  782. BE BADDSN YES, THEN BAD DATA SET NAME @V201105 00763000
  783. B NXTQUAL LOOK AT NEXT CHAR @V201105 00764000
  784. PERIOD MVI 0(R15),C'.' SET QUALIFIER END @V201105 00765000
  785. LA R15,1(0,R15) GET PAST PERIOD @V201105 00766000
  786. B NXTPARM CHECK FOR ANOTHER QUALIFIER @V201105 00767000
  787. QUALEND SH R15,=H'1' BACK OFF LAST PERIOD @V201105 00768000
  788. CR R15,R3 WERE ANY QUALIFIERS ENTERED @V201105 00769000
  789. BNH BADDSN NO, ERROR @V201105 00770000
  790. MVI 0(R15),C' ' RESET LAST PERIOD TO BLANK @V201105 00771000
  791. OSDSNSET LR R2,R3 SET TO SCAN FOR INVLD NAME @V201105 00772000
  792. CLI 0(R2),C'.' 1ST CHAR = '.' @V201105 00773000
  793. BE BADDSN YES, ERROR @V201105 00774000
  794. DSNLP LA R15,43(,R3) POINT TO END OF DSNAME @V201105 00775000
  795. SR R15,R2 LENGTH TO TRT @V201105 00776000
  796. BM BADDSN LONGER THAN 44 CHAR @V201105 00777000
  797. EX R15,OSTRT SCAN FOR INVLD CHAR @V201105 00778000
  798. BZ GOODDSN NO INVLD CHAR @V201105 00779000
  799. LR R2,R1 SET R2 TO INVLD CHAR @V201105 00780000
  800. CLI 0(R2),C'.' IS CHAR '.' @V201105 00781000
  801. BNE BADDSN NO, ERROR @V201105 00782000
  802. LA R2,1(,R2) NEXT CHAR @V201105 00783000
  803. CLI 0(R2),C'.' IS THIS '.' ALSO @V201105 00784000
  804. BNE DSNLP NO, OK @V201105 00785000
  805. BADDSN LR R1,R3 SET TO RELEASE WORK AREA @V201105 00786000
  806. DMSFRET DWORDS=17,LOC=(1) @V201105 00787000
  807. B ERR221E @V201105 00788000
  808. OSTRT TRT 0(*-*,R2),OSTBL EXECUTED SCAN OF DSNAME @V201105 00789000
  809. GOODDSN ST R3,FCBOSDSN SET DSN BLOCK ADR IN FCB @V201122 00790000
  810. TM FLAG1,IDMATCH FILEID MATCH IN ANOTHER FCB? @VA05963 00791000
  811. BNO USEDSN NO, DO STATE @VA05963 00792000
  812. LR R1,R3 SET TO RELEASE WORK AREA @V201122 00793000
  813. DMSFRET DWORDS=17,LOC=(1) @V201122 00794000
  814. B ERR224E PRINT ERROR MSG @V201122 00795000
  815. USEDSN LA R1,48(,R3) RELEASE UNUSED WORK AREA @V201122 00796000
  816. DMSFRET DWORDS=11,LOC=(1) @V201122 00797000
  817. FLDSTATE EQU * @V201122 00798000
  818. LA R1,STATLST PURELY SYNTACTICAL 'STATE' 00799000
  819. XC FCBDSMD(2),FCBDSMD CLEAR FCB INDICATOR @VA12255 00799500
  820. ICM R1,B'1000',=X'01' INDICATE CALL IS FROM DMSFLD @VA03409 00800000
  821. MVC STATAST(FOUR),ASTERISK FOR REUSABILITY @VA06220 00801000
  822. L R15,ASTATE ... @V305066 00802000
  823. BALR R14,R15 ... @V305066 00803000
  824. MVC FCBDSMD(2),STATFM RESTORE FILE MODE IND @VA12255 00803500
  825. MVC A1(2),=CL2'A1' RESTORE DEFAULT MODE @V201105 00804000
  826. LTR R15,R15 00805000
  827. BZ DCONT IGNORE IF FOUND 00806000
  828. CH R15,=H'28' 00807000
  829. BE DCONT IGNORE 'NOT FOUND' 00808000
  830. CH R15,=H'80' OS DATA SET NOT FOUND @V201105 00809000
  831. BNL DCONT YES, OK @V201105 00810000
  832. CH R15,=H'36' ALSO IGNORE 'DISK NOT ACCESSED' 00811000
  833. BNE EXIT SYNTAX ERROR 00812000
  834. LA R3,24(R1) POINT TO MODE LETTER @VA03409 00813000
  835. DMSERR NUM=69,LET=I,TEXT='DISK ''..'' NOT ACCESSED', X00814000
  836. SUB=(CHARA,((R3),1)) GIVE INFORMATION MSG 00815000
  837. DCONT XR R15,R15 CLEAR RETURN CODES FROM STATE 00816000
  838. C R6,0(R9) IF END OF LINE, PROCESS DEF'LT OPTNS 00817000
  839. BE D2C 00818000
  840. B D2 IF NOT,PROCESS USER OPTIONS 00819000
  841. * 00820000
  842. BUMPR9 LA R9,8(,R9) BUMP R9 TO NEXT PLIST POSITION 00821000
  843. C R6,0(R9) IF END OF LINE, ERROR - NO FILETYPE 00822000
  844. BE ERR23E 00823000
  845. CLI 0(R9),C'(' CHEK OPTION START (TERM. COMMAND) 00824000
  846. BE ERR23E ALSO ERROR 00825000
  847. CR R9,R8 DITTO FOR START OF OPTIONS (SVC CALL 00826000
  848. BE ERR23E 00827000
  849. CLI FLAG1,NEW BUILDING NEW FCB? @VA05963 00828000
  850. BE COMPID1 YES, CHECK FILEID MATCH @VA05963 00829000
  851. CLC FCBDSNAM(16),D16(R5) SAME ID AS PREVIOUS ENTRY? @VA05963 00830000
  852. BNE DELETDSN NO, DELETE DSN @VA05963 00831000
  853. CLC FCBDSMD(D01),D32(R5) MODE LETTER EQUAL @VA07707 00832000
  854. BE CHKNXT YES, GET NEXT PARAMETER @VA05963 00833000
  855. DELETDSN EQU * @VA05963 00834000
  856. XC FCBOSDSN,FCBOSDSN DELETE RESIDUAL DSN @VA05963 00835000
  857. MOVEID EQU * @VA05963 00836000
  858. MVC FCBDSNAM(16),16(R5) USE USER NAME & TYPE 00837000
  859. B CHKNXT LOOK FOR ANOTHER PARAMETER @VA05963 00838000
  860. COMPID1 EQU * @VA05963 00839000
  861. DROP R4 @VA05963 00840000
  862. USING FCBSECT,R15 @VA05963 00841000
  863. L R15,FCBFIRST GET START OF FCB CHAIN @VA05963 00842000
  864. COMPID2 EQU * @VA05963 00843000
  865. CLC FCBDSNAM(16),D16(R5) PLIST NAME AND TYPE MATCH? @VA05963 00844000
  866. BE COMPID4 YES, CHECK MODE @VA05963 00845000
  867. COMPID3 EQU * @VA05963 00846000
  868. L R15,0(,R15) GET CHAIN PTR AT LABEL FCBNEXT @VA05963 00847000
  869. LA R15,0(,R15) CLEAR HIGH ORDER BYTE @VA05963 00848000
  870. LTR R15,R15 END OF CHAIN? @VA05963 00849000
  871. BNZ COMPID2 NO, CHECK NEXT FCB @VA05963 00850000
  872. B MOVEID PUT FILEID IN FCB @VA05963 00851000
  873. COMPID4 EQU * @VA05963 00852000
  874. CLC FCBDSMD(1),ASTERISK MODE=*? @VA05963 00853000
  875. BE COMPID5 YES, CHECK OS DSN @VA05963 00854000
  876. CLC D32(1,R5),ASTERISK MODE=*? @VA05963 00855000
  877. BE COMPID5 YES,CHECK OS DSN @VA05963 00856000
  878. CLC FCBDSMD(1),D32(R5) MODES EQUAL? @VA05963 00857000
  879. BNE COMPID3 NO, CHECK NEXT FCB @VA05963 00858000
  880. COMPID5 EQU * @VA05963 00859000
  881. OI FLAG1,IDMATCH FILEID MATCH IN OUTSTANDING FCB @VA05963 00860000
  882. CLC FCBOSDSN,ZERO OS DSN OUTSTANDING? @VA05963 00861000
  883. BNE ERR224E YES, PRINT ERROR MSG @VA05963 00862000
  884. B COMPID3 NO, CHECK NEXT FCB @VA05963 00863000
  885. CHKNXT EQU * @VA05963 00864000
  886. DROP R15 @VA05963 00865000
  887. USING FCBSECT,R4 @VA05963 00866000
  888. LA R9,8(,R9) BUMP R9 TO NEXT PLIST POSITION 00867000
  889. * 00868000
  890. C R6,0(R9) IF END OF LINE, USE DEFAULT MODE 00869000
  891. BE DEFMODE 00870000
  892. CLI 0(R9),C'(' CHEK OPTION START (TERM. COMMAND)... 00871000
  893. BE DEFMODE ALSO DEFAULT MODE 00872000
  894. CR R9,R8 DITTO FOR START OF OPTIONS (SVC CALL 00873000
  895. BE DEFMODE 00874000
  896. CLC 0(8,R9),=CL8'DSN' OS REQUEST @V201105 00875000
  897. BE DEFMODE YES, DEFAULT MODE @V201105 00876000
  898. CLI 0(R9),C'*' IS MODE '*' ? V0638 00877000
  899. BE USRMODE IF SO, MODE NUMBER NOT ALLOWED V0638 00878000
  900. CLI 0(R9),C' ' IS MODE MISSING @VA11480 00878100
  901. BNE MODENUM NO, CHECK FOR MODE NUMBER @VA11480 00878200
  902. LA R9,8(,R9) BUMP TO NEXT PLIST SLOT @VA11480 00878300
  903. B DEFMODE BR - USE DEFAULT MODE @VA11480 00878400
  904. MODENUM EQU * @VA11480 00878500
  905. CLI 1(R9),C' ' IS MODE NUMBER MISSING? V0638 00879000
  906. BNE USRMODE IF NOT, OKAY V0638 00880000
  907. MVI 1(R9),C'1' IF MISSING, DEFAULT IT TO 1 V0638 00881000
  908. USRMODE MVC FCBDSMD(2),0(R9) USE HIS MODE V0638 00882000
  909. LA R9,8(,R9) BUMP R9 TO NEXT PLIST SLOT 00883000
  910. B STATCALL NOW CHEK FOR SYNTAX ERRORS 00884000
  911. D2C TM FLAG1,NEW IS IT A NEW ENTRY 00885000
  912. BO DT13 YES, PROCESS DEFAULTS 00886000
  913. B EXIT NO, DON'T OVERRIDE EXISTING FIELDS 00887000
  914. D2 CLI 0(R9),C'(' CHEK FOR TERM COMMAND 00888000
  915. BNE D2A NO 00889000
  916. LA R9,8(,R9) YES, SKIP BY '('... 00890000
  917. D2A CR R9,R8 IF R9=R8, PROCESS USER OPTIONS 00891000
  918. BNE D2AB ERROR CONDITION P1017 00892000
  919. TM VALFLAG,X'FF' P1017 00893000
  920. BZ DT0 'DISK' DEVICE IF NOT SET P1017 00894000
  921. B DT00 OTHER DEVICES ALREADY SET P1017 00895000
  922. D2AB EQU * P1017 00896000
  923. LR R5,R9 OTHERWISE, INVALID OPTIONS (R9>R8) 00897000
  924. B ERR70E OR XTRA OPERAND AFTER MODE (R9<P1017 00898000
  925. EJECT 00899000
  926. * 00900000
  927. * KEYWORD SEARCH FOR BDAM DISK PROCESSING 00901000
  928. * 00902000
  929. DT0 OI VALFLAG,DSKDEV INDICATE DISK FOR OPTN SCAN 00903000
  930. DT00 MVC KEYWORD(8),KEYLEN SEARCH FOR 'KEYLEN' OPTN 00904000
  931. LR R5,R8 SET R5 TO OPTION START @V201105 00905000
  932. BAL R10,SCAN SCAN INPUT LINE 00906000
  933. CLI FLAG2,MATCH ?SCORE? 00907000
  934. BNE XTENTEST NO, GO CHECK XTENT 00908000
  935. * SCAN RETURNS WITH PLIST POINTING TO THE KEYWORD VALUE 00909000
  936. BAL R10,CONVERT CHECK KEYLENGTH VALUE 00910000
  937. STC R7,JFCKEYLE SET UP JFCB FIELD 00911000
  938. XTENTEST LR R5,R8 RESET KEYWORD OPTION POINTER 00912000
  939. MVC KEYWORD(8),XTENT SET IEYWORD = XTENT 00913000
  940. BAL R10,SCAN SCAN INPUT LINE 00914000
  941. CLI FLAG2,MATCH ?BULLSEYE? 00915000
  942. BE XTENTCVT YES, GO CONVERT THE SINNER 00916000
  943. TM FLAG1,NEW NEW ENTRY? 00917000
  944. BNO LIMCTEST NO DON'T SET DEFAULTS 00918000
  945. MVI FCBXTENT+1,DXTENT MOVE IN DEFAULT VALUE 00919000
  946. B LIMCTEST GO TO NEXT TEST 00920000
  947. * SCAN RETURNS WITH PLIST POINTING TO THE KEYWORD VALUE 00921000
  948. XTENTCVT BAL R10,CONVERT CHECK XTENT VALUE AND CONVERT IT 00922000
  949. STH R7,FCBXTENT SET UP FCB FIELD 00923000
  950. LIMCTEST LR R5,R8 RESET KEYWORD OPTION POINTER 00924000
  951. MVC KEYWORD(8),LIMCT SET KEYWORD = LIMCT 00925000
  952. BAL R10,SCAN SCAN INPUT LINE 00926000
  953. CLI FLAG2,MATCH ?HIT? 00927000
  954. BNE OPCDTEST NO, GO CHECK OPTCD 00928000
  955. * SCAN RETURNS WITH PLIST POINTING TO THE KEYWORD VALUE 00929000
  956. BAL R10,CONVERT CHECK LIMCT VALUE 00930000
  957. STC R7,JFCLIMCT SET UP JFCB FIELD 00931000
  958. OPCDTEST LR R5,R8 RESET KEYWORD OPTION POINTER 00932000
  959. MVC KEYWORD(8),OPTCD SET KEYWORD = OPTCD 00933000
  960. BAL R10,SCAN SCAN INPUT LINE 00934000
  961. CLI FLAG2,MATCH ?ON TARGET? 00935000
  962. BNE DT1 NO, GO CHECK DSORG 00936000
  963. LA R9,3 COMBO OF 3 OPTIONS POSSIBLE 00937000
  964. MVI JFCOPTCD,RESET SET OPTCD TO '0' 00938000
  965. LR R10,R5 SAVE OPTIONS PTR P1017 00939000
  966. EOPTEST CLI 0(R5),EOPTCD ? OPTION = EXTENDED SEARCH ? 00940000
  967. BNE FOPTEST NO 00941000
  968. OI JFCOPTCD,EOPT SET CODE 00942000
  969. B COMBO SCRAM 00943000
  970. FOPTEST CLI 0(R5),FOPTCD ? OPTION = FEEDBACK ? 00944000
  971. BNE AOPTEST NO 00945000
  972. OI JFCOPTCD,FOPT SET CODE 00946000
  973. B COMBO SCRAM 00947000
  974. AOPTEST CLI 0(R5),AOPTCD ? OPTION = ACTUAL ADDRESSING ? 00948000
  975. BNE ROPTEST NO 00949000
  976. OI JFCOPTCD,AOPT SET CODE 00950000
  977. B COMBO SCRAM 00951000
  978. ROPTEST CLI 0(R5),ROPTCD ? OPTION = RELEATIVE ADDRESSING ? 00952000
  979. BE SETROPT YES P1017 00953000
  980. LR R5,R10 IF NOT, MUST BE ERROR P1017 00954000
  981. B ERR29E P1017 00955000
  982. SETROPT EQU * P1017 00956000
  983. OI JFCOPTCD,ROPT SET CODE 00957000
  984. COMBO LA R5,1(,R5) COMBINATION CHEK 00958000
  985. CLI 0(R5),BLANK ANY LEFT ? 00959000
  986. BE DT1 NO. CARRY ON 00960000
  987. BCT R9,EOPTEST YES. SEE WHAT IT IS... 00961000
  988. LR R5,R10 RESTORE OPTION PTR P1017 00962000
  989. B ERR29E MORE THAN 3 OPTCD'S P1017 00963000
  990. DT1 EQU * P1017 00964000
  991. TM JFCOPTCD,AOPT+ROPT P1017 00965000
  992. LR R5,R10 P1017 00966000
  993. BO ERR29E ERROR IF 'A' AND 'R' BOTH P1017 00967000
  994. LR R5,R8 00968000
  995. * 00969000
  996. * PROCESS DSORG KEYWORD 00970000
  997. * 00971000
  998. MVC KEYWORD(8),DSORG SET KEYWORD="DSORG" 00972000
  999. BAL R10,SCAN SCAN INPUT LINE 00973000
  1000. CLI FLAG2,MATCH WAS DSORG ENTERED? 00974000
  1001. BNE DT2A NOPE 00975000
  1002. CLC PSORG(3),0(R5) ? DSORG = PHYSICAL SEQUENTIAL ? 00976000
  1003. BE DT1D YES 00977000
  1004. CLC DAORG(3),0(R5) ? DSORG = DIRECT ACCESS ? 00978000
  1005. BNE DT1A NO. 00979000
  1006. MVI FCBDSORG,DSORGDA 00980000
  1007. B DT2B 00981000
  1008. DT1A CLC POORG(3),0(R5) DSORG = PARTIONED ? @VA04918 00982000
  1009. BNE ERR29E 00983000
  1010. MVI FCBDSORG,DSORGPO 00984000
  1011. B DT2B 00985000
  1012. DT1D MVI FCBDSORG,DSORGPS DEFAULT TO "PS" 00986000
  1013. DT2B MVI FCBDSORG+1,0 CLEAR DSORG+1 00987000
  1014. DT2A LR R5,R8 RESET KEYWORD OPTION POINTER 00988000
  1015. MVC KEYWORD(8),DISP SET KEYWORD = 'DISP' 00989000
  1016. BAL R10,SCAN SCAN INPUT LINE 00990000
  1017. CLI FLAG2,MATCH 00991000
  1018. BNE DT2E 00992000
  1019. CLC MOD(8),0(R5) DISP = MOD? 00993000
  1020. BNE ERR29E ONLY MOD IS ALLOWED 00994000
  1021. MVI JFCBIND2,X'80' SET MOD 00995000
  1022. DT2E LR R5,R8 RESET KEYWORD OPTION POINTER 00996000
  1023. * 00997000
  1024. * PROCESS RECFM KEYWORD. 00998000
  1025. * 00999000
  1026. DT2C MVC KEYWORD(8),RECFM SET UP FOR SCAN FOR RECFM 01000000
  1027. BAL R10,SCAN INVOKE THE KEYWORD SCANNER 01001000
  1028. CLI FLAG2,MATCH RECFM KEYWORD FOUND ? 01002000
  1029. BNE DT6 NOPE 01003000
  1030. * SCAN RETURNS WITH PLIST POINTING TO THE KEYWORD VALUE. 01004000
  1031. LA R9,RECFTAB SET RECFM TABLE SEARCH 01005000
  1032. LA R2,6 LENGTH OF EACH ENTRY 01006000
  1033. LA R3,RECFEND 01007000
  1034. RFCHEK CLC 0(5,R9),0(R5) TABLE ENTRY=PLIST ENTRY 01008000
  1035. BNE RFBXLE NO, TRY AGAIN 01009000
  1036. MVC FCBRECFM(1),5(R9) SET RECFM IN FCB 01010000
  1037. B DT6 AND CONTINUE 01011000
  1038. RFBXLE BXLE R9,R2,RFCHEK 01012000
  1039. B ERR29E ERROR, NOT FOUND 01013000
  1040. DT6 LR R5,R8 RESET PLIST TO 1ST KEYWORD 01014000
  1041. * 01015000
  1042. * PROCESS AUXILIARY PROCESSING ROUTINE INDICATION FOR THIS DATA SET 01016000
  1043. * 01017000
  1044. DT6A MVC KEYWORD(8),AUXPROC SCAN FOR "AUXPROC" 01018000
  1045. BAL R10,SCAN 01019000
  1046. CLI FLAG2,MATCH WAS "AUXPROC" FOUND? 01020000
  1047. BNE DT6B NO. 01021000
  1048. MVC FCBPROC(4),0(R5) SET A(PROCESSING ROUTINE) INTO OSCB 01022000
  1049. DT6B LR R5,R8 01023000
  1050. * 01024000
  1051. * PROCESS LRECL KEYWORD 01025000
  1052. * 01026000
  1053. MVC KEYWORD(8),LRECL SCAN FOR LRECL. 01027000
  1054. BAL R10,SCAN INVOKE SCANNER 01028000
  1055. CLI FLAG2,MATCH FOUND LRECL ? 01029000
  1056. BNE DT8 NO 01030000
  1057. * SCAN RETURNS WITH PLIST POINTING TO THE KEYWORD VALUE. 01031000
  1058. BAL R10,CONVERT CHECK LRECL VALUE AND CONVERT IT 01032000
  1059. C R7,MAXREC MORE THAN 32,760 ? @VA13014 01032300
  1060. BH CONV4 YES, THAT'S THE MAXIMUM @VA13014 01032600
  1061. STH R7,FCBLRECL PUT BINARY LRECL VALUE IN NEW ENTRY 01033000
  1062. B DT8 SKIP. 01034000
  1063. DT8 LR R5,R8 RESET TO 1ST KEYWORD ADDRESS 01035000
  1064. * 01036000
  1065. * PROCESS BLOCK SIZE KEYWORD. 01037000
  1066. * 01038000
  1067. MVC KEYWORD(8),BLOCK SCAN FOR BLOCK SIZE 01039000
  1068. BAL R10,SCAN INVOKE SCANNER 01040000
  1069. CLI FLAG2,MATCH BLKSIZ FOUND ? 01041000
  1070. BE BLKYES YES P3100 01042000
  1071. LR R5,R8 RESET TO 1ST KEYWORD V0212 01043000
  1072. MVC KEYWORD(8),BLKSIZE CHEK THE OTHER ONE P3100 01044000
  1073. BAL R10,SCAN P3100 01045000
  1074. CLI FLAG2,MATCH P3100 01046000
  1075. BNE DT8A NO, NEXT OPTION @V201105 01047000
  1076. BLKYES EQU * P3100 01048000
  1077. * SCAN RETURNS WITH PLIST POINTING TO THE KEYWORD VALUE. 01049000
  1078. BAL R10,CONVERT CHECK BLKSIZ VALUE AND CONVERT IT 01050000
  1079. C R7,MAXREC MORE THAN 32,760 ? @VA13014 01050300
  1080. BH CONV4 YES, THAT'S THE MAXIMUM @VA13014 01050600
  1081. STH R7,FCBBLKSZ PUT VINARY BLKSIZ VALUE IN NEW ENTRY 01051000
  1082. DT8A LR R5,R8 RESET R5 @V201105 01052000
  1083. MVC KEYWORD(8),MEMBER LOOK FOR MEMBER OPTION @V201105 01053000
  1084. BAL R10,SCAN @V201105 01054000
  1085. CLI FLAG2,MATCH FOUND @V201105 01055000
  1086. BNE DT10 NO, DO NEXT @V201105 01056000
  1087. CLI 0(R5),X'FF' END OF OPTIONS @V201105 01057000
  1088. BE ERR29E YES @VA03258 01058000
  1089. CLI 0(R5),C')' END OF OPTIONS @V201105 01059000
  1090. BE ERR29E YES @VA03258 01060000
  1091. MVC FCBMEMBR(8),0(R5) PUT MEMBER NAME IN FCB @V201105 01061000
  1092. * 01062000
  1093. * PROCESS MODE KEYWORD FOR TAPE OPTION (TAP). 01063000
  1094. * 01064000
  1095. DT10 LR R5,R8 RESTORE R5 TO 1ST KEYWORD 01065000
  1096. XR R7,R7 CLEAR R7 FOR CODE USE 01066000
  1097. * 'CODE' IN COMMENTS REFERS TO DISPLACEMENT IN 'TRTCH' ASSIGNED TO 01067000
  1098. * KEYWORD OPERANDS. 01068000
  1099. MVC KEYWORD(8),DEN SEARCH FOR DENSITY KEYWORD 01069000
  1100. BAL R10,SCAN USE 'SCAN' ROUTINE FOR KEYWORDS 01070000
  1101. CLI FLAG2,MATCH 'DEN' FOUND ? 01071000
  1102. BNE TRK9SRCH NO. 01072000
  1103. LA R9,DENTAB YES - SEARCH FOR VALID DEN 01073000
  1104. DENSRCH CLC 0(8,R9),0(R5) IS GIVEN DENSITY A VALID ONE ? 01074000
  1105. BE GOODEN YES - CONTINUE 01075000
  1106. CLC 0(8,R9),DENEND NO - IS THIS END OF DEN TABLE ? 01076000
  1107. BE ERR29E SORRY, THAT'S IT 01077000
  1108. LA R9,8(,R9) 01078000
  1109. B DENSRCH OTHERWISE, GET ANOTHER 01079000
  1110. * 01080000
  1111. GOODEN OI TAPSW,DENSITY YES - SET DENSITY SWITCH 01081000
  1112. MVC TDENSITY(4),0(R5) SAVE DENSITY 01082000
  1113. TRK9SRCH LR R5,R8 RESTORE R5 TO 1ST KEYWORD 01083000
  1114. MVC KEYWORD(8),NINTRACK SEARCH FOR 9-TRACK OPTION 01084000
  1115. BAL R10,SCAN 'SCAN' FOR OPTION 01085000
  1116. LR R5,R8 RESET OPTION PTR 01086000
  1117. CLI FLAG2,MATCH '9TRACK' FOUND ? 01087000
  1118. BNE TRK7SRCH NO. 01088000
  1119. OI TAPSW,TRK9 YES - SET 9-TRACK SWITCH 01089000
  1120. * 01090000
  1121. TRK7SRCH MVC KEYWORD(8),SEVTRACK SEARCH FOR 7-TRACK OPTION 01091000
  1122. BAL R10,SCAN GOT O 'SCAN' FOR OPTION 01092000
  1123. LR R5,R8 RESET OPTION PTR 01093000
  1124. CLI FLAG2,MATCH '7TRACK' FOUND ? 01094000
  1125. BNE TRTSRCH NO. 01095000
  1126. OI TAPSW,TRK7 YES - SET 7-TRACK SWITCH 01096000
  1127. * 01097000
  1128. TRTSRCH MVC KEYWORD(8),TRKTCH SEARCH FOR TRTCH KEYWORD 01098000
  1129. BAL R10,SCAN USE 'SCAN' FOR KEYWORD 01099000
  1130. XR R7,R7 CLEAR FOR CODE USE 01100000
  1131. CLI FLAG2,MATCH 'TRTCH' FOUND ? 01101000
  1132. BNE DENCHEK NO. 01102000
  1133. OI TAPSW,TRTFLAG YES - SET TRT SWITCH 01103000
  1134. TM TAPSW,TRK9 DID USER SPEC'FY 9-TRACK ? 01104000
  1135. BO ERR35E IF SO, ERROR 01105000
  1136. * 01106000
  1137. * SEARCH TRTAB TABLE TO GET DISPLACEMENT FOR 'TRTCH' 01107000
  1138. LA R9,TRTAB START OF TABLE 01108000
  1139. AGAIN CLC 0(3,R9),0(R5) CHEK FOR O, OC,OT,E,ET P1017 01109000
  1140. BE VALID FOUND 01110000
  1141. CLC 0(2,R9),TRTEND CHEK END OF TABLE 01111000
  1142. BE ERR29E ERROR IF NOTHING FOUND 01112000
  1143. LA R9,4(,R9) BUMP INDEX AND P1017 01113000
  1144. B AGAIN CHEK AGAIN 01114000
  1145. * 01115000
  1146. VALID IC R7,3(R9) GET CODE FOR 'TRTCH' DISPL P1017 01116000
  1147. TM TAPSW,DENSITY DENSITY GIVEN? 01117000
  1148. BZ EQUAL7 NO. DEFAULT DENSITY. 01118000
  1149. B DENSNUM YES - CONTINUE LATER 01119000
  1150. * 01120000
  1151. DENCHEK TM TAPSW,DENSITY DENSITY GIVEN? (NO TRTCH COND.) 01121000
  1152. BZ CHEKNEW NO - DROP TO CHEK FOR NEW ENTRY 01122000
  1153. DENSNUM CLC TDENSITY(4),SIXTN00 COMP DENSITY TO 1600 BPI 01123000
  1154. BE VAL1600 01124000
  1155. CLC TDENSITY(4),HIDENSTY DENSITY 6250 ? @V200414 01125000
  1156. BE VAL6250 YES..VALIDATE @V200414 01126000
  1157. CLC TDENSITY(4),EIGHT00 COMP DENSITY TO '800' BPI 01127000
  1158. BL CHEKLOW 01128000
  1159. BE CHEKEQL 01129000
  1160. VAL1600 TM TAPSW,TRK7 CHEK FOR '7TRACK' 01130000
  1161. BO ERR35E 01131000
  1162. TM TAPSW,TRTFLAG 'TRTCH' IS EQUALLY BAD 01132000
  1163. BO ERR35E 01133000
  1164. LA R7,16(,R7) SET 9 TRACK, 1600 BPI 01134000
  1165. B DT11 01135000
  1166. * 01136000
  1167. VAL6250 TM TAPSW,TRK7 CHECK FOR 7 TRACK @V200414 01137000
  1168. BO ERR35E INVALID TAPE MODE @V200414 01138000
  1169. TM TAPSW,TRTFLAG CHECK FOR TRTCH @V200414 01139000
  1170. BO ERR35E INVALID TAPE MODE @V200414 01140000
  1171. LA R7,17(,R7) SET 9TRACK 6250 BPI @V200414 01141000
  1172. B DT11 @V200414 01142000
  1173. CHEKEQL TM TAPSW,TRK7 IF =800, CHEK FOR 7TRACK 01143000
  1174. BO EQUAL7 IF 7TRACK, DROP 01144000
  1175. TM TAPSW,TRTFLAG BETTER CHEK 'TRTCH' ALSO (7TRK)... 01145000
  1176. BO EQUAL7 01146000
  1177. XR R7,R7 DEFAULT TO PROVIDE 9TRK,800 BPI (0) 01147000
  1178. B DT11 01148000
  1179. EQUAL7 LA R7,1(,R7) 7TRACK, 800 BPI CODE (1) 01149000
  1180. TM TAPSW,TRTFLAG 'TRTCH' SPEC'D? 01150000
  1181. BO DT11 YES. 01151000
  1182. LA R7,2(,R7) NO, DEFAULT TO 'O' 01152000
  1183. B DT11 01153000
  1184. * 01154000
  1185. CHEKLOW TM TAPSW,TRK9 MAKE SURE IT'S 7 TRACK... 01155000
  1186. BNZ ERR35E 01156000
  1187. TM TAPSW,TRTFLAG 'TRTCH' SPEC'D? 01157000
  1188. BO CHEK200 YES 01158000
  1189. LA R7,2(,R7) NO, DEFAULT TO 'O' 01159000
  1190. CHEK200 EQU * 01160000
  1191. CLC TDENSITY(4),TWO00 CHEK FOR 200 BPI 01161000
  1192. BH FIVE56 IF NOT, DROP 01162000
  1193. LA R7,11(,R7) PROVIDE 7TRK, 200 BPI CODE (11) 01163000
  1194. B DT11 01164000
  1195. FIVE56 LA R7,6(,R7) IF >200, USE 7TRK, 556 BPI CODE (6) 01165000
  1196. B DT11 01166000
  1197. CHEKNEW TM FLAG1,NEW NEW ENTRY? 01167000
  1198. BNO DT14 NO, DON'T SET DEFAULT 01168000
  1199. MVI FCBMODE,X'00' SET MODE TO DEFAULT VALUE. 01169000
  1200. B DT14 GO CKECK ERRRONEOUS PARAMS. 01170000
  1201. * 01171000
  1202. DT11 LTR R7,R7 IS MODE NUMBER 0 TO 17 ? @V200414 01172000
  1203. BM ERR35E NO - ERROR 01173000
  1204. C R7,=F'17' @V200414 01174000
  1205. BH ERR35E NO - ERROR 01175000
  1206. * USE R7 AS DISPLACEMENT IN 'TRTCH' TABLE 01176000
  1207. IC R2,TRTCH(R7) 01177000
  1208. STC R2,FCBMODE 01178000
  1209. * 01179000
  1210. B DT14 GO CHECK ERRONEOUS PARAMS. 01180000
  1211. * 01181000
  1212. * THE FOLLOWING IS (IDENTICAL) DEFAULT PROCESSING FOR DSK AND 01182000
  1213. * TAP OPERANDS. 01183000
  1214. * 01184000
  1215. DT12 MVI FCBMODE,X'00' SET MODE TO DEFAULT VALUE. 01185000
  1216. DT13 MVI FCBXTENT+1,DXTENT DEFAULT 50 01186000
  1217. B EXIT FINISHED. 01187000
  1218. * 01188000
  1219. EJECT 01189000
  1220. * THE CODE CHECKS FOR ERRONEOUS PARAMETERS WHEN USING THE DISK OR TAPE 01190000
  1221. * OPTIONS OF THE FILEDEF COMMAND. 01191000
  1222. * 01192000
  1223. DT14 EQU * 01193000
  1224. LR R5,R8 RESET TO FIRST KEYWORD FOR SEARCH 01194000
  1225. OI FLAG3,LASTCHK FINAL CHEK FOR BAD OPTIONS 01195000
  1226. DT15 EQU * 01196000
  1227. BAL R2,SCANTS INVOKE OPTION SCANNER 01197000
  1228. CLI 2(R5),ROPTCD IS THIS 9TRACK,7TRACK OR PERMANENT? 01198000
  1229. BE BUMP8A 01199000
  1230. CLC 0(3,R5),NOCHANGE IS THIS NOCHANGE? 01200000
  1231. BE BUMP8A 01201000
  1232. CLC 0(2,R5),CHANGE CHANGE? 01202000
  1233. BE BUMP8A 01203000
  1234. CLC 0(2,R5),CONCAT CONCAT OPTION? @V201105 01204000
  1235. BE BUMP8A YES, CONTINUE @V201105 01205000
  1236. CLC 0(2,R5),LOWRCASE LOWCASE? 01206000
  1237. BE CHKTERM 01207000
  1238. CLC 0(2,R5),UPCASE UPCASE? 01208000
  1239. BNE BUMP16A IF NONE OF THESE, IT'S KEYWORD 01209000
  1240. CHKTERM TM VALFLAG,TERMDEV TERMINAL DEVICE? 01210000
  1241. BNO ERR3E IF NOT, ERROR 01211000
  1242. BUMP8A LA R5,8(,R5) BUMP PTR '8' FOR NON-KEYWORD OPTIONS 01212000
  1243. B ENDCHEKA 01213000
  1244. BUMP16A LA R5,16(,R5) UPDATE THE POINTER 01214000
  1245. ENDCHEKA C R6,0(,R5) ? IS THIS END OF SCAN ? 01215000
  1246. BNE DT15 NO, INVOKE THE SCANNER AGAIN @VA07074 01216100
  1247. B EXIT YES,PLIST O.K. 01217000
  1248. * 01218000
  1249. SPACE 2 01219000
  1250. * THE SCAN ROUTINE CHECKS THE PARAMETER WHICH IS POINTED TO BY PLIST 01220000
  1251. * TO SEE IF IT IS A LEGAL PARAMETER. IF IT IS NOT LEGAL AN ERROR 01221000
  1252. * MESSAGE IS TYPED AT THE USER'S CONSOLE. 01222000
  1253. * 01223000
  1254. SCANTS EQU * 01224000
  1255. LA R7,TABSTART START ADDR OF KEYWORD/OPTION TABLE 01225000
  1256. LR R3,R8 01226000
  1257. LA R8,12 LENGTH OF EACH TAB ENTRY 01227000
  1258. LA R9,TABEND END OF TABLE 01228000
  1259. * 01229000
  1260. KEYCOMP CLC 0(8,R7),0(R5) CHEK VALID OPTION 01230000
  1261. BNE BXLE TRY AGAIN... 01231000
  1262. TM FLAG3,LASTCHK IS THIS FINAL CHEK? 01232000
  1263. BO FINAL YES, SKIP 01233000
  1264. MVC TESTBYTE(1),8(R7) GET FLAG BYTE 01234000
  1265. NC TESTBYTE(1),VALFLAG 'AND' IT FOR VALID DEVICE 01235000
  1266. CLC TESTBYTE(1),VALFLAG DEVICE/OPTION COMPATABLE? 01236000
  1267. BNE ERR3E 01237000
  1268. FINAL LR R8,R3 01238000
  1269. BR R2 01239000
  1270. BXLE BXLE R7,R8,KEYCOMP 01240000
  1271. BNE ERR3E INVALID OPTION 01241000
  1272. EJECT 01242000
  1273. *********************************************************************** 01243000
  1274. * 01244000
  1275. * PROCESS THE TAP OPERAND 01245000
  1276. * 01246000
  1277. *********************************************************************** 01247000
  1278. * 01248000
  1279. T1 CLC TAP(3),8(R5) ? 1ST 3 CHARACTERS 'TAP' 01249000
  1280. BNE CLR NO, GO CHECK FOR CLEAR. 01250000
  1281. TM FLAG1,NEW NEW FILEDEF ENTRY? @VA06191 01251000
  1282. BO T1B YES @VA09051 01252000
  1283. CLI FCBDEV,FCBTAP WAS OLD FILEDEF TAPE? @VA06191 01253000
  1284. BE T1A BRANCH IF YES @VA06191 01254000
  1285. XC FCBDSNAM(FCBSIZ),FCBDSNAM CLEAR OUT BLOCK @VA06191 01255000
  1286. MVC FCBTAPID(8),TAP2 DEFAULT TAPE = TAP2 @VA09051 01255200
  1287. T1A EQU * @VA06191 01255500
  1288. CLI 11(R5),BLANK SPECIFIC TAPE ID @VA09051 01255800
  1289. BNE T1B YES @VA09051 01256100
  1290. MVC 8(4,R5),FCBTAPID NO, USE OLD TAPE ID @VA09051 01256400
  1291. T1B EQU * @VA09051 01256700
  1292. MVI FCBDEV,FCBTAP SET DEVICE CODE. 01257000
  1293. CLI 11(R5),BLANK ? NO SPECIFIC TAPE ID ? 01258000
  1294. BNE T2 FALSE, GO CHECK ITS VALIDITY. 01259000
  1295. MVI 11(R5),C'2' MAKE DEFAULT TAPE = 'TAP2' 01262000
  1296. B T3 SKIP TO FINISH. 01263000
  1297. T2 CLI 12(R5),BLANK ? ONLY 1 DIGIT ON TAPID ? 01264000
  1298. BNE ERR27A NO, TOO MANY. ERROR EXIT. 01265000
  1299. CLI 11(R5),C'A' ? IS IT < 'A' ? HRC002DS 01266090
  1300. BL ERR27A YES, ERROR EXIT. HRC002DS 01266180
  1301. CLI 11(R5),C'F' ? IS IT > 'F' ? HRC002DS 01266270
  1302. BNH T3 NO, CONTINUE HRC002DS 01266360
  1303. CLI 11(R5),C'0' ? IS IT A NUMERIC < 0 ? HRC002DS 01266450
  1304. BL ERR27A NO, ERROR EXIT. 01267000
  1305. CLI 11(R5),C'9' ? IS A DIGIT > 9 ? HRC002DS 01268490
  1306. BH ERR27A YES, ERROR EXIT. 01269000
  1307. T3 MVC FCBTAPID(8),8(R5) PUT TAPID INOT FCB 01270000
  1308. C R6,16(,R5) ? REST DEFAULTED ? 01271000
  1309. BE DT12 YES, PROCESS AS SUCH ABOVE. 01272000
  1310. OI VALFLAG,TAPDEV INDICATE TAPE FOR OPTN SCAN 01273000
  1311. LA R5,16(,R5) UPDATE PLIST TO KEYWORDS 01274000
  1312. TM OPTNFLAG,NOOPTNS CHEK '(' FOR OPTIONS 01277000
  1313. BO ERR70E SORRY, NO OPTIONS ALLOWED P1017 01278000
  1314. LR R9,R5 POINT TO OPTIONS @VA09115 01279100
  1315. B D2 CHECK DELIMITER ON OPTIONS @VA09115 01279200
  1316. EJECT 01281000
  1317. * 01282000
  1318. *********************************************************************** 01283000
  1319. * 01284000
  1320. * PROCESS THE CLEAR OPERAND 01285000
  1321. * 01286000
  1322. *********************************************************************** 01287000
  1323. * 01288000
  1324. * PLIST POINTS TO THE 1ST PARAMETER. 01289000
  1325. * 01290000
  1326. CLR CLC CLEAR(8),8(R5) ? 2ND PARAMETER CLEAR ? 01291000
  1327. BNE DEV1 NO, CHECK FOR OTHERS. 01292000
  1328. TM FLAG1,OLD EXITING ENTRY? 01293000
  1329. BZ ERR704I NO, ILLEGAL CLEAR REQUEST 01294000
  1330. * THERE CAN ONLY BE TWO OPERANDS FOR THIS REQUEST. 01295000
  1331. * 01296000
  1332. CLRA EQU * @VA01157 01297000
  1333. C R6,16(,R5) ONLY 2 PARAMETERS @V201105 01298000
  1334. BE CLRLOOP YES CONTINUE @V201105 01299000
  1335. LA R5,16(,R5) UPDATE PLIST IN CASE OF ERR @V201105 01300000
  1336. B ERR3E PRINT ERROR MSG. @V201105 01301000
  1337. CLRLOOP LA R4,0(,R4) CLEAR HIGH ORDER BYTE @V201105 01302000
  1338. LTR R2,R4 END OF CHAIN @V201105 01303000
  1339. BZ RETURN YES, RETURN @V201105 01304000
  1340. CLC FCBDD(8),0(R5) IS THIS RIGHT DDNAM @V201105 01305000
  1341. BE CLR2 YES, CONTINUE @V201105 01306000
  1342. ST R4,PREVENT SAVE FCB ADDRESS @V201105 01307000
  1343. L R4,0(,R4) GET NEXT FCB POINTER @V201105 01308000
  1344. B CLRLOOP CHECK NEXT FCB @V201105 01309000
  1345. CLR2 BAL R10,CLRDSN FREE DSN BLOCK @V201105 01310000
  1346. LA R10,FCBENSIZ GET DOUBLE WORD SIZE FOR RELEASE @V201105 01311000
  1347. ST R10,PLFREE+8 PUT IT IN SVCFRET PLIST @V201105 01312000
  1348. ST R4,PLFREE+12 PUT ADDRESS OF ENTRY IN PLIST 01313000
  1349. LR R2,R4 SETUP REG4 FOR MOVE @V201122 01314000
  1350. L R4,PREVENT GET ADDRESS OF PREVIOUS ENTRY 01315000
  1351. LR R10,R4 SET UP UPDATING REGISTER 01316000
  1352. LTR R4,R4 ? FIRST OR ONLY ENTRY? 01317000
  1353. BNZ CLR1 NO, UPDATE NORMALLY 01318000
  1354. LA R10,FCBFIRST YES, USE 1ST ADDRRESS FOR UPDATE 01319000
  1355. CLR1 MVC 1(3,R10),1(R2) UPDATE TO SKIP CLEARED ENTRY 01320000
  1356. LH R2,FCBNUM GET COUNT OF ENTRIES 01321000
  1357. BCTR R2,R0 SUBTRACT 1 01322000
  1358. STH R2,FCBNUM PUT COUNT BACK IN FCB TABLE 01323000
  1359. L R4,PLFREE+12 GET FCB ADDRESS @V201105 01324000
  1360. L R4,0(,R4) GET NEXT FCB PTR @V201105 01325000
  1361. BAL R10,FRET FREE FCB BLOCK @V201105 01326000
  1362. B CLRLOOP CLEAR ALL FCB'S WITH DDNAME @V201105 01327000
  1363. * 01328000
  1364. EJECT 01329000
  1365. *********************************************************************** 01330000
  1366. * 01331000
  1367. * PROCESS ALL OTHER OPERANDS 01332000
  1368. * 01333000
  1369. * 01334000
  1370. * THIS INCLUDES: TERM, RDR, PTR, PUN, AND CRT. 01335000
  1371. * IF NONE OF THESE ARE FOUND FOR PARAMETER 2, 01336000
  1372. * IT IS AN ERROR EXIT. 01337000
  1373. *********************************************************************** 01338000
  1374. * 01339000
  1375. * PLIST IS UPDATED TO POINT TO THE 2ND OPERAND. 01340000
  1376. * 01341000
  1377. DEV1 LA R5,8(,R5) UPDATE PLIST TO PARAM 2 01342000
  1378. * DEVICE TYPE = CONSOLE 01343000
  1379. LA R14,TERM PROVIDE NAME AND P3100 01344000
  1380. LA R2,1 MINIMUM ABBREV. TO SUBRTN P3100 01345000
  1381. BAL R10,DEVABBR CHEK FOR 'TERM' DEVICE P3100 01346000
  1382. BNE DEV3 NO, GO ON. 01347000
  1383. TM FLAG1,NEW NEW FILEDEF ENTRY? @VA06191 01348000
  1384. BO SETCON BRANCH IF YES @VA06191 01349000
  1385. CLI FCBDEV,FCBCON WAS OLD FILETYPE CONSOLE? @VA06191 01350000
  1386. BE SETCON BRANCH IF YES @VA06191 01351000
  1387. XC FCBDSNAM(FCBSIZ),FCBDSNAM CLEAR OUT BLOCK @VA06191 01352000
  1388. SETCON MVI JFCBUFNO,X'01' SET CONSOLE BUFFERING TO 1 01353000
  1389. OI VALFLAG,TERMDEV 01354000
  1390. MVI FCBDEV,FCBCON SET DEVICE CODE AND 01355000
  1391. TM FLAG1,NEW ? NEW ENTRY ? 01356000
  1392. BNO DEV1B NO 01357000
  1393. NI FCBIOSW,255-FCBCASE DEFAULT TO 'UPCASE' 01358000
  1394. DEV1B C R6,8(,R5) ANY OPTIONS? 01359000
  1395. BE COMMONT NO, DROP 01360000
  1396. CLI 8(R5),C'(' OPTIONS MUST HAVE PARENS. 01361000
  1397. BE DEV2A O.K. 01362000
  1398. LA R9,8(,R5) SKIP TO OPTIONS @VA09115 01363000
  1399. CR R9,R8 SVC CAL @VA09115 01363500
  1400. BNE D2AB NO , INVALID PARAMETER @VA09115 01364000
  1401. DEV2A LR R14,R5 SAVE POINTR P1017 01365000
  1402. MVC KEYWORD(8),LOWRCASE SEARCH FOR 'LOWCASE' 01366000
  1403. BAL R10,SCAN SCAN... 01367000
  1404. CLI FLAG2,MATCH WAS IT FOUND 01368000
  1405. BNE DEV2B NO 01369000
  1406. OI FCBIOSW,FCBCASE SET CODE TO LOWER CASE 01370000
  1407. DEV2B LR R5,R14 P1017 01371000
  1408. MVC KEYWORD(8),UPCASE SEARCH FOR 'UPCASE' 01372000
  1409. BAL R10,SCAN SCAN... 01373000
  1410. LR R5,R14 P1017 01374000
  1411. CLI FLAG2,MATCH FOUND ? @VA09624 01374200
  1412. BNE COMMONT @VA09624 01374400
  1413. NI FCBIOSW,255-FCBCASE DEFAULT UPCASE @VA09624 01374600
  1414. B COMMONT 01375000
  1415. * DEVICE TYPE = CARD READER 01376000
  1416. DEV3 EQU * P3100 01377000
  1417. LA R14,RDR PROVIDE DEVICE NAME P3100 01378000
  1418. LA R2,1 AND MIN. ABBREV FOR SUBRTN P3100 01379000
  1419. BAL R10,DEVABBR CHEK FOR 'READER' P3100 01380000
  1420. BNE DEV4 NO, GO ON. 01381000
  1421. TM BATFLAGS,BATRUN IS BATCH RUNNING? V0742 01382000
  1422. BZ NOTBAT V0742 01383000
  1423. OI BATFLAG2,BATDCMS TELL BATCH WHO'S CALLING V0742 01384000
  1424. L R14,GR14SA SO BATCH GOES BACK TO CMS V0742 01386000
  1425. L R15,ABATABND ENTER BATCH AT 'ABEND' POINT V0742 01387000
  1426. BR R15 AND DON'T COME BACK.... V0742 01388000
  1427. NOTBAT EQU * V0742 01389000
  1428. TM FLAG1,NEW NEW FILEDEF ENTRY? @VA06191 01390000
  1429. BO DEV3A BRANCH IF YES @VA06191 01391000
  1430. CLI FCBDEV,FCBRDR WAS OLD FILETYPE READER? @VA06191 01392000
  1431. BE COMMON BRANCH IF YES @VA06191 01393000
  1432. XC FCBDSNAM(FCBSIZ),FCBDSNAM CLEAR OUT BLOCK @VA06191 01394000
  1433. DEV3A EQU * @VA06191 01395000
  1434. MVI FCBDEV,FCBRDR SET DEVICE CODE. 01396000
  1435. B COMMON 01397000
  1436. * DEVICE TYPE = PRINTER 01398000
  1437. DEV4 EQU * P3100 01399000
  1438. LA R14,PRT PROVIDE DEVICE NAME AND P3100 01400000
  1439. LA R2,2 MIN. ABBREV FOR SUBRTN P3100 01401000
  1440. BAL R10,DEVABBR CHEK FOR 'PRINTER' P3100 01402000
  1441. BNE DEV5 NO. 01403000
  1442. TM FLAG1,NEW NEW FILEDEF ENTRY? @VA06191 01404000
  1443. BO DEV4A BRANCH IF YES @VA06191 01405000
  1444. CLI FCBDEV,FCBPTR WAS OLD FILETYPE PRINTER? @VA06191 01406000
  1445. BE COMMON BRANCH IF YES @VA06191 01407000
  1446. XC FCBDSNAM(FCBSIZ),FCBDSNAM CLEAR OUT BLOCK @VA06191 01408000
  1447. DEV4A EQU * 01409000
  1448. MVI FCBDEV,FCBPTR SET CODE. 01410000
  1449. B COMMON 01411000
  1450. * DEVICE TYPE = CARD PUNCH 01412000
  1451. DEV5 EQU * P3100 01413000
  1452. LA R14,PUN PROVIDE DEVICE NAME AND P3100 01414000
  1453. LA R2,2 MIN. ABBREV FOR SUBRTN P3100 01415000
  1454. BAL R10,DEVABBR CHEK FOR 'PUNCH' P3100 01416000
  1455. BNE DSNDEV @V201105 01417000
  1456. TM FLAG1,NEW NEW FILEDEF ENTRY? @VA06191 01418000
  1457. BO DEV5A BRANCH IF YES @VA06191 01419000
  1458. CLI FCBDEV,FCBPCH WAS OLD FILETYPE PUNCH? @VA06191 01420000
  1459. BE COMMON BRANCH IF YES @VA06191 01421000
  1460. XC FCBDSNAM(FCBSIZ),FCBDSNAM CLEAR OUT BLOCK @VA06191 01422000
  1461. DEV5A EQU * 01423000
  1462. MVI FCBDEV,FCBPCH SET CODE. 01424000
  1463. B COMMON @V201105 01425000
  1464. DSNDEV LR R9,R5 R9 POINTS TO DEV @V201105 01426000
  1465. SH R5,=H'8' BACK R5 TO DDNAME @V201105 01427000
  1466. CLC 0(8,R9),=CL8'DSN' DSN PARAM @V201105 01428000
  1467. BE OSDSK YES, SET DISK DEVICE TYPE @V201105 01429000
  1468. CLC 8(8,R9),=CL8'DSN' IS NEXT PARAM DSN @V201105 01430000
  1469. BNE ERR27A NO, INVALID DEVICE TYPE @V201105 01431000
  1470. LA R9,8(0,R9) POINT TO IT @V201105 01432000
  1471. MVC A1(2),8(R5) SET REQUESTER'S MODE FOR ABOVE @V201105 01433000
  1472. MVC FCBDSMD(2),A1 USE HIS MODE @VA05882 01434000
  1473. OSDSK EQU * @VA06191 01435000
  1474. TM FLAG1,NEW NEW FILEDEF ENTRY? @VA06191 01436000
  1475. BO OSDSK1 BRANCH IF YES @VA06191 01437000
  1476. CLI FCBDEV,FCBDSK WAS OLD FILETYPE DISK? @VA06191 01438000
  1477. BE DEFAULT BRANCH IF YES @VA06191 01439000
  1478. XC FCBDSNAM(FCBSIZ),FCBDSNAM CLEAR OUT BLOCK @VA06191 01440000
  1479. OSDSK1 EQU * @VA06191 01441000
  1480. MVI FCBDEV,FCBDSK SET DISK DEVICE TYPE @VA06191 01442000
  1481. B DEFFNFT SET DEFAULT FN FT @VA11265 01443000
  1482. COMMON OI VALFLAG,URECDEV INDICATE UNITREC FOR OPTION SCAN 01444000
  1483. COMMONT LA R5,8(,R5) UPDATE PTR TO 1ST KEYWORD 01445000
  1484. C R6,0(,R5) ? IS IT THE END OR A KEY ? 01446000
  1485. BE EXIT IT IS THE END, BROTHER 01447000
  1486. TM OPTNFLAG,NOOPTNS CHEK '(' FOR OPTIONS 01450000
  1487. BO ERR70E SORRY, NO OPTIONS ALLOWED P1017 01451000
  1488. LR R9,R5 POINT TO OPTIONS @VA09115 01452100
  1489. B D2 CHECK DELIMITER ON OPTIONS @VA09115 01452200
  1490. * 01454000
  1491. DEVABBR EQU * CHEK DEVICE NAME AND POSS ABBREP3100 01455000
  1492. LR R9,R5 PRESERVE COMMAND LINE PTR P3100 01456000
  1493. BCTR R2,0 DECREMENT FOR 'EXECUTE' P3100 01457000
  1494. AR R9,R2 USE R9 TO SCAN FOR 1ST BLANK P3100 01458000
  1495. MATCHR EX R2,COMPABR LOOK FOR MATCH P3100 01459000
  1496. BCR 7,R10 IF NO MATCH, RETURN: CC > 0 P3100 01460000
  1497. CLI 1(R9),C' ' MATCH: NEXT CHAR BLANK? P3100 01461000
  1498. BCR 8,R10 YES, RETURN: CC = 0 P3100 01462000
  1499. CH R2,=H'7' LAST CHAR? P3100 01463000
  1500. BCR 8,R10 YES,RETURN: CC = 0 P3100 01464000
  1501. LA R2,1(,R2) IF NOT, BUMP CHAR COUNT AND P3100 01465000
  1502. LA R9,1(,R9) BLANK PTR AND P3100 01466000
  1503. B MATCHR CONTINUE SCANNING P3100 01467000
  1504. COMPABR CLC 0(*-*,R14),0(R5) MATCH DEVICE PASSED VS. ENTRY P3100 01468000
  1505. EJECT 01469000
  1506. * 01470000
  1507. *********************************************************************** 01471000
  1508. * 01472000
  1509. * KEYWORD SCAN SUB-ROUTINE 01473000
  1510. * 01474000
  1511. * THIS SUB-ROUTINE ATTEMPTS TO FIND THE KEYWORD (GIVEN 01475000
  1512. * TO IT AS A PARAMETER) IN THE COMMAND INPUT PLIST. 01476000
  1513. * 01477000
  1514. *********************************************************************** 01478000
  1515. * 01479000
  1516. * 'SCAN' SEARCHES THE PLIST FOR THE OPTION PASSED TO IT 01480000
  1517. * IN 'KEYWORD'. IF FOUND, A FLAG IS SET AND THE SCAN CONTINUES 01481000
  1518. * TO CHECK FOR A DUPLICATE OPTION. IF NO DUPLICATION, 01482000
  1519. * 'SCANTS' IS CALLED TO POSITION R7 AT THE OPTION TABLE ENTRY 01483000
  1520. * FOR THIS OPTION. IF THERE IS A POSSIBLE CONFLICTING OPTION 01484000
  1521. * FOR THE 'FOUND' OPTION, THE TABLE ENTRY FOR THE CONFLICTING 01485000
  1522. * OPTION IS CHECKED FOR THE 'FOUND' FLAG. IF THE FLAG IS ON 01486000
  1523. * THERE IS A CONFLICT AND AN ERROR EXIT IS TAKEN. 01487000
  1524. * 01488000
  1525. SCAN EQU * 01489000
  1526. SCANNING CLC KEYWORD(8),0(R5) MATCH? 01490000
  1527. BNE SCANNOT NO... 01491000
  1528. S R5,=F'8' DECREMENT POINTER @VA02376 01492000
  1529. CLC 0(8,R5),MEMBER IS IT 'MEMBER' OPTION? @VA02376 01493000
  1530. BNE SCANREST NO, CONTINUE PROCESSING @VA02376 01494000
  1531. LA R5,16(,R5) SKIP TO NEXT OPTION @VA02376 01495000
  1532. B SCANNING CONTINUE SCANNING @VA02376 01496000
  1533. SCANREST LA R5,8(,R5) RESTORE POINTER @VA02376 01497000
  1534. TM VALFLAG,FOUND IS THIS A REPEAT? 01498000
  1535. BO ERR65E YES, ERROR 01499000
  1536. LR R2,R5 KEEP OPTION POINTR 01500000
  1537. OI VALFLAG,FOUND FIRST HIT. 01501000
  1538. SCANBUMP LA R5,8(,R5) 01502000
  1539. B SCANNING KEEP ON MOVING... 01503000
  1540. * 01504000
  1541. SCANNOT C R6,0(,R5) END OF PLIST? 01505000
  1542. BNE SCANBUMP NO, CONTINUE 01506000
  1543. TM VALFLAG,FOUND WAS OPTION FOUND? 01507000
  1544. BO SCANHIT YES, GO PROCESS 01508000
  1545. MVI FLAG2,NOMATCH NO, TELL CALLER 01509000
  1546. BR R10 01510000
  1547. SCANHIT MVI FLAG2,MATCH TELL CALLER IT'S A HIT 01511000
  1548. NI VALFLAG,255-FOUND TURN OFF 'FOUND' CONDITION 01512000
  1549. LR R5,R2 POINT TO OPTION IN COMMAND LINE 01513000
  1550. BAL R2,SCANTS GO POINT TO TABLE ENTRY 01514000
  1551. LA R5,8(,R5) POINT TO KEYWRD OPERAND FOR CALLER 01515000
  1552. * R7 -> TABLE ENTRY FOR OPTION 01516000
  1553. L R2,8(R7) LOAD CONFLICTING OPTION ADDR. 01517000
  1554. LA R2,0(,R2) CLEAR THE FLAG BYTE 01518000
  1555. LTR R2,R2 ANY POSSIBLE CONFLICTS? 01519000
  1556. BZ SCANRET IF NOT, RETURN 01520000
  1557. TM 8(R2),FOUND IF SO, CHEK IF CONFLICT OPTION FOUND 01521000
  1558. BO ERR66E CONFLICTING OPTIONS 01522000
  1559. SCANRET OI 8(R7),FOUND SET 'FOUND' OPTN'S CONFLICT FLAG 01523000
  1560. BR R10 RETURN 01524000
  1561. EJECT 01525000
  1562. * 01526000
  1563. *********************************************************************** 01527000
  1564. * 01528000
  1565. * CONVERSION 01529000
  1566. * NUMERIC TO BINARY SUB-ROUTINE 01530000
  1567. * 01531000
  1568. * THIS SUB-ROUTINE IS USED IN DSK AND TAP OPERAND 01532000
  1569. * PROCESSING FOR CONVERTING LRECL AND BLKSIZ EBCDIC 01533000
  1570. * INPUT VALUES TO BINARY REPRESENTATION. 01534000
  1571. * 01535000
  1572. * 1. IT IS ASSUMED THAT PLIST POINTS TO THE VALUE. 01536000
  1573. * 2. THE VALUE WILL 1ST BE CHECKED TO MAKE SURE SIZE IS NOT 01537000
  1574. * EXCEEDED BY CHARACTER COUNT. 01538000
  1575. * 3. A COUNT OF THE CHARACTERS ENTERED IS DETERMINED. 01539000
  1576. * 4. THEY ARE CHECKED TO MAKE SURE THEY ARE NUMERICS. 01540000
  1577. * 5. THE CHARACTERS ARE THEN PACKED AND CONVERTED TO BINARY. 01541000
  1578. * 6. GR'S 7 & 11 ARE THE ONLY ONES EFFECTIVELY CHANGED. 01542000
  1579. * 7. THE BINARY VALUE IS CHECKED TO MAKE SURE IT DOESN'T 01543000
  1580. * EXCEED THE MAXIMUM. 01544000
  1581. * 8. ERROR EXIT IS ERROR NUMBER 5. 01545000
  1582. * 9. THE BINARY VALUE IS RETURNED IN GR 7. 01546000
  1583. * 01547000
  1584. *********************************************************************** 01548000
  1585. * 01549000
  1586. CONVERT EQU * 01550000
  1587. LA R7,CHARMAX+1 SET R7 WITH MAX CHAR COUNT + 1 01551000
  1588. LA R9,CHARMAX SET R9 TO MAX CHAR COUNT 01552000
  1589. LR R1,R5 SAVE PARAM POINTER 01553000
  1590. * 01554000
  1591. * SEARCH FOR THE FIRST BLANK IN THE STRING TO GET THE COUNT. 01555000
  1592. * 01556000
  1593. CONV1 CLI 1(R5),BLANK ? FIND 1ST BLANK ? 01557000
  1594. BE CONV2 YES, CONTINUE PROCESSING 01558000
  1595. LA R5,1(,R5) UPDATE TO NEXT CHARACTER 01559000
  1596. BCT R9,CONV1 DO THIS MAX-1 TIMES, I.E., 01560000
  1597. * THE 1ST CHAR COULD NOT HAVE BEEN BLANK. 01561000
  1598. B CONV4 TOO MANY CHARACTERS, ERROR EXIT. 01562000
  1599. * 01563000
  1600. * NOW CHECK TO MAKE SURE ALL CHARACTERS ENTERED ARE NUMERICS. 01564000
  1601. * PLIST NOW POINTS TO THE LAST CHARACTER (DIGIT). 01565000
  1602. * 01566000
  1603. CONV2 SR R7,R9 GET COUNT OF CHAR IN R7 01567000
  1604. LR R2,R7 IN R2 ALSO 01568000
  1605. CONV3 CLI 0(R5),C'0' ? IS IT NUMERIC ? 01569000
  1606. BL CONV4 NO, ERROR EXIT 01570000
  1607. CLI 0(R5),C'9' 01571000
  1608. BH CONV4 DITTO 01572000
  1609. BCTR R5,R0 BACK UP TO PREVIOUS CHAR 01573000
  1610. BCT R2,CONV3 DO THIS FOR EACH CHARACTER 01574000
  1611. * 01575000
  1612. * NOW PUT IN THE DECIMAL SIGN AND PACK THE NUMERICS. 01576000
  1613. * PLIST NOW POINTS TO THE CHARACTER BEFORE THE FIRST ONE. 01577000
  1614. * 01578000
  1615. AR R5,R7 POINT PLIST TO LAST CHARACTER 01579000
  1616. NI 0(R5),X'CF' PUT IN DECIMAL + SIGN 01580000
  1617. BCTR R7,R0 DECREMENT CHARACTER COUNT TO: 01581000
  1618. SR R5,R7 1. POINT PLIST TO 1ST CHARACTER, AND 01582000
  1619. * 2. REDUCE PACK COUNT FOR EXECUTE 01583000
  1620. STC R7,CONV5+3 SAVE R7 FOR RESTORING PARAMETER 01584000
  1621. EX R7,EXPACK PACK THE NUMERICS IN THE PLIST 01585000
  1622. CVB R7,PACK CONVERT THIS TO BINARY 01586000
  1623. CONV5 OI 0(R5),X'F0' POSSIBLE ERROR MESSAGE 01587000
  1624. C R7,NUMAX COMPARE IT TO THE MAX ALLOWED 01588000
  1625. BH CONV4 TOO BIG FOR HALFWORD 01589000
  1626. BR R10 RETURN TO INVOKER 01590000
  1627. CONV4 LR R5,R1 RESTORE PARM POINTR 01591000
  1628. B ERR29E ERROR EXIT. 01592000
  1629. * 01593000
  1630. EJECT 01594000
  1631. *********************************************************************** 01595000
  1632. * 01596000
  1633. * ERROR MESSAGES 01597000
  1634. * 01598000
  1635. *********************************************************************** 01599000
  1636. * 01600000
  1637. ERR3E TM MSGSWT,PRINT SUPPRESS MSGS? 01601000
  1638. BZ RET3 YES 01602000
  1639. DMSERR NUM=3,LET=E,SUB=(CHARA,(R5)),TEXT='Invalid option ''...*01603000
  1640. .....''' HRC309DS 01604000
  1641. RET3 LA R15,24 RETURN CODE = 24 01605000
  1642. B EXIT 01606000
  1643. SPACE 2 01607000
  1644. ERR65E TM MSGSWT,PRINT SUPPRESS MSGS? 01608000
  1645. BZ RET65 YES 01609000
  1646. DMSERR NUM=65,LET=E,SUB=(CHARA,(R5)),TEXT='''........'' option*01610000
  1647. specified twice' HRC309DS 01611000
  1648. RET65 LA R15,24 RETURN CODE = 24 01612000
  1649. B EXIT 01613000
  1650. SPACE 2 01614000
  1651. ERR66E TM MSGSWT,PRINT SUPPRESS MSGS? 01615000
  1652. BZ RET66 YES 01616000
  1653. DMSERR NUM=66,LET=E,SUB=(CHARA,(R2),CHARA,(R7)),TEXT='''......*01617000
  1654. ..'' and ''........'' are conflicting options',RENT=NO 01618000
  1655. RET66 LA R15,24 return code = 24 HRC309DS 01619000
  1656. B EXIT 01620000
  1657. SPACE 2 01621000
  1658. SPACE 2 01622000
  1659. ERR23E TM MSGSWT,PRINT SUPPRESS MSGS? 01623000
  1660. BZ RET23 YES 01624000
  1661. DMSERR NUM=23,LET=E,TEXT='No filetype specified' HRC309DS 01625000
  1662. RET23 LA R15,24 RETURN CODE = 24 01626000
  1663. B EXIT 01627000
  1664. SPACE 2 01628000
  1665. ERR27A LA R5,8(,R5) POINT TO DEVICE 01629000
  1666. ERR27E TM MSGSWT,PRINT SUPPRESS MSGS? 01630000
  1667. BZ RET27 YES 01631000
  1668. DMSERR NUM=27,LET=E,SUB=(CHARA,(R5)),TEXT='Invalid device ''..*01632000
  1669. ......''' HRC309DS 01633000
  1670. RET27 LA R15,24 RETURN CODE = 24 01634000
  1671. B EXIT 01635000
  1672. SPACE 2 01636000
  1673. ERR29E TM MSGSWT,PRINT SUPPRESS MSGS? 01637000
  1674. BZ RET29 YES 01638000
  1675. LA R3,8 THIS ROUTINE SUBS 8 FROM 01639000
  1676. LR R2,R5 THE PARAMETER TO GET THE OPTION @VA05995 01640000
  1677. SR R2,R3 FOR ERROR MESSAGE. @VA05995 01641000
  1678. DMSERR NUM=29,LET=E,SUB=(CHARA,(R5),CHARA,(R2)),TEXT='Invalid *01642000
  1679. parameter ''........'' in the option ''........'' filed'*01643000
  1680. ,RENT=NO HRC309DS 01644000
  1681. RET29 LA R15,24 RETURN CODE = 24 01645000
  1682. B EXIT 01646000
  1683. SPACE 2 01647000
  1684. ERR35E TM MSGSWT,PRINT SUPPRESS MSGS? 01648000
  1685. BZ RET35 YES 01649000
  1686. DMSERR NUM=35,LET=E,TEXT='Invalid tape mode' HRC309DS 01650000
  1687. RET35 LA R15,24 RETURN CODE = 24 01651000
  1688. B EXIT 01652000
  1689. SPACE 2 01653000
  1690. ERR50E TM MSGSWT,PRINT SUPPRESS MSGS? 01654000
  1691. BZ RET50 YES 01655000
  1692. DMSERR NUM=50,LET=E,TEXT='Parameter missing after DDname' 01656000
  1693. RET50 LA R15,24 return code = 24 HRC309DS 01657000
  1694. B EXIT 01658000
  1695. SPACE 2 01659000
  1696. ERR70E EQU * P1017 01660000
  1697. DMSERR NUM=70,LET=E,SUB=(CHARA,(R5)),TEXT='Invalid parameter '*01661000
  1698. '........''' HRC309DS 01662000
  1699. LA R15,24 RETURN CODE = 24 P1017 01663000
  1700. B EXIT P1017 01664000
  1701. SPACE 2 P1017 01665000
  1702. ERR704I TM MSGSWT,PRINT SUPPRESS MSGS? 01666000
  1703. BZ RET704 YES 01667000
  1704. DMSERR NUM=704,LET=I,TEXT='Invalid CLEAR request' HRC309DS 01668000
  1705. RET704 B RETURN @VA01157 01669000
  1706. ERR221E DMSERR TEXT='Invalid dataset name',NUM=221,LET=E HRC309DS 01670000
  1707. LA R15,24 @V201105 01671000
  1708. B EXIT RETURN @V201105 01672000
  1709. ERR224E DMSERR NUM=224,LET=E, X01673000
  1710. TEXT='Fileid already in use' HRC309DS 01674000
  1711. LA R15,24 SET ERROR CODE @V201105 01675000
  1712. OI FLAG4,NEW SET NEW FLAG ON @VA02692 01676000
  1713. NI FLAG4,255-OLD TURN OLD FLAG OFF @VA02692 01677000
  1714. B EXIT RETURN @V201105 01678000
  1715. EJECT 01679000
  1716. * 01680000
  1717. *********************************************************************** 01681000
  1718. * 01682000
  1719. * EXIT PROCESSING 01683000
  1720. * 01684000
  1721. *********************************************************************** 01685000
  1722. * 01686000
  1723. EXIT EQU * 01687000
  1724. TM FLAG1,NEW NEW ENTRY? 01688000
  1725. BO EXIT1 YES, GO PROCESS BELOW 01689000
  1726. LTR R15,R15 ? ANY ERRORS ? 01690000
  1727. BZ CHKOSDSN NO, CHECK FOR OLD DSN BLOCK @V201105 01691000
  1728. TM FLAG1,OLD OLD ENTRY ? @VA04413 01692000
  1729. BO CKIFERR YES,SEE IF IN ERROR ? @VA04413 01693000
  1730. B RETURN OTHERWISE,NOT NEW OR OLD RETURN. @VA04413 01694000
  1731. CKIFERR CH R15,=H'24' WAS INVALID PARM SPECIFIED ? @VA04413 01695000
  1732. BE RESTORE YES, RESTORE OLD FCB. @VA04413 01696000
  1733. CLM R15,BIN0001,INVCHAR INVALID CHARACTER FOUND? @VA06434 01697000
  1734. BE RESTORE YES, RESTORE OLD FCB @VA06434 01698000
  1735. TM FLAG4,NEW SVCFREE FLAG SET? @VA06434 01699000
  1736. BZ RETURN NO NEED TO RESTORE OLD ENTRY @VA06434 01700000
  1737. RESTORE EQU * @VA04413 01701000
  1738. MVC 0(FCBENSIZ*8,R4),OLDENTRY RESOTRE OLD ENTRY 01702000
  1739. B RETURN FINISHED. 01703000
  1740. EXIT1 LTR R15,R15 ? ANY ERRORS ? 01704000
  1741. BZ ADDTOCNT UPDATE FCB COUNT @VA05963 01705000
  1742. EXIT2 LA R10,RETURN SET UP RTN ADDR FOR FRET CALL 01706000
  1743. SR R1,R1 CLEAR REG FOR COMPARE @V201105 01707000
  1744. CH R1,FCBNUM IS FCBNUM ZERO @V201105 01708000
  1745. BE CLRFIRST YES, ZERO FCBFIRST @VA05963 01709000
  1746. L R2,PREVENT GET PREVIOUS FCB ADDR @VA05963 01710000
  1747. MVC D01(3,R2),ZERO DELETE CHAIN PTR BUT NOT HIGH @VA05963 01711000
  1748. * ORDER BYTE 01712000
  1749. NEWFLAG EQU * @VA05963 01713000
  1750. TM FLAG4,NEW SVCFREE FLAG ON? 01714000
  1751. BO FRET CALL ON SVCFRET TO GIVE BACK ENTRY 01715000
  1752. B RETURN FINISHED 01716000
  1753. CLRFIRST EQU * @VA05963 01717000
  1754. ST R1,FCBFIRST CLEAR FCBFIRST @VA05963 01718000
  1755. B NEWFLAG CHECK FREE FLAG @VA05963 01719000
  1756. CHKOSDSN EQU * @VA04338 01720000
  1757. LR R2,R4 SAVE CURR FCB PTR @VA04338 01721000
  1758. LA R4,OLDENTRY POINT TO OLD FCB COPY @VA04338 01722000
  1759. BAL R10,CLRDSN1 CLEAR DSN BLOCK @VA04338 01723000
  1760. TM FCBINIT,FCBCATML CONCAT SPECIFIED @V201122 01724000
  1761. BNO RETURN NO, RETURN @V201122 01725000
  1762. ST R2,PREVENT PUT CURRENT ENTRY INTO PREV. @VA14030 01726000
  1763. * ENTRY 01727000
  1764. L R4,0(,R4) GET NEXT BLOCK IN CHAIN @V201122 01728000
  1765. B CLRLOOP CLEAR OTHER BLOCKS WITH DDNAM @V201122 01729000
  1766. CLRDSN1 EQU * @VA04338 01730000
  1767. SR R1,R1 ZERO REGISTER @VA11278 01731000
  1768. L R7,FCBOSFST PICK UP OLD OSFST BLOCK @VA11278 01731500
  1769. L R8,FCBOSFST-FCBSECT(,R2) PICK UP CURR OSFST @VA11278 01732000
  1770. ICM R1,SEVEN,FCBOSDSN+1 PICK UP OLD DSN BLOCK @VA11278 01732500
  1771. BZR R10 NO, RETURN TO CALLER @VA14030 01734000
  1772. L R2,FCBOSDSN-FCBSECT(,R2) PICK UP CURR DSN BLOCK @VA04338 01735000
  1773. LA R2,0(,R2) CLEAR HI ORDER BYTE @VA04338 01736000
  1774. CR R1,R2 ARE THEY THE SAME ? @VA04338 01737000
  1775. BE CLRFST1 NO, CHECK FOR OSFST FREE @VA11278 01738000
  1776. B CLRDSN2 GO FRET DSN BLOCK @VA04338 01739000
  1777. CLRDSN EQU * @VA11278 01740000
  1778. L R7,FCBOSFST PICK UP OLD OSFST BLOCK @VA11278 01740500
  1779. SR R8,R8 INDICATE CURR IS OLD @VA11278 01741000
  1780. SR R1,R1 ZERO REGISTER @VA11278 01741500
  1781. ICM R1,SEVEN,FCBOSDSN+1 PICK UP DSN BLOCK @VA11278 01742000
  1782. BZ CLRFST1 NO, CHECK FOR OSFST FREE @VA11278 01742500
  1783. CLRDSN2 EQU * @VA04338 01743000
  1784. ST R15,GR15SAVE SAVE ERROR CODE @VA14030 01744000
  1785. DMSFRET DWORDS=6,LOC=(1) RELEASE IT @V201122 01744050
  1786. L R15,GR15SAVE RESTORE ERROR CODE @VA14030 01744100
  1787. * REMOVE AND FREE OS FST FROM ACTIVE DISK TABLE AND OS FST CHAIN 01744150
  1788. CLRFST1 EQU * @VA11278 01744200
  1789. LA R7,0(,R7) CLEAR HI ORDER BYTE @VA11278 01744250
  1790. LTR R7,R7 DOES OSFST EXIST? @VA11278 01744300
  1791. BZR R10 NO - RETURN TO CALLER @VA11278 01744350
  1792. LA R8,0(,R8) CLEAR HI ORDER BYTE @VA11278 01744400
  1793. CR R7,R8 ARE OSFST'S THE SAME @VA11278 01744450
  1794. BER R10 YES, DON'T FRET IT @VA11278 01744500
  1795. ST R15,GR15SAVE SAVE ERROR CODE @VA14030 01744550
  1796. SR R1,R1 ZERO OUT R1 @VA14165 01744600
  1797. NEXTDISK EQU * @VA14165 01744640
  1798. L R15,AADTNXT ADDRESS OF DMSLAD ADTNXT @VA14165 01744680
  1799. BALR R14,R15 GET NEXT ADT POINTER @VA14165 01744720
  1800. LTR R15,R15 WAS THERE ANOTHER ADT ?? @VA14165 01744760
  1801. BNZ FSTFREE NO, NONE FOUND, FREE FST @VA14165 01744800
  1802. USING ADTSECT,R1 ADT ADDRESSABILITY @VA14165 01744840
  1803. TM ADTFLG2,ADTFROS IS THIS AN OS DISK ?? @VA14165 01744880
  1804. BNO NEXTDISK NO, GO GET NEXT ADT POINTER@VA14165 01744920
  1805. CLM R7,SEVEN,OSADTFST+1 ADT HAVE SAME OS FST ADDR @VA14165 01744960
  1806. BNE CKCHAIN NO,SEE IF IT'S IN FST CHAIN@VA14165 01745000
  1807. USING OSFST,R7 OSFST ADDRESSABILITY @VA14165 01745040
  1808. MVC OSADTFST+1(3),OSFSTNXT+1 MOVE PREVIOUS TO ADT @VA14165 01745080
  1809. B FSTFREE SINCE UNCHAINED FREE FST @VA14165 01745120
  1810. DROP R7 @VA14165 01745160
  1811. CKCHAIN EQU * @VA14165 01745200
  1812. USING OSFST,R8 OSFST ADDRESSABILITY @VA14165 01745240
  1813. L R8,OSADTFST GET CURRENT OSFST @VA14165 01745280
  1814. CKFST EQU * @VA14165 01745320
  1815. LA R8,0(,R8) CLEAR HI ORDER BYTE @VA14165 01745360
  1816. LTR R8,R8 END OF OSFST CHAIN? @VA14165 01745400
  1817. BZ NEXTDISK YES- FREE OLD OSFST @VA14165 01745440
  1818. CLM R7,SEVEN,OSFSTNXT+1 OLD FST = PREVIOUS @VA11278 01745500
  1819. BE UNCHFST YES, UNCHAIN OLD FST @VA11278 01745550
  1820. L R8,OSFSTNXT GET PREVIOUS FST @VA11278 01745600
  1821. B CKFST CHECK THIS SLOT @VA11278 01745650
  1822. DROP R8 @VA11278 01745700
  1823. USING OSFST,R7 OSFST ADDRESSABILITY @VA11278 01745750
  1824. UNCHFST EQU * @VA11278 01745800
  1825. MVC OSFSTNXT+1-OSFST(,R8),OSFSTNXT+1 UNHOOK OLD FST @VA11278 01745850
  1826. FSTFREE EQU * @VA11278 01745900
  1827. LA R0,OSFSTLTH GET OSFST LENGTH @VA11278 01745950
  1828. LR R1,R7 ADDRESS OF OSFST BLOCK @VA11278 01746000
  1829. DMSFRET DWORDS=(0),LOC=(1) FREE OS FST BLOCK @VA11278 01746050
  1830. L R15,GR15SAVE RESTORE ERROR CODE @VA14030 01746100
  1831. BR R10 RETURN TO CALLER @VA11278 01746150
  1832. DROP R1 @VA11278 01746200
  1833. DROP R7 @VA11278 01746250
  1834. * 01748000
  1835. * ADD A NEW ENTRY TO THE TABLE. 01749000
  1836. * PREVENT CONTAINS THE ADDRESS OF THE LAST FCBENTRY IN THE CHAIN. 01750000
  1837. * 01751000
  1838. ADDTOCNT EQU * @VA05963 01752000
  1839. LH R2,FCBNUM GET COUNT OF ENTRIES 01753000
  1840. LA R2,1(,R2) ADD ONE TO IT, AND 01754000
  1841. STH R2,FCBNUM PUT IT BACK IN FCB HEADER 01755000
  1842. * RESTORE GENERAL REGISTERS AND EXIT FROM FILEDEF. 01756000
  1843. * 01757000
  1844. RETURN MVC PREVENT(4),ZERO CLEAR PREVIOUS ENTRY POINTER 01758000
  1845. RETURN2 L R13,GR13SA GET R13 BACK 01759000
  1846. L R14,GR14SA GET GR14 BACK 01760000
  1847. BR R14 RETURN 01761000
  1848. EJECT 01762000
  1849. *********************************************************************** 01763000
  1850. * 01764000
  1851. * SUB-ROUTINE TO CALL SVCFRET 01765000
  1852. * 01766000
  1853. *********************************************************************** 01767000
  1854. * 01768000
  1855. FRET L R1,PLFREE+12 GET A(RELEASE STORAGE) 01769000
  1856. L R0,PLFREE+8 GET N'DBLE WORDS 01770000
  1857. FRET1 ST R15,GR15SAVE SAVE R15 01771000
  1858. DMSFRET DWORDS=(0),LOC=(1) 01772000
  1859. L R15,GR15SAVE RESOTRE R15 01773000
  1860. BR R10 RETURN TO INVOKER'S ADDRESS 01774000
  1861. * 01775000
  1862. EJECT 01776000
  1863. * 01777000
  1864. *********************************************************************** 01778000
  1865. * EXECUTED INSTRUCTIONS * 01779000
  1866. *********************************************************************** 01780000
  1867. * 01781000
  1868. DS 0F ALIGN. 01782000
  1869. EXPACK PACK PACK(8),0(0,R5) PACK INSTRUCTION 01783000
  1870. * 01784000
  1871. * THE NUMBER OF BYTES TO BE PACKED WILL BE DETERMINED BY 01785000
  1872. * GR7 AT EXECUTE TIME. 01786000
  1873. * 01787000
  1874. *********************************************************************** 01788000
  1875. * 01789000
  1876. * CONSTANTS AND WORK AREAS * 01790000
  1877. * 01791000
  1878. *********************************************************************** 01792000
  1879. CONREAD DC CL8'CONREAD' PROMPT PLIST @V201105 01793000
  1880. DC AL1(1) @V201105 01794000
  1881. DSNBUF DC AL3(0) INPUT BUFFER @V201105 01795000
  1882. DC CL1'U' TRANSLATE TO UPPER, PAD W/BLNKS @V201105 01796000
  1883. DSNBYTE DC AL3(0) NO. OF BYTES READ @V201105 01797000
  1884. DC X'FFFFFFFF' FENCE @V201105 01798000
  1885. DS 0F 01799000
  1886. GR13SA DS F SAVE GR 13 ON ENTRY. 01800000
  1887. GR15SAVE DS F SAVE GR 15 BEFORE SVCFRET CALL. 01801000
  1888. GR14SA DS F SAVE AREA FOR RETURN REGISTER 01802000
  1889. DENTAB EQU * VALID DENSITY TABLE 01803000
  1890. TWO00 DC CL8'200' 01804000
  1891. EIGHT00 DC CL8'800' 01805000
  1892. SIXTN00 DC CL8'1600' 01806000
  1893. HIDENSTY DC CL8'6250' @V200414 01807000
  1894. DENEND DC CL8'556' 01808000
  1895. TDENSITY DS F USER DENSITY SAVE 01809000
  1896. PLISTEND DC XL4'FFFFFFFF' PARAM LIST END INDICATOR. 01810000
  1897. MAXREC DC F'32760' MAXIMUM LRECL AND BLKSIZE @VA13014 01810100
  1898. DSRNDUM DC C'FT' BUILD AREA FOR DDNAME. 01811000
  1899. REFNUM DS 2C 01812000
  1900. DC C'F001' 01813000
  1901. PREVENT DS F PTR TO PREVIOUS FCB ENTRY. 01814000
  1902. DS 0D ALIGN. 01815000
  1903. PACK DC 2F'0' SPACE FOR PACKED DECIMAL. 01816000
  1904. NUMAX DC F'65535' MAX HALFWORD BINARY. 01817000
  1905. BASE2 DC A(DMSFLD+4096) 01818000
  1906. EIGHT DC F'8' CONSTANT 8. 01819000
  1907. NOCHSAVE DS F 01820000
  1908. CHARMAX EQU 5 01821000
  1909. * PARAMETER LIST FOR SVCFREE AND SVCFRET CALLS. 01822000
  1910. DS 0D ALIGN. 01823000
  1911. PLFREE DS 8C 01824000
  1912. DC 2F'0' N'DBLE WORDS,A(STORAGE) 01825000
  1913. OLDENTRY DC 184X'DD' 01826000
  1914. COPYSIZE EQU 6 01827000
  1915. COPY MVC COPYLIST,0(R5) COPY PLIST IN TRANSAREA 01828000
  1916. ZERO DC F'0' 01829000
  1917. FILE DC CL8'FILE' 01830000
  1918. DUMMY DC CL8'DUMMY' 01831000
  1919. * KEEP THIS ORDER THRU 'CRT' FOR LIST OF ACTIVE FCBS... 01832000
  1920. PRT DC CL8'PRINTER' 01833000
  1921. RDR DC CL8'READER' 01834000
  1922. TERM DC CL8'TERMINAL' 01835000
  1923. TAP DC CL8'TAP' 01836000
  1924. DISK DC CL8'DISK' 01837000
  1925. PUN DC CL8'PUNCH' 01838000
  1926. CRT DC CL8'CRT' 01839000
  1927. BATCH DC CL8'BATCH' 01840000
  1928. MOD DC CL8'MOD' 01841000
  1929. CLEAR DC CL8'CLEAR' 01842000
  1930. TAP2 DC CL8'TAP2' DEFAULT TAPE ID @VA09051 01842500
  1931. A1 DC CL2'A1' 01843000
  1932. PSORG DC CL8'PS' 01844000
  1933. DAORG DC CL3'DA' 01845000
  1934. POORG DC CL3'PO' 01846000
  1935. DSORGPS EQU X'40' 01847000
  1936. DSORGPO EQU X'02' 01848000
  1937. DSORGDA EQU X'20' 01849000
  1938. PERMBIT EQU X'04' 01850000
  1939. * 01851000
  1940. * THIS TABLE CONTAINS ALL VALID OPTIONS, KEYWORD & NON-KEYWORD. 01852000
  1941. * EACH TABLE ENTRY CONSISTS OF THE VALID OPTION NAME, 01853000
  1942. * A FLAG BYTE, AND THE ADDRESS OF A CONFLICTING OPTION, 01854000
  1943. * IF ANY. THE HIGH-ORDER FOUR BITS OF THE FLAG BYTE ARE 01855000
  1944. * SET ON WHEN THE OPTION IS FOUND IN THE COMMAND LINE. 01856000
  1945. * THIS PART OF THE FLAG IS CHECKED WHEN THE CONFLICTING 01857000
  1946. * OPTION IS FOUND IN THE COMMAND LINE. 01858000
  1947. * THE LOW-ORDER BITS SIGNIFY THE DEVICE(S) FOR WHICH THE 01859000
  1948. * OPTION IS VALID. 01860000
  1949. * 01861000
  1950. TABSTART DS 0D 01862000
  1951. PERM DC CL8'PERM',X'00',AL3(0) FLAG X'00' EQUIVALENT TO X'0F' 01863000
  1952. CHANGE DC CL8'CHANGE',X'00',AL3(NOCHANGE) 01864000
  1953. NOCHANGE DC CL8'NOCHANGE',X'00',AL3(CHANGE) 01865000
  1954. RECFM DC CL8'RECFM',X'0F',AL3(0) 01866000
  1955. LRECL DC CL8'LRECL',X'0F',AL3(0) 01867000
  1956. BLOCK DC CL8'BLOCK',X'0F',AL3(0) 01868000
  1957. BLKSIZE DC CL8'BLKSIZE',X'0F',AL3(0) P3100 01869000
  1958. DSORG DC CL8'DSORG',X'08',AL3(0) 01870000
  1959. AUXPROC DC CL8'AUXPROC',X'0F',AL3(0) 01871000
  1960. KEYLEN DC CL8'KEYLEN',X'08',AL3(0) 01872000
  1961. XTENT DC CL8'XTENT',X'08',AL3(0) 01873000
  1962. LIMCT DC CL8'LIMCT',X'08',AL3(0) 01874000
  1963. OPTCD DC CL8'OPTCD',X'08',AL3(0) 01875000
  1964. DISP DC CL8'DISP',X'08',AL3(0) 01876000
  1965. UPCASE DC CL8'UPCASE',X'02',AL3(LOWRCASE) 01877000
  1966. LOWRCASE DC CL8'LOWCASE',X'02',AL3(UPCASE) 01878000
  1967. NINTRACK DC CL8'9TRACK',X'04',AL3(SEVTRACK) 01879000
  1968. SEVTRACK DC CL8'7TRACK',X'04',AL3(NINTRACK) 01880000
  1969. DEN DC CL8'DEN',X'04',AL3(0) 01881000
  1970. TRKTCH DC CL8'TRTCH',X'04',AL3(NINTRACK) 01882000
  1971. MEMBER DC CL8'MEMBER',X'08',AL3(CONCAT) @V201105 01883000
  1972. CONCAT DC CL8'CONCAT',X'08',AL3(0) @V201105 01884000
  1973. TABEND EQU * 01885000
  1974. * 01886000
  1975. RECFTAB EQU * RECFM OPTION SETTINGS 01887000
  1976. DC CL5'F',X'80' 01888000
  1977. DC CL5'FB',X'90' 01889000
  1978. DC CL5'V',X'40' 01890000
  1979. DC CL5'VB',X'50' 01891000
  1980. DC CL5'VBS',X'58' 01892000
  1981. DC CL5'VS',X'48' 01893000
  1982. DC CL5'FS',X'88' 01894000
  1983. DC CL5'FBS',X'98' 01895000
  1984. DC CL5'U',X'C0' 01896000
  1985. DC CL5'FA',X'84' 01897000
  1986. DC CL5'FBA',X'94' 01898000
  1987. DC CL5'VA',X'44' 01899000
  1988. DC CL5'VBA',X'54' 01900000
  1989. DC CL5'VBSA',X'5C' 01901000
  1990. DC CL5'VSA',X'4C' 01902000
  1991. DC CL5'FSA',X'8C' 01903000
  1992. DC CL5'FBSA',X'9C' 01904000
  1993. DC CL5'UA',X'C4' 01905000
  1994. DC CL5'FM',X'82' 01906000
  1995. DC CL5'FBM',X'92' 01907000
  1996. DC CL5'VM',X'42' 01908000
  1997. DC CL5'VBM',X'52' 01909000
  1998. DC CL5'VBSM',X'5A' 01910000
  1999. DC CL5'VSM',X'4A' 01911000
  2000. DC CL5'FSM',X'8A' 01912000
  2001. DC CL5'FBSM',X'9A' 01913000
  2002. RECFEND DC CL5'UM',X'C2' 01914000
  2003. DS F 01915000
  2004. * FOLLOWING FLAG CORRESPONDS TO TO FLAG BYTE IN OPTION TABLE 01916000
  2005. VALFLAG DC X'00' 01917000
  2006. FOUND EQU X'F0' OPTION FOUND IN COMMAND LINE 01918000
  2007. DSKDEV EQU X'08' DEVICE FLAGS 01919000
  2008. TAPDEV EQU X'04' 01920000
  2009. TERMDEV EQU X'02' 01921000
  2010. URECDEV EQU X'01' 01922000
  2011. * 01923000
  2012. TESTBYTE DS X 01924000
  2013. EOPTCD EQU C'E' 01925000
  2014. EOPT EQU X'20' 01926000
  2015. FOPTCD EQU C'F' 01927000
  2016. FOPT EQU X'10' 01928000
  2017. AOPTCD EQU C'A' 01929000
  2018. AOPT EQU X'08' 01930000
  2019. ROPTCD EQU C'R' 01931000
  2020. ROPT EQU X'01' 01932000
  2021. DXTENT EQU X'32' 01933000
  2022. * KEEP FLAGS IN ORDER... 01934000
  2023. FLAG1 DC X'00' FLAG FOR FCB ENTRY MATCH. 01935000
  2024. FLAG4 DC X'00' FLAG FOR ENTRY INTO SVCFREE ROUTINE 01936000
  2025. OLD EQU X'40' 01937000
  2026. NEW EQU X'80' 01938000
  2027. IDMATCH EQU X'20' @VA05963 01939000
  2028. FLAG2 DC X'00' FLAG FOR SCANNER MATCH. 01940000
  2029. MATCH EQU X'FF' 01941000
  2030. NOMATCH EQU X'00' 01942000
  2031. FLAG3 DC X'00' FLAG FOR DSK OR TAP OPTION. 01943000
  2032. LASTCHK EQU X'10' 01944000
  2033. CATFLG EQU X'02' CONCATENATION REQUESTED @V201105 01945000
  2034. NOCH EQU X'01' NOCHNG TO USER SET UP FCB 01946000
  2035. OPTNFLAG DC X'00' INVALID OPTIONS FLAG 01947000
  2036. NOOPTNS EQU MATCH OPTIONS NOT ALLOWED 01948000
  2037. TAPSW DC X'00' SWITCH FOR TAPE OPTIONS 01949000
  2038. RESET EQU X'00' RESET 01950000
  2039. TRK9 EQU X'80' 9TRACK 01951000
  2040. TRK7 EQU X'40' 7TRACK 01952000
  2041. DENSITY EQU X'20' DENSITY SPECIFIED 01953000
  2042. TRTFLAG EQU X'10' 'TRTCH' SPECIFIED 01954000
  2043. DBLKSZ DC H'80' DEFAULT BLOCK SIZE. 01955000
  2044. DLRECL EQU DBLKSZ DEFAULT LRECL. 01956000
  2045. BLANK EQU C' ' 01957000
  2046. SEVEN EQU 7 VALUE @VA11278 01957500
  2047. KEYWORD DS 8C 01958000
  2048. INVCHAR DC X'14' RET CODE INVALID CHARACTER @VA06434 01959000
  2049. BIN0001 EQU B'0001' BINARY MASK '0001' @VA06434 01960000
  2050. CMS EQU 202 01961000
  2051. MSGSWT DC X'00' ERROR MSG PRINT FLAG 01962000
  2052. PRINT EQU X'80' 01963000
  2053. D01 EQU X'01' 1-BYTE DISPLACEMENT @VA05963 01964000
  2054. D16 EQU X'10' 16-BYTE DISPLACEMENT @VA05963 01965000
  2055. D32 EQU X'20' 32-BYTE DISPLACEMENT @VA05963 01966000
  2056. FOUR EQU X'04' LENGTH OF 4-BYTE FIELD @VA06220 01967000
  2057. ASTERISK DC C'****' 6-POINTED SPLATS @VA06220 01968000
  2058. STATLST DS 0D 01969000
  2059. DC CL8'STATE' 01970000
  2060. STATFN DC CL8' ' 01971000
  2061. DC CL8' ' 01972000
  2062. STATFM DC CL2' ' @VA12255 01973000
  2063. DC CL2' ' 01974000
  2064. STATAST DC CL4'****' '*' IS AN INVALID CHARACTER @VA06220 01975000
  2065. EJECT 01976000
  2066. * THE FOLLOWING IS THE TABLE FOR MODE SET FOR TAPE 01977000
  2067. SPACE 3 01978000
  2068. TRTCH EQU * 01979000
  2069. DC B'11001011' 800 BPI/9TRACK 01980000
  2070. DC B'10010011' 800 BPI/ODD /CV- ON/TR-OFF 01981000
  2071. DC B'10111011' 800 BPI/ODD/CV-OFF/TR-ON 01982000
  2072. DC B'10110011' 800 BPI/ODD/CV-OFF/TR-OFF 01983000
  2073. DC B'10101011' 800 BPI/EVEN/CV-OFF/TR-ON 01984000
  2074. DC B'10100011' 800 BPI/EVEN/CV-OFF/TR-OFF 01985000
  2075. DC B'01010011' 556 BPI/ ODD/CV- ON/TR-OFF 01986000
  2076. DC B'01111011' '' 01987000
  2077. DC B'01110011' '' 01988000
  2078. DC B'01101011' " 01989000
  2079. DC B'01100011' " 01990000
  2080. DC B'00010011' 200BPI/ ODD/CV- ON/TR-OFF 01991000
  2081. DC B'00111011' " 01992000
  2082. DC B'00110011' " 01993000
  2083. DC B'00101011' " 01994000
  2084. DC B'00100011' " 01995000
  2085. DC B'11000011' 1600 BPI/9TRACK 01996000
  2086. DC B'11010011' 6250 BPI/9TRACK @V200414 01997000
  2087. SPACE 3 01998000
  2088. * THIS TABLE IS USED BY FILEDEF TO ASSIGN DISPLACEMENTS WITHIN 01999000
  2089. * 'TRTCH' (ABOVE) FOR VARIOUS TAPE OPTIONS SPECIFIED BY THE USER 02000000
  2090. * 02001000
  2091. TRTAB DC C'O ',X'02' P1017 02002000
  2092. DC C'OC ',X'00' P1017 02003000
  2093. DC C'OT ',X'01' P1017 02004000
  2094. DC C'E ',X'04' P1017 02005000
  2095. TRTEND DC C'ET ',X'03' P1017 02006000
  2096. OSTBL DC 256X'00' TRANSLATE TBL FOR DSNAME @V201105 02007000
  2097. ORG OSTBL+C'.' @V201105 02008000
  2098. DC X'01' @V201105 02009000
  2099. ORG OSTBL+256 @V201105 02010000
  2100. EJECT 02011000
  2101. *********************************************************************** 02012000
  2102. * 02013000
  2103. * DSECTS AND DUMMY AREAS 02014000
  2104. * 02015000
  2105. *********************************************************************** 02016000
  2106. * 02017000
  2107. CMSCB 02018000
  2108. FCBSIZ EQU FCBEND-FCBDSNAM @VA06191 02019000
  2109. ADT @VA11278 02019100
  2110. OSFST @VA11278 02019200
  2111. * 02020000
  2112. EJECT 02021000
  2113. NUCON 02022000
  2114. SVCSAVE 02023000
  2115. REGEQU 02024000
  2116. DMSFLD CSECT 02025000
  2117. LTORG 02026000
  2118. COPYLIST DS 0D START OF SAVE AREA 02027000
  2119. END 02028000