Table of Contents

DMSLST Source

References

Source Listing

DMSLST.ASSEMBLE.txt
  1. LST TITLE 'DMSLST (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00007000
  4. * 00008000
  5. * MODULE NAME: 00009000
  6. * 00010000
  7. * DMSLST (LISTFILE) 00011000
  8. * 00012000
  9. * FUNCTION: 00013000
  10. * 00014000
  11. * LISTFILE COMMAND. INFORMATION ABOUT THE SPECIFIED 00015000
  12. * FILE(S) IS OUTPUT FOR THE USER. 00016000
  13. * 00017000
  14. * ATTRIBUTES: 00018000
  15. * 00019000
  16. * DISK RESIDENT, TRANSIENT 00020000
  17. * NOTE: LISTFILE MUST BE GENMOD'D WITH THE SYSTEM OPTION 00020100
  18. * 00021000
  19. * ENTRY POINTS: 00022000
  20. * 00023000
  21. * DMSLSTA (LISTFILE) - INPUT LINE FROM THE TERMINAL. 00024000
  22. * 00025000
  23. * ENTRY CONDITIONS: 00026000
  24. * 00027000
  25. * LIST - 00028000
  26. * GPR1 = A(PLIST) 00029000
  27. * GPR14 = A(CALLED ROUTINE) 00030000
  28. * PLIST = CL8 - CALLED ROUTINE 00031000
  29. * CL8 - FILENAME|* 00032000
  30. * CL8 - FILETYPE|* 00033000
  31. * CL8 - FILEMODE|*|BLANK 00034000
  32. * 00035000
  33. * OPTIONAL AND IN ANY ORDER: 00036000
  34. * CL8'(' 00037000
  35. * CL8'FMODE'|'FTYPE'|'FNAME' 00038000
  36. * CL8'DATE' 00039000
  37. * CL8'FORMAT' 00040000
  38. * CL8'FULLDATE|SHORTDATE|ISODATE' HRC005DS 00040500
  39. * CL8'ALLOC' 00041000
  40. * CL8'EXEC|APPEND' 00042000
  41. * CL8'HEADER'|'NOHEADER' 00043000
  42. * CL8'LABEL' 00044000
  43. * CL8'STACK' HRC321DS 00044100
  44. * CL8'FIFO ' 'LIFO' HRC321DS 00044200
  45. * 00045000
  46. * XL8 - FENCE 00046000
  47. * 00047000
  48. * EXIT CONDITIONS: 00048000
  49. * 00049000
  50. * NORMAL - 00050000
  51. * GPR15 = 0 : LIST IS OUTPUT CORRECTLY 00051000
  52. * 00052000
  53. * ERROR - 00053000
  54. * GPR15 = XXX : ERRORS OCCURRED 00054000
  55. * 24 INVALID PARAMETER/OPTION, CONFLICTING OPTIONS 00055000
  56. * 28 FILE NOT FOUND, INVALID FILEMODE 00056000
  57. * 36 DISK NOT ACCESSED, DISK NOT READ-WRITE 00057000
  58. * 00058000
  59. * CALLS TO OTHER ROUTINES: 00059000
  60. * 00060000
  61. * DMSLAD - FIND THE ACTIVE DISK TABLE BLOCK MATCHING 00061000
  62. * THE MODE SPECIFIED 00062000
  63. * 00063000
  64. * DMSLADN - FIND THE NEXT ADT BLOCK IN THE ACTIVE DISK 00064000
  65. * TABLE 00065000
  66. * 00066000
  67. * DMSCWR - TYPE A LINE OF FILE INFORMATION AT THE USER'S 00067000
  68. * TERMINAL 00068000
  69. * 00069000
  70. * DMSERS - DELETE THE SPECIFIED FILE 00070000
  71. * 00071000
  72. * DMSFNSA - CLOSE THE SPECIFIED FILE 00072000
  73. * 00073000
  74. * DMSBWR - WRITE THE SPECIFIED FILE OUT ON DISK 00074000
  75. * 00075000
  76. * DMSERR - TYPE AN ERROR MESSAGE AT THE USER CONSOLE 00076000
  77. * 00077000
  78. * EXTERNAL REFERENCES: 00078000
  79. * 00079000
  80. * ADT - ACTIVE DISK TABLE 00080000
  81. * 00081000
  82. * TABLES/WORKAREAS: 00082000
  83. * 00083000
  84. * NONE 00084000
  85. * 00085000
  86. * REGISTER USAGE: 00086000
  87. * 00087000
  88. * GPR1 = A(PLIST) 00088000
  89. * GPR12 = BASE REGISTER 00089000
  90. * 00090000
  91. * NOTES: 00091000
  92. * 00092000
  93. * LISTFILE is treated as a "command" or a "function" HRC309DS 00093000
  94. * according to the high-order byte of R1 at input, viz: HRC309DS 00093050
  95. * If = x'0B', it was issued as a command from DMSINT. HRC309DS 00093100
  96. * If = X'0D', it was issued from an EXEC FILE (DMSEXT), HRC309DS 00093150
  97. * with "&CONTROL" set to either "CMS" or "ALL". HRC309DS 00093200
  98. * If = x'01', it was issued from an EXEC file (DMSEXT), HRC309DS 00093250
  99. * with "&CONTROL OFF" in effect. HRC309DS 00093300
  100. * Otherwise, it is assumed to be a function. HRC309DS 00093350
  101. * HRC309DS 00093400
  102. * If DMSLST is called as a function, all error messages HRC309DS 00093450
  103. * are ommitted. Also, if LISTFILE is called from EXEC HRC309DS 00093500
  104. * with "&CONTROL OFF" in effect, the "file not found" HRC309DS 00093550
  105. * error message is omitted. HRC309DS 00093600
  106. * 00094000
  107. * OPERATION: 00095000
  108. * 00096000
  109. * THE DISK(S) SEARCHED FOR THE GIVEN FILE(S) ARE 00097000
  110. * DETERMINED BY DMSLSTA AS FOLLOWS: 00098000
  111. * 00099000
  112. * 1. IF FILEMODE IS GIVEN, DMSLAD IS CALLED TO 00100000
  113. * REFERENCE THE GIVEN DISK; IF FOUND, DMSLSTA 00101000
  114. * SEARCHES THE DIRECTORY TO FIND THE GIVEN 00102000
  115. * FILE(S). IF NOT FOUND BY DMSLAD, I.E., THE DISK 00103000
  116. * IS NOT LOGGED IN, AN ERROR IS RETURNED. 00104000
  117. * 00105000
  118. * 2. IF THE FILEMODE IS OMITTED, DMSLADN IS CALLED 00106000
  119. * (REPEATEDLY IF NECESSARY), AND DMSLSTA SEARCHES 00107000
  120. * THE PRIMARY DISK AND ALL ITS EXTENSIONS, 00108000
  121. * TO FIND THE GIVEN FILE(S). 00109000
  122. * 00110000
  123. * 3. IF THE FILEMODE WAS GIVEN AS ASTERISK (*), THEN 00111000
  124. * DMSLADN IS 00112000
  125. * CALLED AS ABOVE, AND ALL DISKS, READ-WRITE AND 00113000
  126. * READ-ONLY, 00114000
  127. * ARE SEARCHED BY DMSLSTA FOR THE GIVEN FILE(S). 00115000
  128. * 00116000
  129. * WHEN DMSLSTA, IN SCANNING A PARTICULAR FST TABLE AS 00117000
  130. * OBTAINED FROM DMSLAD OR DMSLADN, FINDS AN FST ENTRY 00118000
  131. * WHOSE FILENAME AND FILETYPE SATISFY THE 00119000
  132. * PARAMETER LIST, IT MOVES THE FILENAME, FILETYPE, 00120000
  133. * FILEMODE, AND ANY OTHER REQUESTED INFORMATION FROM 00121000
  134. * THAT FILE STATUS TABLE TO THE BUFFER. IF THE EXEC 00122000
  135. * OPTION IS NOT REQUESTED, IT THEN CALLS 00123000
  136. * DMSCWR TO TYPE THE CONTENTS OF THE BUFFER AT THE 00124000
  137. * TERMINAL. (THE OUTPUT LINES MAY BE PRECEDED BY AN 00125000
  138. * APPROPRIATE HEADING.) 00126000
  139. * DMSLSTA REPEATS THIS PROCEDURE FOR EACH FILE STATUS 00127000
  140. * TABLE SATISFYING THE FILENAME AND FILETYPE LISTING 00128000
  141. * REQUIREMENTS. 00129000
  142. * WHEN SCAN OF ALL PARTICIPATING FILE STATUS TABLES IS 00130000
  143. * COMPLETED, DMSLSTA RETURNS TO THE CALLER. 00131000
  144. * 00132000
  145. * If the STACK option is specified, the output is HRC321DS 00132025
  146. * placed in the stack in FIFO order. The STACK option HRC321DS 00132050
  147. * implies the NOHEADER option. HRC321DS 00132075
  148. * HRC321DS 00132100
  149. * If the FIFO option is specified, the output is placed HRC321DS 00132125
  150. * in the stack in FIFO order. The FIFO option implies HRC321DS 00132150
  151. * the NOHEADER option. HRC321DS 00132175
  152. * HRC321DS 00132200
  153. * If the LIFO option is specified, the output is placed HRC321DS 00132225
  154. * in the stack in LIFO order. The LIFO option implies HRC321DS 00132250
  155. * the NOHEADER option. HRC321DS 00132275
  156. * HRC321DS 00132300
  157. * IF THE EXEC OPTION IS REQUESTED, THE CONTENTS OF THE 00133000
  158. * BUFFER ARE NOT WRITTEN TO THE TERMINAL. INSTEAD, A 00134000
  159. * CMS EXEC FILE, CONTAINING THE DUMMY ARGUMENTS "&1 &2" 00135000
  160. * FOLLOWED BY THE BUFFER CONTENTS IS CREATED. THIS 00136000
  161. * FILE MAY LATER BE ACCESSED BY THE EXEC PROGRAM, WHICH 00137000
  162. * WILL REPLACE THE DUMMY ARGUMENTS. 00138000
  163. * 00139000
  164. * THE APPEND OPTION IS PRINCIPALLY THE SAME AS THE 00140000
  165. * EXEC OPTION IN ITS MANNER OF EXECUTION, BUT WHEREAS 00141000
  166. * THE EXEC OPTION WILL ERASE AN EXTANT CMS EXEC FILE, 00142000
  167. * APPEND CAUSES NEW INFORMATION TO BE PLACED INTO SUCH 00143000
  168. * A FILE. IF A 'CMS EXEC FILE DOES NOT EXIST WHEN THE 00144000
  169. * APPEND OPTION IS SPECIFIED, ONE WILL BE CREATED -- IN 00145000
  170. * A MANNER IDENTICAL TO HAVING SPECIFIED THE EXEC OPTION. 00146000
  171. * 00147000
  172. * THERE IS A VARIED AMOUNT OF INFORMATION THAT THE USER 00148000
  173. * MAY REQUEST BE TYPED OR PLACED INTO CMS EXEC FILE. 00149000
  174. * THE INFORMATION IS SERIALLY PRODUCED; I.E., IF THE 00150000
  175. * DATA FROM THE RIGHTMOST COLUMNS ARE WANTED, THE DATA 00151000
  176. * UP TO THOSE COLUMNS WILL BE PROVIDED. 00152000
  177. * 00153000
  178. * THE DEFAULT AMOUNT OF INFORMATION IS FILENAME, 00154000
  179. * FILETYPE, FILEMODE, WITH NOHEADER. IF MORE 00155000
  180. * INFORMATION IS REQUESTED, BY SPECIFYING FORMAT, 00156000
  181. * ALLOC, DATE, OR LABEL, HEADER BECOMES THE DEFAULT 00157000
  182. * OPTION. 00158000
  183. * 00159000
  184. * IF FORMAT IS ENTERED, THE RECORD FORMAT OF THE FILE, 00160000
  185. * FIXED OR VARIABLE, AND THE LOGICAL RECORD LENGTH WILL 00161000
  186. * BE PROVIDED. 00162000
  187. * 00163000
  188. * IF ALLOC IS ENTERED, THE AMOUNT OF DISK SPACE THAT 00164000
  189. * CMS HAS ALLOCATED TO THE FILE IN TERMS OF BOTH THE 00165000
  190. * NUMBER OF PHYSICAL BLOCKS USED, AND THE NUMBER OF 00166000
  191. * LOGICAL RECORDS WITHIN THE FILE WILL BE PROVIDED. 00167000
  192. * 00168000
  193. * IF DATE IS ENTERED, THE CREATION DATE (MM/DD/YY) AND 00169000
  194. * TIME (HH.MM) OF THE FILE WILL BE PROVIDED. 00170000
  195. * 00171000
  196. * IF LABEL IS ENTERED, THE VOLSER OF THE DISK UPON 00172000
  197. * WHICH THE FILE RESIDES WILL BE INCLUDED AS THE FINAL 00173000
  198. * ITEM. 00174000
  199. * 00175000
  200. * ALL OF THE ABOVE INFORMATION, EXCEPT DISK LABEL, 00176000
  201. * COMES FROM THE FILE STATUS TABLE (FST) FOR THE 00177000
  202. * RESPECTIVE FILE. THE DISK LABEL IS OBTAINED FROM THE 00178000
  203. * ACTIVE DEVICE TABLE (ADT) FOR THAT DISK. 00179000
  204. * 00180000
  205. *. 00181000
  206. EJECT 00182000
  207. MACRO 00183000
  208. &LOC OPTION &NAME,&MIN,&ADDR 00184000
  209. LCLA &M,&L 00185000
  210. LCLC &A 00186000
  211. &M SETA 1 00187000
  212. AIF (N'&MIN EQ 0).SEQ1 00188000
  213. &M SETA &MIN 00189000
  214. .SEQ1 ANOP 00190000
  215. &L SETA K'&NAME 00191000
  216. &A SETC '&NAME' 00192000
  217. AIF (N'&ADDR EQ 0).SEQ2 00193000
  218. &A SETC '&ADDR' 00194000
  219. .SEQ2 ANOP 00195000
  220. &LOC DC AL1(&M,&L),CL8'&NAME',AL2(&A-LISTFILE) 00196000
  221. MEND 00197000
  222. SPACE 3 00198000
  223. DMSLST START 0 00199000
  224. LISTFILE EQU * 00200000
  225. USING NUCON,R0 00201000
  226. LR R12,15 SET UP A BASE REGISTER 00202000
  227. USING LISTFILE,R12 00203000
  228. SSM OK81 00204000
  229. ST R14,RETREG AND SAVE THE RETURN REGISTER 00205000
  230. ST R1,SAVEDR1 AND SAVE R1 VALUE AT INPUT @VM01710 00205100
  231. SR R15,R15 NOW BUILD A DEFAULT SIGNAL 00206000
  232. MVC DESMODE(2),DMODE INITIALIAZE THE MODE FIELD 00207000
  233. MVC ERRADDR(4),=A(ERRADDR+4) ASSUME NOT EXEC OPTION. P3017 00208000
  234. MVI FLAG,HEADINIT INITIALIZE FLAG V0028 00209150
  235. MVI FLAG2,X'00' HRC005DS 00209550
  236. MVI COMNAME+1,X'07' ASSUME AN 8-BYTE FILENAME 00210000
  237. MVI COMTYPE+1,X'07' AND 8-BYTE FILETYPE 00211000
  238. LA R2,NAMESTAR BUT ALLOW THAT NEITHER IS SPECIFIED 00212000
  239. LA R3,PARMCKN THOUGH THERE MAY BE A FILENAME 00213000
  240. SCAN LA R1,8(,R1) LET'S PEEK AHEAD A BIT 00214000
  241. CLI 0(R1),C'(' OPTIONS START YET? 00215000
  242. BE OPTSCAN SORT THEM OUT, IF YES. 00216000
  243. CLI 0(R1),X'FF' ARE WE DONE YET? 00217000
  244. BCR 8,R2 YES. THEN GO WHEREVER 00218000
  245. BR R3 NO. THEN ELSEWHERE 00219000
  246. EJECT 00220000
  247. *********************************************************************** 00221000
  248. * 00222000
  249. * SCAN FILENAMES, FILETYPES, AND FILEMODES 00223000
  250. * 00224000
  251. *********************************************************************** 00225000
  252. PARMCKN LA R4,COMNAME+1 POINT TO COMPARISON FOR FILENAME 00226000
  253. LA R2,TYPESTAR RESET THE DEFAULT VECTOR 00227000
  254. LA R3,PARMCKT RESET THE NEXT SCAN POINTER 00228000
  255. LA R8,NAME1 POINT TO A HOLDING FIELD 00229000
  256. LA R9,1 SET UP A FLAG (FOR LATER) 00230000
  257. B PC0 NOW, JOIN THE COMMON ROUTINE 00231000
  258. PARMCKT LA R4,COMTYPE+1 POINT TO COMPARISON FOR FILETYPE 00232000
  259. LA R2,JOIN RESET THE DEFAULT VECTOR 00233000
  260. LA R3,PARMCKM RESET THE NEXT SCAN POINTER 00234000
  261. LA R8,NAME2 POINT TO A HOLDING FIELD 00235000
  262. PC0 LR R5,R1 SAVE THE POINTER 00236000
  263. LA R6,7 SET UP MAXIMUM LENGTH INDICATOR 00237000
  264. SR R7,R7 EMPTY OUT A WORK REGISTER 00238000
  265. CLI 0(R5),C'*' IS IT "ANY"? 00239000
  266. BNE PC1 NO. THEN LET'S SEE WHAT 00240000
  267. CLI 1(R5),C' ' IS IT LEGAL? 00241000
  268. BNE ERR2 NO! BUT THAT MEANS WE CAN'T FIND IT. SO.. 00242000
  269. B NOCONCAT JUST AN ASTERISK 00243000
  270. PC1 CLI 1(R5),C'*' LOOKING FOR A CONCATENATED FORM? 00244000
  271. BNE UPCOUNT NOT YET. 00245000
  272. CR R9,R6 YES. BUT HOW LONG 00246000
  273. BE CONCAT ALMOST MAXIMUM 00247000
  274. CLI 2(R5),C' ' IS IT IMBEDDED? 00248000
  275. BE CONCAT OTHERWISE, WE CAN'T FIND IT ANYWAY 00249000
  276. UPCOUNT CLI 1(R5),C' ' IS IT THE END YET? 00250000
  277. BE NOCONCAT YES. 00251000
  278. LA R5,1(,R5) TRY THE NEXT CHARACTER POSITION 00252000
  279. LA R7,1(,R7) UP THE COUNT SCANNED ALREADY 00253000
  280. BCT R6,PC1 DECREMENT THE COUNT ALLOWABLE 00254000
  281. B NOCONCAT ? GUESS WE'RE DONE. 00255000
  282. CONCAT STC R7,0(,R4) PUT THIS NUMBER WHERE NEEDED 00256000
  283. NOCONCAT EX R7,MOVEM PUT COMPUTED FORM IN THE HOLDING FIELD 00257000
  284. B SCAN NOW, BACK FOR MORE 00258000
  285. PARMCKM CLI 2(R1),C' ' DID WE GET MORE THAN 2 CHARACTERS V0205 00259100
  286. BNE ERR6 YES. DEFINITELY AN ERROR 00260000
  287. OI FLAG,USERMODE SIGNAL NOT DEFAULT MODE V0042 00260100
  288. MVC DESMODE(2),0(R1) SAVE WHATEVER IT IS 00261000
  289. LA R3,ERR1 SET UP THE NEXT SCAN EXIT-POINTER 00263000
  290. B SCAN AND OFF WE GO AGAIN 00264000
  291. SPACE 00265000
  292. MOVEM MVC 0(8,R8),0(R1) (EXECUTED MOVE FOR FN & FT) 00266000
  293. EJECT 00267000
  294. *********************************************************************** 00268000
  295. * 00269000
  296. * OPTION SCANNING ROUTINE 00270000
  297. * 00271000
  298. *********************************************************************** 00272000
  299. SPACE 2 00273000
  300. OPTSCAN LA R4,8(,R1) GET FIRST ARGUMENT. 00274000
  301. LR R11,R2 SAVE EXIT-ADDRESS. 00275000
  302. LA R8,4 LOAD BXLE INCREMENT REGISTER. 00276000
  303. LA R10,8 LOAD USEFUL '8' 00277000
  304. USING TABIMAGE,R9 00278000
  305. LA R9,LASTENT POINT TO END OF OPTION TABLE. 00279000
  306. LA R9,BRAD BUT, BACKUP A BIT! 00280000
  307. DROP R9 00281000
  308. USING TABIMAGE,R2 00282000
  309. SCANON LA R2,FIRSTENT POINT TO START OF OPTION TABLE 00283000
  310. SR R6,R6 MAKE SURE THIS REGISTER IS EMPTY. 00284000
  311. IC R6,TRUNCLEN GET LENGTH OF SHORTEST FORM OF OPTION 00285000
  312. LA R2,OPT NOW POINT TO FULL FORM. 00286000
  313. DROP R2 00287000
  314. TRYNEXT CLI 0(R4),X'FF' IS/WAS THIS THE LAST PARAMETER? 00288000
  315. BCR 8,R11 YES, THEN ON TO THE MAIN ROUTINE. 00289000
  316. CLI 0(R4),C')' IS THIS GUY A PARENTHESIS NUT? 00290000
  317. BNE NOTEND NO. 00291000
  318. CLI 8(R4),X'FF' YES...DID HE SLIP IN AN EXTRA FIELD? 00292000
  319. BCR 8,R11 NO. THEN, WE'RE DONE. 00293000
  320. LA R1,8(,R4) WELL, THAT'S NOT TOO GOOD. 00294000
  321. B ERR1 GIVE HIM A SLAP ON THE WRIST. 00295000
  322. NOTEND LR R3,R10 GET MAXIMUM SCAN LENGTH. 00296000
  323. LR R5,R3 ...FOR BOTH. 00297000
  324. CLCL R2,R4 SCAN AWAY. 00298000
  325. BE MATCH IF EQUAL, GO HANDLE. 00299000
  326. CLI 0(R4),C' ' ALMOST EQUAL? 00300000
  327. BE MAYBEOK YES. GO SEE IF IT IS ENOUGH. 00301000
  328. WASNT AR R4,R5 POINT TO THE END OF THE SCANNED OPTION. 00302000
  329. SR R4,R10 NOW BACKUP SO THAT WE CAN TRY AGAIN. 00303000
  330. AR R2,R3 POINT TO END OF THE OPTION IN THE TABLE 00304000
  331. IC R6,2(,R2) GET MINIMUM LENGTH OF NEXT TABLE ENTRY. 00305000
  332. BXLE R2,R8,TRYNEXT WHIP THROUGH THE TABLE. 00306000
  333. B ERR4 NOW GO SHOW HIM WHAT HE ENTERED. 00309000
  334. MAYBEOK AR R6,R5 ADD SCANNED LENGTH TO MINIMUM REQUIRED. 00310000
  335. CR R10,R6 COMPARE TO MAXIMUM TOKEN LENGTH. 00311000
  336. BL WASNT IF IT IS LOW, THERE IS NO MATCH. 00312000
  337. MATCH AR R4,R5 POINT TO THE NEXT OFFERING. 00313000
  338. AR R2,R3 POINT TO OFFSET FOR SPECIFIC HANDLER. 00314000
  339. SR R3,R3 SET UP A SIGNAL REGISTER. 00315000
  340. LH R2,0(,R2) NOW LOAD IT 00316000
  341. AR R2,R12 AND TURN IT INTO SOMETHING USEFUL. 00317000
  342. BALR R2,R2 GO THERE. 00318000
  343. LTR R3,R3 ANYTHING REALLY HAPPEN OUT THERE? 00319000
  344. BZ SCANON ONLY A FLAG WAS SET ON THIS PASS. 00320000
  345. CR R15,R3 ANYTHING NEW OR BIGGER? 00321000
  346. BNL SCANON NOPE. THEN WE'LL KEEP THE OLD SETTINGS. 00322000
  347. LR R15,R3 OH, THEN WE BETTER SAVE THE NEW LENGTH. 00323000
  348. LR R14,R6 ...AND THE NEW ENTRY ADDRESS. 00324000
  349. B SCANON NOW WE CAN GO BACK FOR MORE. 00325000
  350. EJECT 00326000
  351. *********************************************************************** 00327000
  352. * 00328000
  353. * OPTION HANDLING ROUTINES 00329000
  354. * 00330000
  355. *********************************************************************** 00331000
  356. SPACE 2 00332000
  357. ALLOC LA R3,44 don't truncate "BLOCKS" HRC320DS 00333000
  358. LA R6,PREC 00334000
  359. BR R2 00335000
  360. SPACE 00336000
  361. APPEND TM FLAG,CMSEXEC 00337000
  362. BO ERR7 00338000
  363. OI FLAG,APPND 00339000
  364. BR R2 00340000
  365. SPACE 00341000
  366. DT LA R3,61 HRC005DS 00342490
  367. LA R6,PTIM 00343000
  368. BR R2 00344000
  369. SPACE 00345000
  370. SHORTDAT EQU * HRC005DS 00345040
  371. TM FLAG2,FLG2ISO HRC005DS 00345080
  372. BO ERR8A HRC005DS 00345120
  373. TM FLAG2,FLG2FULL HRC005DS 00345160
  374. BO ERR8B HRC005DS 00345200
  375. OI FLAG2,FLG2SHRT HRC005DS 00345240
  376. B DT HRC005DS 00345280
  377. FULLDATE EQU * HRC005DS 00345320
  378. TM FLAG2,FLG2ISO HRC005DS 00345360
  379. BO ERR8C HRC005DS 00345400
  380. TM FLAG2,FLG2SHRT HRC005DS 00345440
  381. BO ERR8B HRC005DS 00345480
  382. OI FLAG2,FLG2FULL HRC005DS 00345520
  383. B DT HRC005DS 00345560
  384. ISODATE EQU * HRC005DS 00345600
  385. TM FLAG2,FLG2FULL HRC005DS 00345640
  386. BO ERR8C HRC005DS 00345680
  387. TM FLAG2,FLG2SHRT HRC005DS 00345720
  388. BO ERR8A HRC005DS 00345760
  389. OI FLAG2,FLG2ISO HRC005DS 00345800
  390. B DT HRC005DS 00345840
  391. EXEC TM FLAG,APPND 00346000
  392. BO ERR7 00347000
  393. OI FLAG,CMSEXEC 00348000
  394. BR R2 00349000
  395. SPACE 00350000
  396. FIFO EQU * HRC321DS 00350050
  397. OI FLAG2,FLG2STCK we are stacking output HRC321DS 00350100
  398. TM FLAG,HEAD header specified already? HRC321DS 00350150
  399. BO ERR8E yes, and this is a conflict HRC321DS 00350200
  400. OI FLAG,NOHEAD no header by default HRC321DS 00350250
  401. TM FLAG2,FLG2LIFI already processed LIFO/FIFO? HRC321DS 00350300
  402. BNO FIFO1 no, so FIFO is valid HRC321DS 00350350
  403. TM FLAG2,FLG2LIFO was the LIFO option specified? HRC321DS 00350400
  404. BO ERR8D yes, complain about it HRC321DS 00350450
  405. FIFO1 EQU * HRC321DS 00350500
  406. OI FLAG2,FLG2FIFO remember FIFO HRC321DS 00350550
  407. OI FLAG2,FLG2LIFI remember we did this HRC321DS 00350600
  408. BR R2 return HRC321DS 00350650
  409. SPACE 1 HRC321DS 00350700
  410. FM LA R3,22 00351000
  411. LA R6,PMOD 00352000
  412. BR R2 00353000
  413. SPACE 00354000
  414. FN LA R3,8 00355000
  415. LA R6,PNAM 00356000
  416. BR R2 00357000
  417. SPACE 00358000
  418. FMT LA R3,30 00359000
  419. LA R6,PFORM 00360000
  420. BR R2 00361000
  421. SPACE 00362000
  422. FT LA R3,17 00363000
  423. LA R6,PTYP 00364000
  424. BR R2 00365000
  425. SPACE 00366000
  426. HDR TM FLAG,NOHEAD 00367000
  427. BO ERR8 00368000
  428. TM FLAG2,FLG2STCK are we stacking output? HRC321DS 00368100
  429. BNO HDR2 no, proceed HRC321DS 00368200
  430. TM FLAG2,FLG2FIFO was the FIFO option specified? HRC321DS 00368300
  431. BO ERR8E yes, complain about it HRC321DS 00368400
  432. TM FLAG2,FLG2LIFO was the LIFO option specified? HRC321DS 00368500
  433. BO ERR8F yes, complain about it HRC321DS 00368600
  434. HDR2 EQU * HRC321DS 00368700
  435. OI FLAG,HEAD 00369000
  436. NI FLAG,255-HEADINIT V0027 00369100
  437. BR R2 00370000
  438. SPACE 00371000
  439. LABEL LA R3,69 better formatted header HRC320DS 00372490
  440. LA R6,PLAB 00373000
  441. BR R2 00374000
  442. SPACE 00375000
  443. LIFO EQU * HRC321DS 00375050
  444. OI FLAG2,FLG2STCK we are stacking output HRC321DS 00375100
  445. TM FLAG,HEAD header specified already? HRC321DS 00375150
  446. BO ERR8F yes, and this is a conflict HRC321DS 00375200
  447. OI FLAG,NOHEAD no header by default HRC321DS 00375250
  448. TM FLAG2,FLG2LIFI already processed LIFO/FIFO? HRC321DS 00375300
  449. BNO LIFO1 no, so LIFO is valid HRC321DS 00375350
  450. TM FLAG2,FLG2FIFO was the FIFO option specified? HRC321DS 00375400
  451. BO ERR8D yes, complain about it HRC321DS 00375450
  452. LIFO1 EQU * HRC321DS 00375500
  453. NI FLAG2,255-FLG2FIFO replace STACK default (FIFO) HRC321DS 00375550
  454. OI FLAG2,FLG2LIFO remember LIFO HRC321DS 00375600
  455. OI FLAG2,FLG2LIFI remember we did this HRC321DS 00375650
  456. BR R2 return HRC321DS 00375700
  457. SPACE 1 HRC321DS 00375750
  458. NOHDR TM FLAG,HEAD 00376000
  459. BO ERR8 00377000
  460. OI FLAG,NOHEAD 00378000
  461. NI FLAG,255-HEADINIT V0027 00378100
  462. BR R2 00379000
  463. SPACE 1 HRC321DS 00379050
  464. STACK EQU * HRC321DS 00379100
  465. TM FLAG2,FLG2STCK FIFO or LIFO already handled? HRC321DS 00379150
  466. BO R2 no further work required HRC321DS 00379200
  467. TM FLAG,HEAD header specified already? HRC321DS 00379250
  468. BO ERR8G yes, and this is a conflict HRC321DS 00379300
  469. OI FLAG,NOHEAD no header by default HRC321DS 00379350
  470. OI FLAG2,FLG2STCK we are stacking output HRC321DS 00379400
  471. OI FLAG2,FLG2FIFO stack FIFO by default HRC321DS 00379450
  472. BR R2 return HRC321DS 00379500
  473. EJECT 00380000
  474. *********************************************************************** 00381000
  475. * 00382000
  476. * OPTION TABLE 00383000
  477. * 00384000
  478. *********************************************************************** 00385000
  479. SPACE 00386000
  480. FIRSTENT OPTION EXEC 00387000
  481. SPACE 00388000
  482. OPTION APPEND,2 00389000
  483. SPACE 00390000
  484. OPTION NOHEADER,3,NOHDR 00391000
  485. SPACE 00392000
  486. OPTION FNAME,2,FN 00393000
  487. SPACE 00394000
  488. OPTION FTYPE,2,FT P0132 00395000
  489. SPACE 00396000
  490. OPTION FORMAT,2,FMT P0132 00397000
  491. SPACE 00398000
  492. OPTION DATE,,DT 00399000
  493. SPACE 00400000
  494. OPTION SHORTDAT,3 HRC005DS 00400100
  495. SPACE , HRC005DS 00400200
  496. OPTION ISODATE,3 HRC005DS 00400300
  497. SPACE , HRC005DS 00400400
  498. OPTION FULLDATE,3 HRC005DS 00400500
  499. SPACE , HRC005DS 00400600
  500. OPTION ALLOC,2 00401000
  501. SPACE 00402000
  502. OPTION LABEL 00403000
  503. SPACE 00404000
  504. OPTION FIFO HRC321DS 00404050
  505. SPACE 1 HRC321DS 00404100
  506. OPTION LIFO HRC321DS 00404150
  507. SPACE 1 HRC321DS 00404200
  508. OPTION STACK HRC321DS 00404250
  509. SPACE 1 HRC321DS 00404300
  510. OPTION FMODE,2,FM P0132 00405000
  511. SPACE 00406000
  512. LASTENT OPTION HEADER,,HDR 00407000
  513. EJECT 00408000
  514. NAMESTAR MVC NAME1(8),=CL8'*' MOVE IN THE DEFAULT FILENAME. 00409000
  515. TYPESTAR MVC NAME2(8),=CL8'*' MOVE IN THE DEFAULT FILETYPE. 00410000
  516. JOIN LTR R15,R15 WERE ANY FORMATTING OPTIONS SPECIFIED? 00411000
  517. BNZ JOIN0 IF YES, SKIP THE DEFAULTS. 00412000
  518. IC R15,DFLTLEN GET THE DEFAULT PRINT LENGTH. 00413000
  519. L R14,DFLTENT GET THE DEFAULT PRINT ENTRY ADDRESS. 00414000
  520. JOIN0 STC R15,PRINTLEN SAVE THE PRINT LENGTH. 00415000
  521. STC R15,DTYPELEN ALSO, PUT IT IN THE PLIST. 00416000
  522. LR R11,R14 SAVE THE PRINT ROUTINE ENTRY. 00417000
  523. MVI TYPLOC,C' ' ... 00418000
  524. MVC TYPLOC+1(72),TYPLOC CLEAR THE BUFFER P3091 00419000
  525. SR R9,R9 EMPTY A REGISTER. 00420000
  526. TM FLAG,USERMODE DEFAULT MODE? V0042 00420100
  527. BNO POINTA YES. V0042 00420150
  528. CLI DESMODE+1,C' ' WAS MODE-NUMBER BLANK? 00421000
  529. BE JOIN1 IF SO, SKIP THE CHECKING. 00422000
  530. CLI DESMODE+1,C'0' IS IT LESS THAN ZERO? 00423000
  531. BL ERR6A ERROR, IF IT IS. 00424000
  532. CLI DESMODE+1,C'5' HIGHEST ALLOWABLE P0724 00425000
  533. BH ERR6A WRONG, IF HIGHER. 00426000
  534. OI FLAG,MODENUM SIGNAL THAT MODE MUST MATCH. 00427000
  535. JOIN1 CLI DESMODE,C'*' WAS AN ASTERISK SPECIFIED? P0724 00428000
  536. BNE CKLET NO. THEN KEEP CHECKING. P0724 00429000
  537. TM FLAG,MODENUM WAS A MODE-NUMBER SPECIFIED? 00430000
  538. BO ERR6A THAT'S NOT ALLOWED. 00431000
  539. POINTA LA R1,DMODE-24 POINT TO A MODE-LETTER OF 'A'. V0042 00432100
  540. B SEARCH GO GET A(ADT) 00433000
  541. CKLET CLI DESMODE,C'A' COMPARE AGAINST MODE OF A. P0724 00434000
  542. BL ERR6A ERROR IF LOW. P0724 00435000
  543. CLI DESMODE,C'I' COMPARE AGAINST MODE OF I. HRC002DS 00436690
  544. BNH FINDIT ERROR IF HIGH. HRC002DS 00437380
  545. CLI DESMODE,C'J' COMPARE AGAINST MODE OF J. HRC002DS 00438070
  546. BL ERR6A ERROR IF LOW. HRC002DS 00438760
  547. CLI DESMODE,C'R' COMPARE AGAINST MODE OF R. HRC002DS 00439450
  548. BNH FINDIT OK IT IF HIGH. HRC002DS 00440140
  549. CLI DESMODE,C'S' COMPARE AGAINST MODE OF S. HRC002DS 00440830
  550. BL ERR6A ERROR IF LOW. HRC002DS 00441520
  551. CLI DESMODE,C'Z' COMPARE AGAINST MODE OF Z. HRC002DS 00442210
  552. BH ERR6A ERROR IF HIGH. HRC002DS 00442900
  553. FINDIT LA R1,DESMODE-24 POINT TO SUPPLIED MODE-LETTER. 00444000
  554. SEARCH L R15,VCADTLKP GET ADDRESS OF DMSLAD. @VM03093 00445100
  555. BALR R14,R15 GO THERE. 00446000
  556. BNZ ERR6A ERROR, IF NOT FOUND. 00447000
  557. LR R9,R1 SAVE ADDRESS OF THE ADT. 00448000
  558. CLI DESMODE,C'*' WAS MODE AN ASTERISK? 00449000
  559. BE TESTAPP WE'RE OK THEN. 00450000
  560. USING ADTSECT,R9 00451000
  561. TM ADTFLG1,ADTFRO+ADTFRW IS THE DISK ACCESSED? 00452000
  562. BNZ TESTAPP YES, BRANCH @VA04384 00453100
  563. TM ADTFLG2,ADTFROS CMS DISK ? @VA04384 00453200
  564. BO ERR6A NO, INVALID MODE MESSAGE @VA04384 00453300
  565. B ERR3 DISK ISN'T ACCESSED @VA04384 00453400
  566. DROP R9 00454000
  567. TESTAPP TM FLAG,APPND WAS APPEND SPECIFIED? 00455000
  568. BO SETAPP DON'T ERASE 'CMS EXEC', IF IT WAS. 00456000
  569. TM FLAG,CMSEXEC WAS EXEC SPECIFIED? 00457000
  570. BNO JOIN2 SKIP THE FOLLOWING, IF NOT. 00458000
  571. LA R1,ERASEP POINT TO THE ERASE PLIST. 00459000
  572. L R15,AERASE GO ERASE 'CMS EXEC A1' @V305066 00460000
  573. SSM OK00 ALLOW INTERRUPTS @VA06227 00460050
  574. BALR R14,R15 (IF ANY) @V305066 00460100
  575. SSM OK81 DON'T ALLOW INTERRUPTS @VA06227 00461000
  576. SETAPP MVC TYPECMS(LWRB),DWRBUF SET UP THE WRBUF PLIST. 00462000
  577. MVC ERRADDR(4),=A(ERR9) BE PREPARED FOR WRBUF ERROR. P3017 00463000
  578. LA R1,DMODE-24 POINT TO MODE-LETTER 'A'. 00464000
  579. L R15,VCADTLKP GET ADDRESS OF DMSLAD. @VM03093 00465100
  580. BALR R14,R15 GO THERE. 00466000
  581. USING ADTSECT,R1 00467000
  582. TM ADTFLG1,ADTFRO+ADTFRW IS THE A DISK ACCESSED @VA14113 00467500
  583. BNZ ADISK YES. @VA14113 00467520
  584. MVC DESMODE(2),DMODE SET UP A MODE IN MSG. @VA14113 00467540
  585. B ERR3 A DISK ISN'T ACCESSED. @VA14113 00467560
  586. ADISK EQU * @VA14113 00467580
  587. TM ADTFLG1,ADTFRW IS THE A-DISK READ-WRITE? 00468000
  588. BNO ERR5 MUST BE...SO, ERROR, IF NOT. 00469000
  589. B JOIN3A GET COMMON, NOW. V0028 00470100
  590. DROP R1 00471000
  591. JOIN2 MVC TYPECMS(16),DTYPECMS SET UP TYPLIN PLIST. 00472000
  592. JOIN3A CLI DESMODE,C'*' WAS MODE AN ASTERISK? 00477000
  593. USING ADTSECT,R9 00478000
  594. BNE JOIN6 NO? THEN GO SEE WHAT IS THERE. 00479000
  595. LA R13,ADTFRO+ADTFRW SIGNAL THAT WE'LL TAKE ANYTHING. 00480000
  596. B CKSTAT CHECK IT OUT. 00481000
  597. JOIN4 LR R1,R9 GET THE LAST ADDRESS. 00482000
  598. JOIN5 L R15,VCADTNXT SET UP TO FIND NEXT. @VM03093 00483100
  599. BALR R14,R15 NOW, GO FIND IT. 00484000
  600. BNZ FINI ALL DONE IF COND. CODE IS NON-ZERO. 00485000
  601. LR R9,R1 SAVE THAT ADDRESS. 00486000
  602. CKSTAT EX R13,DTM IS IT THE KIND WE'RE LOOKING FOR? 00487000
  603. BZ JOIN5 IF NOT, KEEP TRYING. 00488000
  604. JOIN6 L R6,ADTFDA START WITH THE FIRST HYPERBLOCK. 00489000
  605. SR R3,R3 EMPTY OUT A REGISTER. 00490000
  606. SR R7,R7 AND ANOTHER. 00491000
  607. L R4,0(,R6) SET INDICES FOR BXLE-LOOP. 00492000
  608. L R5,4(,R6) ... 00493000
  609. SR R5,R4 ... 00494000
  610. LA R6,8(,R6) SET POINTER TO START OF TABLE. 00495000
  611. LOOP CL R7,0(R6,R3) IS THERE AN ENTRY? 00496000
  612. BE BUMP NO. GO TRY ANOTHER ONE. 00497000
  613. LA R8,0(R6,R3) GET ACTUAL ADDRESS. 00498000
  614. TM FLAG,MODENUM CARE ABOUT MODE-NUMBERS? 00499000
  615. BNO CLINAM NO. HOW 'BOUT FILENAMES? 00500000
  616. CLC 25(1,R8),DESMODE+1 DOES THE NUMBER MATCH? 00501000
  617. BNE BUMP NO...TRY ANOTHER. 00502000
  618. CLINAM CLI NAME1,C'*' ANY FILENAME DO? 00503000
  619. BE WHATYPE YES. HOW 'BOUT FILETYPE? 00504000
  620. COMNAME CLC NAME1(8),0(R8) IS WHAT WE'VE GOT, WHAT HE WANTS? 00505000
  621. BNE BUMP NOPE. TRY AGAIN. 00506000
  622. WHATYPE CLI NAME2,C'*' ANYONE CARE WHAT THE FILETYPE IS? 00507000
  623. BE PRINT NO? LET'S SHOW THIS ONE,THEN. 00508000
  624. COMTYPE CLC NAME2(8),8(R8) DOES THE TYPE MATCH? 00509000
  625. BE PRINT YES. SHOW IT. 00510000
  626. BUMP BXLE R3,R4,LOOP KEEP LOOKING. 00511000
  627. L R6,0(R6,R3) IS THERE AN EXTENSION? 00512000
  628. SR R3,R3 INITIALIZE (JUST IN CASE) 00513000
  629. LTR R6,R6 WELL? 00514000
  630. BNZ LOOP SEARCH THROUGH EXTENSION. 00515000
  631. CLI DESMODE,C'*' ANY MODE DO? 00516000
  632. BE JOIN4 YES. LET'S FIND ANOTHER. 00517000
  633. TM FLAG,FOUNDIT DID WE EVER FIND ANYTHING? 00520000
  634. BO DONE YES. LET'S FINISH UP THEN. 00521000
  635. B ERR2 TSK. TSK. 00522000
  636. SPACE 00523000
  637. DTM TM ADTFLG1,*-* EXECUTED MODE CHECKER 00524000
  638. EJECT 00525000
  639. PRINT TM FLAG,NOHEAD+FOUNDIT HAVE WE COME THIS WAY BEFORE? 00526000
  640. BC 5,HEADN SKIP THIS STUFF IF WE HAVE. 00527000
  641. CLI TYPECMS,C'W' ARE WE WRBUF'ING? 00528000
  642. BE HEADN YES, NO HEADING REQUIRED. 00529000
  643. TM FLAG,HEADINIT ANY USER HEADING REQUEST. V0027 00530100
  644. BNO PHEAD IF SO, HONOR IT. V0027 00530150
  645. CLI PRINTLEN,X'16' DO WE EXCEED STANDARD V0027 00530200
  646. BNH HEADN OK THEN. V0027 00530250
  647. PHEAD SR R1,R1 SIGNAL V0027 00530300
  648. IC R1,PRINTLEN GET HEADING LENGTH. 00531000
  649. EX R1,HDMVC PUT HEADING INTO BUFFER. 00532000
  650. LA R1,TYPECMS LOAD ADDRESS OF PLIST. 00533000
  651. SPACE 1 HRC321DS 00533050
  652. TM FLAG2,FLG2FIFO should we stack header instead? HRC321DS 00533100
  653. BO PRNFIFO yes, FIFO HRC321DS 00533150
  654. TM FLAG2,FLG2LIFO should we stack header LIFO? HRC321DS 00533200
  655. BNO PRINTIT no, just type it HRC321DS 00533250
  656. MVC FIFOLIFO(4),=C'LIFO' HRC321DS 00533300
  657. B PRSTACK HRC321DS 00533350
  658. PRNFIFO EQU * HRC321DS 00533400
  659. MVC FIFOLIFO(4),=C'FIFO' HRC321DS 00533450
  660. PRSTACK EQU * set up the parameter list HRC321DS 00533500
  661. MVC STACKLEN(1),CHARB+3 HRC321DS 00533550
  662. MVC STACKADR(3),BUFLOC HRC321DS 00533600
  663. LA R1,STACK HRC321DS 00533650
  664. SPACE 1 HRC321DS 00533700
  665. PRINTIT EQU * HRC321DS 00533750
  666. SVC X'CA' TYPE! 00534000
  667. MVI MODE-1,C' ' NOW CLEAN UP... 00535000
  668. MVC MODE(57),MODE-1 ... THE BUFFER. 00536000
  669. HEADN CLC CMSX(16),0(R8) WAS IT 'CMS EXEC'? 00537000
  670. BNE OTHER NO? NO SWET. 00538000
  671. CLI ADTM,C'A' ON THE 'A' DISK? @VA03537 00538100
  672. BNE OTHER NOPE, ALL RIGHT @VA03537 00538200
  673. CLI TYPECMS,C'W' ARE WE WRITING AN EXEC FILE? 00539000
  674. BE BUMP O FIND SOMETHING ELSE. 00540000
  675. OTHER MVC DATE(15),DATE-1 CLEAR OUT END OF BUFFER. 00541000
  676. OI FLAG,FOUNDIT BRAG ABOUT FINDING SOMETHING. 00542000
  677. BR R11 GO TO THE WRITE PLACE. 00543000
  678. * 00544000
  679. PLAB EQU * HRC005DS 00545290
  680. MVC VOLID(6),ADTID MOVE IN THE VOLUME LABEL. HRC005DS 00545580
  681. PTIM EQU * TIME 00546000
  682. LA R10,TIME SET REC BUFFER HRC005DS 00546500
  683. LA R1,18(,R8) SET TIME LOCATION 00547000
  684. LA R14,TPATRN SET PATTERN BUFFER 00549000
  685. CLI 0(R1),X'24' VALID TIME? 00552000
  686. BNH NOTIME1 VALID. 00553000
  687. NOTIME SR R1,R1 SIGNAL INVALID TIME. BLANK OUT. 00554000
  688. NOTIME1 BAL R15,VERIFY GO VERIFY LEGIT TIME 00555000
  689. PDATE EQU * 00556000
  690. LA R1,16(,R8) 00562000
  691. LA R10,CHARDATE HRC005DS 00563490
  692. LA R14,DPATRN 00564000
  693. CLI 0(R1),1 CHECK VALID DATE. 00565000
  694. BL NODATE BAD MONTH 00566000
  695. CLI 0(R1),X'12' GREATER THAN YULETIDE? NEVER! 00567000
  696. BNH NODATE1 VALID MONTH 00568000
  697. NODATE MVC CHARDATE(9),=C' 00000000' INVALID DATE HRC005DS 00569290
  698. B PDATE1 HRC005DS 00569580
  699. NODATE1 BAL R15,VERIFY 00570000
  700. MVC CHARDATE+5(2),=C'19' ASSUME 20TH CENTURY HRC005DS 00570040
  701. MVC CHARDATE+7(2),38(R8) HRC005DS 00570080
  702. CLI 38(R8),C'5' DATES BEFORE 1960 ARE 21ST CENTURHRC005DS 00570120
  703. BH PDATE1 GOT CENTURY HRC005DS 00570160
  704. MVC CHARDATE+5(2),=C'20' MAKE IT 21ST CENTURY HRC005DS 00570200
  705. PDATE1 EQU * HRC005DS 00570240
  706. MVI DATE+2,C'/' HRC005DS 00570280
  707. MVI DATE+5,C'/' HRC005DS 00570320
  708. MVC DATE(2),CHARDATE+1 MM HRC005DS 00570360
  709. MVC DATE+3(2),CHARDATE+3 DD HRC005DS 00570400
  710. TM FLAG2,FLG2FULL+FLG2ISO IS THIS A LONG DATE HRC005DS 00570440
  711. BNZ PDATEFUL CHECK FULLDATE HRC005DS 00570480
  712. MVC DATE+6(2),CHARDATE+7 YY HRC005DS 00570520
  713. B PREC HRC005DS 00570560
  714. PDATEFUL TM FLAG2,FLG2FULL HRC005DS 00570600
  715. BNO PDATEISO HRC005DS 00570640
  716. MVC DATE+6(4),CHARDATE+5 CCYY HRC005DS 00570680
  717. B PREC HRC005DS 00570720
  718. PDATEISO MVI DATE+4,C'-' CCYY-MM-DD HRC005DS 00570760
  719. MVI DATE+7,C'-' HRC005DS 00570800
  720. MVC DATE+0(4),CHARDATE+5 CCYY HRC005DS 00570840
  721. MVC DATE+5(2),CHARDATE+1 MM HRC005DS 00570880
  722. MVC DATE+8(2),CHARDATE+3 DD HRC005DS 00570920
  723. PREC EQU * NO. OF RECORDS 00571000
  724. LH R1,36(,R8) GET THE NUMBER OF DATA BLOCKS 00572000
  725. N R1,=X'0000FFFF' NO PROPAGATED BITS FROM 'LH' 00573000
  726. CVD R1,DEC CONVERT IT TO DECIMAL 00574000
  727. MVC NOREC(6),RPATRN CORRECT PATTERN FOR NO. REC. 00575000
  728. ED NOREC(6),DEC+5 EDIT UP TO 5 DIGITS (WORST CASE) 00576000
  729. PITEM EQU * 00577000
  730. LH R1,26(,R8) GET THE NO OF ITEMS 00578000
  731. N R1,=X'0000FFFF' NO SIGN 00579000
  732. CVD R1,DEC CONVERT 00580000
  733. MVC ITM(6),RPATRN MOVE PATTERN 00581000
  734. ED ITM(6),DEC+5 AND EDIT 00582000
  735. PFORM EQU * 00583000
  736. LH R1,34(,R8) AND GET WIDTH 00584000
  737. N R1,=X'0000FFFF' THROW OUT JUNK 00585000
  738. CVD R1,DEC AND CONVERT 00586000
  739. MVC FORM+1(6),RPATRN MOVE PATTERN 00587000
  740. ED FORM+1(6),DEC+5 AND EDIT 00588000
  741. MVC FORM(1),30(R8) SET THE FORMAT 00589000
  742. PMOD MVC MODE(2),24(R8) MOVE IN THE MODE 00590000
  743. MVC MODE(1),ADTM REPLACE MODE-LETTER BY DISK-TABLE MODE 00591000
  744. PTYP MVC TYPE(8),8(R8) MOVE IN THE TYPE 00592000
  745. PNAM MVC NAME(8),0(R8) MOVE IN THE NAME 00593000
  746. LA 1,TYPECMS SET PARAMETER LIST 00594000
  747. SPACE 1 HRC321DS 00594050
  748. TM FLAG2,FLG2FIFO should we stack line instead? HRC321DS 00594100
  749. BO STKFIFO yes, FIFO HRC321DS 00594150
  750. TM FLAG2,FLG2LIFO should we stack line LIFO? HRC321DS 00594200
  751. BNO TYPEIT no, just type it HRC321DS 00594250
  752. MVC FIFOLIFO(4),=C'LIFO' HRC321DS 00594300
  753. B STACKLN HRC321DS 00594350
  754. STKFIFO EQU * HRC321DS 00594400
  755. MVC FIFOLIFO(4),=C'FIFO' HRC321DS 00594450
  756. STACKLN EQU * HRC321DS 00594500
  757. MVC STACKLEN(1),CHARB+3 HRC321DS 00594550
  758. MVC STACKADR(3),BUFLOC HRC321DS 00594600
  759. LA R1,STACKPL HRC321DS 00594650
  760. SPACE 1 HRC321DS 00594700
  761. TYPEIT EQU * HRC321DS 00594750
  762. CNOP 2,4 P3017 00595000
  763. SVC X'CA' 00596000
  764. ERRADDR DC AL4(*+4) P3017 00597000
  765. B BUMP CONTINUE SEARCH 00598000
  766. * 00599000
  767. VERIFY EQU * VERIFY LEGITIMATE TIME AND DATE CODES 00600000
  768. LTR R1,R1 VALID CODES. 00601000
  769. BCR 8,R15 IF NOT (R1=0), EXIT (LEAVE BLANKS THERE) 00602000
  770. VER1 MVC 0(6,R10),0(R14) MOVE IN CORRECT PATTERN 00603000
  771. ED 0(6,R10),0(R1) EDIT TIME OR DATE 00604000
  772. BR R15 00605000
  773. SPACE 00606000
  774. HDMVC MVC TYPLOC(1),HEADMS 00607000
  775. SPACE 00608000
  776. FINI TM FLAG,FOUNDIT WAS FILE FOUND? 00609000
  777. BNO ERR2 00610000
  778. DONE SR R11,R11 CLEAR ERROR INDICATOR IN R11, 00611000
  779. CLI TYPECMS,C'W' DID WE 'WRBUF' CMS EXEC ? 00612000
  780. BNE GETOUT IF NOT, FORGET IT. 00613000
  781. MVC TYPECMS(8),=CL8'FINIS' IF YES, CLOSE CMS EXEC FILE. 00614000
  782. LA 1,TYPECMS ... 00615000
  783. SVC X'CA' ... 00616000
  784. DC AL4(*+4) ... 00617000
  785. * 00618000
  786. GETOUT L R14,RETREG RESTORE R14 = RETURN-REGISTER 00619000
  787. LR R15,R11 ERROR INDICATOR INTO R15, 00620000
  788. BR R14 AND 'PUNT', ALL FINISHED. 00621000
  789. * 00622000
  790. EJECT 00623000
  791. *********************************************************************** 00624000
  792. * 00625000
  793. * ERROR PROCESSING ROUTINES AND MESSAGES 00626000
  794. * 00627000
  795. ********************************************************************** 00628000
  796. SPACE 00629000
  797. ERR1 LR R4,R1 00630000
  798. LA R13,70 00631000
  799. LA R6,BADPARM 00632000
  800. LA R11,24 RET CODE OF 24 @VA09741 00633000
  801. B TELLALL 00634000
  802. SPACE 00635000
  803. ERR2 LA R13,2 00636000
  804. LA R6,NTFND 00637000
  805. LA R11,28 00638000
  806. CLI SAVEDR1,X'0B' LISTFILE called from cmd line? HRC309DS 00639100
  807. BE TELL yes, issue error message HRC309DS 00639200
  808. CLI SAVEDR1,X'0D' from EXEC with '&CONTROL MSG'? HRC309DS 00639300
  809. BE TELL yes, issue error message HRC309DS 00639400
  810. B GETOUT NO MSG IF CALLED AS A FUNCTION, @VM01710 00639500
  811. * OR FROM EXEC WITH '&CONTROL NOMSG' ON. 00639600
  812. SPACE 00640000
  813. ERR3 LA R13,69 00641000
  814. LA R11,36 00642000
  815. MVC ACCMSG+6(1),DESMODE 00643000
  816. LA R6,NOTACC 00644000
  817. B TELL 00645000
  818. SPACE 00646000
  819. ERR4 LA R13,3 00647000
  820. LA R11,24 00648000
  821. LA R6,BADOPT 00649000
  822. B TELLALL 00650000
  823. SPACE 00651000
  824. ERR5 LA R13,37 00652000
  825. LA R11,36 00653000
  826. LA R6,NOTWR 00654000
  827. B TELL 00655000
  828. SPACE 00656000
  829. ERR6A LA R1,DESMODE 00657000
  830. ERR6 LR R4,R1 00658000
  831. LA R11,24 00659000
  832. LA R13,48 00660000
  833. LA R6,BADMODE 00661000
  834. B TELLALL 00662000
  835. SPACE 00663000
  836. ERR7 LA R6,CONFLCT1 00664000
  837. B ERRCNFLC HRC005DS 00665990
  838. SPACE 00668000
  839. ERR8 LA R6,CONFLCT2 00669000
  840. B ERRCNFLC HRC005DS 00670090
  841. SPACE , HRC005DS 00670180
  842. ERR8A LA R6,CONFLCT3 HRC005DS 00670270
  843. B ERRCNFLC HRC005DS 00670360
  844. SPACE , HRC005DS 00670450
  845. ERR8B LA R6,CONFLCT4 HRC005DS 00670540
  846. B ERRCNFLC HRC005DS 00670630
  847. SPACE , HRC005DS 00670720
  848. ERR8C LA R6,CONFLCT5 HRC005DS 00670810
  849. B ERRCNFLC HRC321DS 00670820
  850. ERR8D LA R6,CONFLCT6 FIFO and LIFO conflict HRC321DS 00670830
  851. B ERRCNFLC HRC321DS 00670840
  852. ERR8E LA R6,CONFLCT7 FIFO and HEADER conflict HRC321DS 00670850
  853. B ERRCNFLC HRC321DS 00670860
  854. ERR8F LA R6,CONFLCT8 LIFO and HEADER conflict HRC321DS 00670870
  855. B ERRCNFLC HRC321DS 00670880
  856. ERR8G LA R6,CONFLCT9 STACK and HEADER conflict HRC321DS 00670890
  857. ERRCNFLC LA R11,24 HRC005DS 00670900
  858. LA R13,66 HRC005DS 00670990
  859. SPACE 2 00672000
  860. TELL DMSERR MF=(E,ERRLIST1),TEXTA=(6),LET=E,NUM=(13) 00673000
  861. SPACE 00674000
  862. B GETOUT 00675000
  863. SPACE 2 00676000
  864. TELLALL DMSERR MF=(E,ERRLIST1),TEXTA=(6),LET=E,NUM=(13), X00677000
  865. SUB=(CHARA,(4)) 00678000
  866. B GETOUT 00679000
  867. SPACE 00680000
  868. ERR9 DMSERR NUM=105,LET=S,SUB=(DEC,(15)), X00681000
  869. TEXT='Error ''..'' writing file ''CMS EXEC A1'' on disk' 00682000
  870. LA R11,100 P3017 00683000
  871. B GETOUT P3017 00684000
  872. SPACE 00685000
  873. * ERROR MESSAGES AND LENGTHS 00686000
  874. SPACE 00687000
  875. NOTWR DC AL1(L'WRMSG) 00688000
  876. WRMSG DC C'Disk ''A'' is read-only' HRC321DS 00689000
  877. * 00690000
  878. NTFND DC AL1(L'NTFNDMSG) 00691000
  879. NTFNDMSG DC C'File not found' HRC321DS 00692000
  880. * 00693000
  881. NOTACC DC AL1(L'ACCMSG) 00694000
  882. ACCMSG DC C'Disk ''Z'' not accessed' HRC321DS 00695000
  883. * 00696000
  884. BADPARM DC AL1(L'PARMSG) 00697000
  885. PARMSG DC C'Invalid parameter ''........''' HRC321DS 00698000
  886. * 00699000
  887. BADOPT DC AL1(L'OPTMSG) 00700000
  888. OPTMSG DC C'Invalid option ''........''' HRC321DS 00701000
  889. * 00702000
  890. BADMODE DC AL1(L'MODEMSG) 00703000
  891. MODEMSG DC C'Invalid filemode ''........''' HRC321DS 00704000
  892. * 00705000
  893. CONFLCT1 DC AL1(L'CONFMSG1) 00706000
  894. CONFMSG1 DC C'''APPEND'' and ''EXEC'' are conflicting options' 00707000
  895. * 00708000
  896. CONFLCT2 DC AL1(L'CONFMSG2) 00709000
  897. CONFMSG2 DC C'''HEADER'' and ''NOHEADER'' are conflicting options' 00710000
  898. * HRC005DS 00710090
  899. CONFLCT3 DC AL1(L'CONFMSG3) HRC005DS 00710180
  900. CONFMSG3 DC C'''SHORTDATE'' and ''ISODATE'' are conflicting options'*00710270
  901. , HRC005DS 00710360
  902. CONFLCT4 DC AL1(L'CONFMSG4) HRC005DS 00710450
  903. CONFMSG4 DC C'''SHORTDATE'' and ''FULLDATE'' are conflicting options*00710540
  904. ' , HRC005DS 00710630
  905. CONFLCT5 DC AL1(L'CONFMSG5) HRC005DS 00710720
  906. CONFMSG5 DC C'''FULLDATE'' and ''ISODATE'' are conflicting options' *00710810
  907. , HRC005DS 00710900
  908. CONFLCT6 DC AL1(L'CONFMSG6) HRC321DS 00710905
  909. CONFMSG6 DC C'''FIFO'' and ''LIFO'' are conflicting options' 00710910
  910. * HRC321DS 00710915
  911. CONFLCT7 DC AL1(L'CONFMSG7) HRC321DS 00710920
  912. CONFMSG7 DC C'''FIFO'' and ''HEADER'' are conflicting options' 00710925
  913. * HRC321DS 00710930
  914. CONFLCT8 DC AL1(L'CONFMSG8) HRC321DS 00710935
  915. CONFMSG8 DC C'''LIFO'' and ''HEADER'' are conflicting options' 00710940
  916. * HRC321DS 00710945
  917. CONFLCT9 DC AL1(L'CONFMSG9) HRC321DS 00710950
  918. CONFMSG9 DC C'''STACK'' and ''HEADER'' are conflicting options' 00710955
  919. SPACE 2 00711000
  920. ERRLIST1 DMSERR MF=L 00712000
  921. SPACE 2 00713000
  922. EJECT 00714000
  923. *********************************************************************** 00715000
  924. * 00716000
  925. * STORAGE AREA AND DEFINITIONS 00717000
  926. * 00718000
  927. ********************************************************************** 00719000
  928. SPACE 00720000
  929. SPACE 00721000
  930. HEADMS DC C'Filename Filetype Fm Format Recs Blocks ' V0027 00722100
  931. HEADATE2 DC C' Date Time Label ' HRC320DS 00723040
  932. DS 0F 00724000
  933. DTYPECMS DC CL8'TYPLIN' 00725000
  934. DC AL1(1) 00726000
  935. DC AL3(TYPLOC) 00727000
  936. DC C'B' 00728000
  937. DC AL3(72) 00729000
  938. DTYPELEN EQU *-1 00730000
  939. * 00731000
  940. DS 0F PARAMETER-LIST TO ERASE OLD "CMS EXEC" .. 00732000
  941. ERASEP DC CL8'ERASE' ... 00733000
  942. CMSX DC CL8'CMS' ... 00734000
  943. DC CL8'EXEC' ... 00735000
  944. DMODE DC CL2'A ' ... 00736000
  945. * 00737000
  946. DS 0F PARAMETER-LIST TO 'WRBUF' NEW "CMS EXEC" 00738000
  947. DWRBUF DC CL8'WRBUF' ... 00739000
  948. DC CL8'CMS' 00740000
  949. DC CL8'EXEC' 00741000
  950. DC CL2'A1' 00742000
  951. DC H'0' 00743000
  952. DC A(TYPLOC-7) 00744000
  953. DC F'80' 00745000
  954. DC CL2'F' 00746000
  955. DC H'1' 00747000
  956. DC CL7' &&1 &&2 ' 00748000
  957. LWRB EQU *-DWRBUF (NO. OF BYTES FOR MOVING) 00749000
  958. * 00750000
  959. RPATRN DC X'402020202120' (FOR NUMBER OF ITEMS OR RECORDS) 00751000
  960. DPATRN DC X'F021202020' (FOR DATE .... HRC005DS 00752490
  961. TPATRN DC X'4021207A2020' ... AND TIME) HRC005DS 00752980
  962. CHARDATE DC C' MMDDCCYY' HRC005DS 00753470
  963. * 00754000
  964. SAVEDR1 DS 1F R1 AT INPUT SAVED HERE @VM01710 00754100
  965. RETREG DS 1F RETURN-LOCATION 00755000
  966. DEC DS 1D FOR DECIMAL NUMBER CONVERSION 00756000
  967. NAME1 DS 2F 00757000
  968. NAME2 DS 2F 00758000
  969. PRINTENT DS 1F 00759000
  970. PRINTLEN DS 1C 00760000
  971. SPACE 00761000
  972. * 'LIVE' TYPLIN OR WRBUF PARAMETER-LIST... 00762000
  973. DS 0F 00763000
  974. TYPECMS DC CL9' ' 00764000
  975. BUFLOC DC AL3(*-*) 00765000
  976. CHARB DC A(0) 00766000
  977. DC CL31' ' 00767000
  978. TYPLOC DC CL27' ' 00768000
  979. DC CL47' ' better formatted header HRC320DS 00769000
  980. PAD DC 4F'0' 00770000
  981. SPACE 1 HRC321DS 00770050
  982. * ATTN parameter list to stack the output HRC321DS 00770100
  983. DS 0F HRC321DS 00770150
  984. STACKPL DC CL8'ATTN' HRC321DS 00770200
  985. FIFOLIFO DS CL4 HRC321DS 00770250
  986. STACKLEN DS AL1 HRC321DS 00770300
  987. STACKADR DS AL3 HRC321DS 00770350
  988. * 00771000
  989. DESMODE DC CL8'A' V0205 00772100
  990. FLAGS DC F'0' HRC005DS 00773590
  991. FLAG EQU FLAGS,1 HRC005DS 00774180
  992. FLAG2 EQU FLAGS+1,1 HRC005DS 00774770
  993. FLAG3 EQU FLAGS+2,1 HRC005DS 00775360
  994. FLAG4 EQU FLAGS+3,1 HRC005DS 00775950
  995. * 00777000
  996. DFLTENT DC A(PMOD) 00778000
  997. DFLTLEN DC X'16' 00779000
  998. * 00780000
  999. OK81 DC X'81' 00781000
  1000. OK00 DC X'00' @VA06227 00781500
  1001. * 00782000
  1002. NAME EQU TYPLOC HRC005DS 00783490
  1003. TYPE EQU TYPLOC+9 00784000
  1004. MODE EQU TYPLOC+18 better formatted header HRC320DS 00785000
  1005. FORM EQU TYPLOC+22 better formatted header HRC320DS 00786990
  1006. ITM EQU TYPLOC+30 don't truncate number of blocks HRC320DS 00787980
  1007. NOREC EQU TYPLOC+37 don't truncate number of blocks HRC320DS 00788970
  1008. DATE EQU TYPLOC+45 HRC005DS 00789960
  1009. TIME EQU TYPLOC+55 HRC005DS 00790950
  1010. VOLID EQU TYPLOC+63 better formatted header HRC320DS 00791940
  1011. * 00793000
  1012. * FLAG SETTINGS 00794000
  1013. MODENUM EQU X'80' EXPLICIT MODENUMBER REFERENCE REQUIRED 00795000
  1014. USERMODE EQU X'40' USER SPECIFIED MODE V0042 00796100
  1015. HEAD EQU X'20' HEADING IS REQUIRED 00797000
  1016. NOHEAD EQU X'10' HEADING IS TO BE SUPPRESSED 00798000
  1017. APPND EQU X'08' APPEND TO EXISTING CMS EXEC FILE 00799000
  1018. CMSEXEC EQU X'04' CMS EXEC FILE REQUESTED 00800000
  1019. HEADINIT EQU X'02' HEADER INITIALIZATION FLAG. V0027 00801100
  1020. FOUNDIT EQU X'01' NO FILE FOUND IF OFF 00802000
  1021. * 00803000
  1022. * FLAG2 SETTINGS HRC005DS 00803100
  1023. FLG2ISO EQU X'80' ISO DATE WANTED YYYY-MM-DD HRC005DS 00803200
  1024. FLG2SHRT EQU X'40' SHORT DATE WANTED MM/DD/YY HRC005DS 00803300
  1025. FLG2FULL EQU X'20' FULL DATE WANTED MM/DD/YYYY HRC005DS 00803400
  1026. FLG2STCK EQU X'10' stack results HRC321DS 00803420
  1027. FLG2FIFO EQU X'08' stack results FIFO HRC321DS 00803440
  1028. FLG2LIFO EQU X'04' stack results LIFO HRC321DS 00803460
  1029. FLG2LIFI EQU X'02' LIFO or FIFO option handled HRC321DS 00803480
  1030. * HRC005DS 00803500
  1031. LTORG 00804000
  1032. * 00805000
  1033. TABIMAGE DSECT 00806000
  1034. TRUNCLEN DS AL1 00807000
  1035. OPTLEN DS AL1 00808000
  1036. OPT DS CL8 00809000
  1037. BRAD DS AL2 00810000
  1038. EJECT 00811000
  1039. NUCON 00812000
  1040. ADT 00813000
  1041. REGEQU 00814000
  1042. END 00815000