Table of Contents

DMSTYP Source

References

Source Listing

DMSTYP.ASSEMBLE.txt
  1. TYP TITLE 'DMSTYP (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00010000
  4. * MODULE NAME: 00011000
  5. * 00012000
  6. * DMSTYP (TYPE) 00013000
  7. * 00014000
  8. * FUNCTION: 00015000
  9. * 00016000
  10. * TYPE COMMAND. TO TYPE ALL OR A SPECIFIED PART OF A 00017000
  11. * GIVEN FILE ON THE USER'S CONSOLE. 00018000
  12. * 00019000
  13. * ATTRIBUTES: 00020000
  14. * 00021000
  15. * DISK RESIDENT, TRANSIENT 00022000
  16. * NOTE: TYPE MUST BE GENMOD'D WITH THE SYSTEM OPTION 00022100
  17. * 00023000
  18. * ENTRY POINTS: 00024000
  19. * 00025000
  20. * TYPE 00026000
  21. * 00027000
  22. * ENTRY CONDITIONS: 00028000
  23. * 00029000
  24. * TYPE - 00030000
  25. * 00031000
  26. * GPR1 = A(PLIST) 00032000
  27. * PLIST = CL8 - CALLED ROUTINE 00033000
  28. * CL8 - FILENAME 00034000
  29. * CL8 - FILETYPE 00035000
  30. * <CL8 - FILEMODE> 00036000
  31. * CL8 - BEGINNING RECORD NUMBER, DEFAULT = FIRST RECORD 00037000
  32. * CL8 - ENDING RECORD NUMBER, DEFAULT = LAST RECORD 00038000
  33. * 00039000
  34. * OPTIONAL - 00040000
  35. * CL8'(' 00041000
  36. * CL8'COL' MARGIN KEYWORD 00042000
  37. * CL8'LL-RR' "LEFT" AND "RIGHT" MARGINS 00043000
  38. * CL8'MEMBER',CL8'NAME/*' 00044000
  39. * CL8'HEX' 00045000
  40. * 00046000
  41. * XL8 - FENCE 00047000
  42. * 00048000
  43. * EXIT CONDITIONS: 00049000
  44. * 00050000
  45. * NORMAL - 00051000
  46. * GPR15 = 0 00052000
  47. * 00053000
  48. * ERROR - 00054000
  49. * GPR15 = 20: ILLEGAL CHAR. IN FILEID V0025 00055100
  50. * 24: INVALID PARAMETER V0025 00055200
  51. * INCOMPLETE FILEID V0025 00055300
  52. * INVALID LINE NUMBER V0025 00055400
  53. * NO OPTION SPECIFIED V0025 00055500
  54. * COL. EXCEEDS RECORD LENGTH V0025 00055600
  55. * 28: FILE NOT FOUND V0025 00055700
  56. * 32: FILE NOT A LIBRARY V0025 00055800
  57. * NO ENTRIES IN LIBRARY V0025 00055900
  58. * 100: ERROR READING FILE V0025 00056000
  59. *| 00068000
  60. *|CALLS TO OTHER ROUTINES: 00069000
  61. *| 00070000
  62. *| DMSSTT,DMSBRD,DMSCWR,DMSFNS,DMSFRE 00071000
  63. *| 00072000
  64. *|EXTERNAL REFERENCES: 00073000
  65. *| 00074000
  66. *| NUCON 00075000
  67. *| 00076000
  68. *|TABLES/WORKAREAS: 00077000
  69. *| GETMAIN 00078000
  70. *| 00079000
  71. *| 00080000
  72. *|REGISTER USAGE: 00081000
  73. *| 00082000
  74. *| GPR1 = A(PLIST) 00083000
  75. *| GPR12 = ADDRESSABILITY 00084000
  76. *| 00085000
  77. *| GPR3- INTERNAL POINTER 00086000
  78. *| GPR2,4-10 - WORK REGS 00087000
  79. *| GPR14 - LINKAGE AND RETURN 00088000
  80. *| GPR15 - RETURN CODE 00089000
  81. *|NOTES: 00090000
  82. *| 00091000
  83. *| NONE 00092000
  84. *| 00093000
  85. *|OPERATION: 00094000
  86. *| 00095000
  87. *| TYPE CHECKS THE FILENAME AND FILETYPE TO ENSURE THEY 00096000
  88. *| ARE BOTH PRESENT AND NOT ASTERISKS. THEN THE STATE 00097000
  89. *| FUNCTION PROGRAM IS CALLED TO VERIFY THE EXISTENCE OF 00098000
  90. *| THE GIVEN FILE AND TO DETERMINE THE NUMBER OF ITEMS, 00099000
  91. *| FIXED OR VARIABLE FILETYPE, ETC. IF STATE CANNOT 00100000
  92. *| FIND THE FILE, A MESSAGE IS GIVEN. 00101000
  93. *| 00102000
  94. *| 00103000
  95. *| IF THE STARTING AND/OR ENDING ITEM NUMBER HAS BEEN 00104000
  96. *| SUPPLIED, TYPE SETS THE DMSBRD PARAMETER LIST AS 00105000
  97. *| NEEDED TO READ THE ITEMS DESIRED. 00106000
  98. *| 00107000
  99. *| TYPE THEN CALLS DMSBRD TO READ ITEMS ONE AT A TIME 00108000
  100. * INTO THE BUFFER. THESE ITEMS ARE THEN 00109000
  101. *| PRINTED ONLINE VIA CALLS TO CONWRITE 00110000
  102. *| WITH THE DESIRED OR ACTUAL LINE-LENGTH USED, UNTIL THE 00111000
  103. * PRINTING IS COMPLETE. 00112000
  104. *| 00113000
  105. *| IF THE OPTION MEMBER IS SPECIFIED, IT WILL BE ASSUMED 00114000
  106. *| THAT THE SPECIFIED FILE IS A SIMULATED PARTITIONED 00115000
  107. *| DATA SET (PDS). THE DICTIONARY FOR THE DATA SET IS 00116000
  108. *| READ TO PROVIDE THE SPECIFIED MEMBER NAME, UNLESS 00117000
  109. *| 'MEMBER *' IS SPECIFIED, WHICH CAUSES THE 00118000
  110. *| ENTIRE LIBRARY TO BE TYPED. IF "NAME IS SPECIFIED 00119000
  111. * THE DICTIONARY IS SEARCHED AND THE LOCATION OF 00120000
  112. * "NAME" IS SET INTO THE DMSBRD PARAMETER LIST. 00121000
  113. * READING AND TYPING PROCEED AS ABOVE. 00122000
  114. *| 00123000
  115. *| 00124000
  116. *| IF THE OPTION HEX IS ENTERED, EACH BUFFER LINE WILL 00125000
  117. * CONVERTED TO EBCDIC, A HEADER IN THE FORM 00126000
  118. * RECORD XXX LENGTH= XXX 00127000
  119. * WILL BE TYPED AND THE FILE WILL BE TYPED 00128000
  120. * IN AN HEXADECIMAL FORMAT. 00129000
  121. *| IN AN HEXADECIMAL FORMAT 00130000
  122. *| 00131000
  123. *. 00132000
  124. *| 00133000
  125. **********************************************************************, 00134000
  126. *. 00135000
  127. EJECT 00136000
  128. ********************************************************************** 00137000
  129. * 00138000
  130. * PROCESS PARAMETER LIST 00139000
  131. * 00140000
  132. ********************************************************************** 00141000
  133. DMSTYP START X'E000' TRANSIENT AREA 00142000
  134. TYPE EQU DMSTYP 00143000
  135. ENTRY TYPE COMMON NAME 00144000
  136. BALR BASE,0 00145000
  137. USING *,BASE 00146000
  138. USING NUCON,R0 00147000
  139. SSM =X'FF' ENABLE INTERRUPTS 00148000
  140. ST R14,SAVRET 00149000
  141. LA R2,0 CLEAR WORK AREA 00150000
  142. ST R2,START * 00151000
  143. STC R2,SWS * AND SWITCHES 00152000
  144. MVC RECNO(4),=F'1' INITIALIZE RECORD COUNT 00153000
  145. LR PARAM,1 SAVE PARAMETER LIST 00154000
  146. MVI COLSET,X'00' SET COL OPTION SW OFF. @VA04892 00154500
  147. CLI 8(1),X'FF' CHECK IF NAME SUPPLIED 00155000
  148. BC 8,ERR1 00156000
  149. CLI 8(R1),C'*' CHECK FOR '*' (ILLEGAL) 00157000
  150. BE ERR7 ILLEGAL IF = '*' . 00158000
  151. CLI 16(1),X'FF' 00159000
  152. BC 8,ERR8 00160000
  153. CLI 16(R1),C'*' CHECK FOR '*' (ILLEGAL) 00161000
  154. BE ERR7 ILLEGAL IF = '*' 00162000
  155. MVC FNAME(16),8(1) GET NAME AND TYPE 00163000
  156. TM 24(R1),X'F0' IS IT NUMERIC OR FENCE 00164000
  157. BO CK1 YES 00165000
  158. CLI 24(R1),C'*' IS IT ASTERISK 00166000
  159. BO CK1A YES 00167000
  160. CLI 24(R1),C'(' IS IT START OF OPTS 00168000
  161. BE CK1 YES 00169000
  162. CK1A MVC FMODE(2),24(R1) INITIALIZE MODE 00170000
  163. LA PARAM,32(R1) INCR POINTER 00171000
  164. B CK2 00172000
  165. CK1 MVC FMODE(2),=CL2'A ' INITIALIZE MODE TO A 00173000
  166. LA PARAM,24(R1) SET POINTER 00174000
  167. CK2 MVC SVCLST,=CL8'STATE' CALL STATE 00175000
  168. LA 1,SVCLST 00176000
  169. SSM TYPDIS DISABLE INTERRUPTS @VA06258 00176500
  170. L R15,ASTATE STATE @V305066 00177000
  171. BALR R14,R15 ... @V305066 00177100
  172. SSM TYPENA ENABLE INTERRUPTS @VA06258 00177150
  173. BNZ ERR3 FILE NOT FOUND @V305066 00177200
  174. L AC,ADD1 GET LOC. OF FST COPY 00179000
  175. MVC FMODE(2),24(AC) GET MODE 00180000
  176. MVC FVFLAG(1),30(AC) SAVE FIXED-VARIABLE FLAG 00181000
  177. MVC BUFSZ(4),32(AC) STORE ACTUAL LENGTH OF ITEM 00182000
  178. MVC JLENGTH(4),32(AC) AND 'DESIRED' LENGTH OF ITEM. 00183000
  179. * GET STORAGE FOR RECORD 00184000
  180. L R1,32(AC) SIZE OF RECORD 00185000
  181. LA R0,7(R1) ROUND NUMBER UP 00186000
  182. SRL R0,3 IN DOUBLE WORDS 00187000
  183. ST R0,STRG SAVE LENGTH 00188000
  184. DMSFREE DWORDS=(0) 00189000
  185. ST R1,AREA SAVE ADDRESS OF STORAGE 00190000
  186. LA FIRST,1 SET TO START WITH LINE 1, 00191000
  187. STH FIRST,NUMITEMS SET FOR 1 ITEM IN CASE NECESSARY FOR V 00192000
  188. LH LAST,26(,AC) SET TO END WITH LAST ITEM IN FILE. 00193000
  189. N LAST,=F'65535' DON'T GET FOOLED BY LARGE HALFWORD 00194000
  190. CLI 0(PARAM),X'FF' IS STARTING LINE SUPPLIED 00195000
  191. BC 8,CKLIM1 NO, START TYPING @VA01053 00196100
  192. CLI 0(PARAM),C'(' IS IT START OF OPTIONS 00197000
  193. BNE CK3 NO 00198000
  194. LA PARAM,8(PARAM) INCR POINTER 00199000
  195. B CKOPTS1 GO TO SET UP OPTIONS 00200000
  196. CK3 CLI 0(PARAM),C'*' IS IT = * ? 00201000
  197. BE CHEKENDL BE IF YES, CHECK END-LINE. 00202000
  198. LA AC,0(,PARAM) CALL INTERNAL ROUTINE TO CONVERT 00203000
  199. BAL RET,CONVRT ... 00204000
  200. CR AC,LAST CHECK AGAINST DATA END 00205000
  201. BH ERR11A GIVE ERROR MSG 00206000
  202. LTR AC,AC WAS NUMBER SPECIFIED AS ZERO 00207000
  203. BZ ERR11A ERROR IF IT WAS 00208000
  204. LR FIRST,AC SET STARTING LINE NO. 00211000
  205. ST AC,RECNO INTITIALIZE RECORD NUMBER 00212000
  206. CHEKENDL EQU * CHECK FOR END-LINE... 00213000
  207. CLI 8(PARAM),X'FF' IS LAST LINE SUPPLIED 00214000
  208. BC 8,PSTART NO, START PRINTING 00215000
  209. CLI 8(PARAM),C'(' IS BEGINNING OPTIONS 00216000
  210. BNE CHEK NO 00217000
  211. LA PARAM,16(PARAM) 00218000
  212. B CKOPTS1 GO SEE WHAT OPTIONS THERE ARE 00219000
  213. CHEK LA PARAM,8(PARAM) INCR POINTER 00220000
  214. CLI 0(PARAM),C'*' IS IT = '*' ? 00221000
  215. BE CHEKLIM BE IF YES, GO CHECK LINE LIMIT 00222000
  216. LA AC,0(,PARAM) CALL CONVERT.... 00223000
  217. BAL RET,CONVRT ... 00224000
  218. LTR AC,AC ZERO? 00225000
  219. BE ERR11A ERROR IF IT IS 00226000
  220. C AC,=F'65535' IS LINE WITHIN LIMIT? V0696 00227100
  221. BH ERR11A ERROR IF IT IS NOT P0933 00228000
  222. CR FIRST,AC IS FIRST RECNO > LAST RECNO? @VA03455 00228100
  223. BH ERR11A YES, ERROR... @VA03455 00228200
  224. OI SWS,EOFWNT INDICATE WE WANT EOF MESSAGE V0695 00229100
  225. LR LAST,AC SET LAST LINE NO. 00231000
  226. CHEKLIM CLI 8(PARAM),X'FF' IS THIS END OF LIST? 00232000
  227. BE PSTART BE IF YES, START PRINTING. 00233000
  228. EJECT 00234000
  229. LA PARAM,8(PARAM) UPDATE POINTER 00235000
  230. CLI 0(PARAM),C'(' START OF OPTIONS ? 00236000
  231. BNE ERR9 NO-THEN ERROR 00237000
  232. LA PARAM,8(PARAM) UPDATE POINTER TO 1ST OPTION 00238000
  233. B CKOPTS1 00239000
  234. B ERR9 ERROR IF HERE 00240000
  235. * 00241000
  236. CKOPTS LA PARAM,24(PARAM) POINT TO OPTIONS 00242000
  237. CKOPTS1 CLI 0(PARAM),C')' END OF PARMS 00243000
  238. BE CKLIM1 YES 00244000
  239. CLI 0(PARAM),X'FF' END 00245000
  240. BE CKLIM1 YES 00246000
  241. CLC 0(8,PARAM),=CL8'COL' IS KEYWORD="COL" 00247000
  242. BE SETCOL YES 00248000
  243. CLC 0(8,PARAM),=CL8'MEMBER' IS KEYWORD="MEMBER" 00249000
  244. BE SETMEMB YES 00250000
  245. CLC 0(8,PARAM),=CL8'MEM' 00251000
  246. BE SETMEMB 00252000
  247. CLC 0(8,PARAM),=CL8'HEX' IS KEYWORD ="HEX" 00253000
  248. BNE ERR9 IF NOT IT IS ERROR 00254000
  249. ********************************************************************** 00255000
  250. * 00256000
  251. * "HEX"OPTION WANTED 00257000
  252. SETHEX OI SWS,HEX TURN ON HEX SWITCH 00258000
  253. LA PARAM,8(PARAM) INCR POINTER 00259000
  254. B CKOPTS1 CONTINUE SCAN 00260000
  255. ********************************************************************** 00261000
  256. * 00262000
  257. * "COL" KEYWORD PRESENT - OPTION CAN ASSUME 2 FORMS @VA01248 00263000
  258. * 1. LIMITS SPECIFIED IN L-R FORM. @VA01248 00263100
  259. * SCAN FOR DELIMITER OF "-" OR OF BLANK - IF @VA01248 00263200
  260. * BLANK - ASSUME AS END LENGTH LRECL @VA01248 00263300
  261. * 2. FOR LARGE RECS L-R FORM MAY EXCEED 8 POS. @VA01248 00263400
  262. * "COL" OPTION MAY USE 2 PARAMETER DOUBLE WORDS. @VA01248 00263500
  263. * FIRST PARM SPECIFIES START COLUMN AND SECOND @VA01248 00263600
  264. * PARM SPECIFIES STOP LOCATION. @VA01248 00263700
  265. ********************************************************************** 00266000
  266. SETCOL LA R7,6 SET COUNTER @VA01248 00267000
  267. CLI COLSET,X'01' COL SPECIFIED ALREADY? @VA10595 00267100
  268. BE ERR9 YES, ERROR. @VA10595 00267200
  269. MVI COLSET,X'01' SET COL OPTION SW ON. @VA04892 00267500
  270. MVC COLTEMP,8(PARAM) COPY FIELD 00268000
  271. LA R10,COLTEMP POINT TO COPY FIELD 00269000
  272. CLI 0(R10),X'FF' IS IT FENCE 00270000
  273. BE ERR10 YES 00271000
  274. CLI 0(R10),C')' IS IT END 00272000
  275. BE ERR10 YES 00273000
  276. LA PARAM,8(PARAM) UPDATE POINTER 00274000
  277. SETCOL1 CLI 0(R10),C'-' IS IT DELIMITER 00275000
  278. BE SETCOL2 YES 00276000
  279. CLI 0(R10),X'40' IS IT BLANK 00277000
  280. BE NEXTPARM TWO FORMS FOR 'COL' OPTION @VA01248 00278000
  281. MVI FIRSTSW,X'01' INDICATE IF CODE EXECUTED @VA01248 00278100
  282. LA R10,1(R10) INCR POINTER 00279000
  283. BCT R7,SETCOL1 00280000
  284. LA R0,COLTEMP POINT TO ERROR FIELD 00281000
  285. B ERR9B GO TELL USER ABOUT MISTAKE 00282000
  286. NEXTPARM CLI FIRSTSW,X'01' VALID OR INVALID DELIMITER? @VA01248 00282100
  287. BNE SETCOL3 INVALID @VA01248 00282200
  288. CLI 8(PARAM),X'FF' @VA01248 00282300
  289. BE SETCOL3 L-R FORM @VA01248 00282400
  290. CLI 8(PARAM),X'F0' NUMERIC? @VA01248 00282500
  291. BL SETCOL3 'COL' OPTION IN FORM L-R @VA01248 00282600
  292. MVI PARM2SW,X'01' SW INDICATING SECOND FORM @VA01248 00282700
  293. B SETCOL3 @VA01248 00282800
  294. * 00283000
  295. SETCOL2 MVI 0(R10),X'40' SET LIMIT FOR CONVERT ROUTINE 00284000
  296. MVI FIRSTSW,X'00' TURN OFF @VA01248 00284100
  297. SETCOL3 LA AC,COLTEMP POINT TO FIELD 00285000
  298. BAL RET,CONVRT 00286000
  299. LTR AC,AC IS START = 0 00287000
  300. BZ ERR9B YES,ERROR 00288000
  301. C AC,JLENGTH IS REQUEST GREATER THAN LRECL? 00289000
  302. BH ERR12 ERROR IF IT IS 00290000
  303. BCTR AC,0 DECR FOR START LOCATION 00291000
  304. ST AC,START CONVERTED START LINE LOCATION 00292000
  305. CLI PARM2SW,X'01' @VA01248 00292100
  306. BE NEWFORM @VA01248 00292200
  307. CLI 1(R10),C' ' IS END COL SPECIFIED? 00293000
  308. BE SETCOL4 NO, USE LRECL 00294000
  309. LA AC,1(R10) POINT TO NEXT 00295000
  310. CVTSEC BAL RET,CONVRT CONVERT STOP LINE LOC @VA01248 00296000
  311. C AC,START END LESS THAN START? @VA08704 00296250
  312. BH CKRECL NO, CONTINUE @VA10594 00296500
  313. CLI PARM2SW,X'01' SECOND FORM USED? @VA08704 00296750
  314. BNE ERR9B NO, DISPLAY ERROR @VA08704 00297000
  315. MVI PARM2SW,X'00' RESET INDICATOR @VA08704 00297250
  316. LR R4,R3 POINT TO END PARAMETER @VA08704 00297500
  317. SH R4,H8 RETURN TO START PARAMETER @VA08704 00297750
  318. B ERR9C WRITE ERROR MESSAGE @VA08704 00298000
  319. CKRECL EQU * @VA08704 00298250
  320. MVI PARM2SW,X'00' RESET INDICATOR @VA08704 00298500
  321. C AC,JLENGTH IS REQUEST GREATER THAN LRECL 00299000
  322. BH ERR12 ERROR IF IT IS 00300000
  323. ST AC,JLENGTH 00301000
  324. SETCOL4 LA PARAM,8(PARAM) NEXT LOCATION 00302000
  325. B CKOPTS1 CONTINUE 00303000
  326. NEWFORM EQU * @VA08704 00303100
  327. LA PARAM,8(PARAM) INCREM PTR @VA01248 00303200
  328. MVC COLTEMP,0(PARAM) @VA01248 00303300
  329. LA AC,COLTEMP @VA01248 00303400
  330. B CVTSEC CONVERT STOP LINE LOC @VA01248 00303500
  331. ********************************************************************** 00304000
  332. * 00305000
  333. ** "MEMBER" OPTION SPECIFIED- TURN ON SWITCHES FOR MEMBER, IF NAME 00306000
  334. * SPECIFIED SAVE 00307000
  335. * 00308000
  336. SETMEMB OI SWS,MEMB TURN ON SWITCH 00309000
  337. CLI 8(PARAM),C'*' ALL MEMBERS WANTED ? 00310000
  338. BE SETMEMB1 YES 00311000
  339. MVC NAME1(8),8(PARAM) SAVE NAME 00312000
  340. CLI 8(PARAM),X'FF' IS IT FENCE 00314000
  341. BE ERR10 YES 00315000
  342. CLI 8(PARAM),C')' IS IT END 00316000
  343. BE ERR10 YES 00317000
  344. OI SWS,NAME TURN ON NAME SWITCH 00318000
  345. SETMEMB1 LA PARAM,16(PARAM) ADVANCE POINTER 00319000
  346. B CKOPTS1 00320000
  347. * 00321000
  348. CKLIM1 L R4,JLENGTH GET LERECL OR SPECIFIED LENGTH 00322000
  349. TM SWS,HEX PRINTING HEX RECORDS? P3058 00323000
  350. BO CKLIM2 YES,SKIP CHECKING P3058 00324000
  351. S R4,START CALCULATE LENGTH @VA01248 00325000
  352. C R4,M133 IS IT GREATER THAN 133 @VA01248 00325100
  353. BNH STLEN NO @VA01248 00325200
  354. LA R4,133 YES @VA01248 00325300
  355. B STLEN @VA01248 00325400
  356. CKLIM2 S R4,START CALCULATE LENGTH 00328000
  357. STLEN ST R4,JLENGTH THIS IS LENGTH FOR TYPE OUT @VA01248 00329000
  358. EJECT 00330000
  359. ********************************************************************** 00331000
  360. * 00332000
  361. * START PRINTING 00333000
  362. * 00334000
  363. ********************************************************************** 00335000
  364. PSTART L R1,AREA SET UP STARTING ARES 00336000
  365. MVC ADD2(3),AREA+1 SET IN PARM LIST 00337000
  366. ST 1,ADD1 FOR RDBUF. 00338000
  367. A R1,START ADD BEGINNING COLUMN 00339000
  368. ST R1,ADD2-1 TYPE OUT AREA 00340000
  369. * (NOT NECESSARY TO CALL 'POINT') 00341000
  370. MVC SVCLST,=CL8'RDBUF' SET P-LIST TO CALL RDBUF 00342000
  371. * 00343000
  372. MVI CARCNT,00 INITIALIZE TO PRINT CARRIAGE RETURN 00344000
  373. LA 1,CARET CARRIAGE RETURN BEFORE PRINTING 00345000
  374. SVC X'CA' ... 00346000
  375. * 00347000
  376. LOOP0A TM SWS,MEMB PROCESSING A REQUEST TO READ MEMBER? 00348000
  377. BO MEMBS YES, GO SET UP 00349000
  378. LOOP1 L EVEN,AREA START WITH BEGINNING OF BUFFER 00350000
  379. A EVEN,START ADJUST TO FIRST REQUESTED COLUMN 00351000
  380. N FIRST,=F'65535' CLEAR PROPAGATION V0696 00351100
  381. STH FIRST,FITEMNO STORE 'FIRST' ITEM NUMBER, 00352000
  382. LOOP2 LA 1,SVCLST 'RDBUF' A LARGE CHUNK OF THE INPUT FILE 00353000
  383. SSM TYPDIS DISABLE INTERRUPTS @VA06258 00353500
  384. L R15,ARDBUF ... @V305066 00354000
  385. BALR R14,R15 ... @V305066 00354100
  386. SSM TYPENA ENABLE INTERRUPTS @VA06258 00354150
  387. BNZ DSKERR DISK ERROR ON EOF @V305066 00354200
  388. * 00356000
  389. O EVEN,HI1 'OR' IN '01' AS NEEDED LATER. 00357000
  390. LR ODD,EVEN AND 00358000
  391. A ODD,NUMBYT REMEMBER END OF DATA. 00359000
  392. L AC,NUMBYT PICK UP ACTUAL LENGTH OF INPUT LINE 00360000
  393. BE STORE NULL LINE JUST STORE 00360010
  394. CLI FVFLAG,C'V' IS IT A VARIABLE FILE? @VA02754 00361100
  395. BNE ACO NO, CONTINUE AS USUAL @VA02754 00361200
  396. C AC,START IS IT LESS? @VA02754 00361300
  397. BNL ACOO NO, CONTINUE @VA02754 00361400
  398. SR AC,AC ZERO IT OUT @VA02754 00361500
  399. B ACOK CONTINUE @VA02754 00361600
  400. ACOO S AC,START GET REAL NUMBER OF BYTES @VA02754 00361700
  401. ACO C AC,JLENGTH IF WAS GREATER, USE 'JLENGTH' @VA02754 00361800
  402. BNH ACOK OK IF NOT GREATER. 00362000
  403. L AC,JLENGTH IF WAS GREATER, USE 'JLENGTH' INSTEAD 00363000
  404. ACOK TM SWS,HEX HEX CONVERT WANTED? @VA01248 00364000
  405. BZ CHKEQ NO @VA01248 00364100
  406. STORE STH AC,TYPLIN+14 STORE LENGTH IN TYPLIN PLIST @VA01248 00364200
  407. * 00365000
  408. TLOOP TM SWS,HEX HEX CONVERSION WANTED? 00366000
  409. BZ TLOOP1 00367000
  410. TM MSGFLAGS,NOTYPING IS TYPING SUPPRESSED? @VA08117 00367300
  411. BO CLOSE1 YES, EXIT IMMEDIATELY @VA08117 00367600
  412. BAL R14,HEXRTN DO HEX CONVERSION AND PRINTING IN HEX RTN 00368000
  413. B HEXRET RETURN FROM HEX ROUTINE 00369000
  414. CHKEQ C AC,JLENGTH COMPARE WITH 'DESIRED LENGTH' @VA01248 00369100
  415. BE EQUAL EQUAL @VA01248 00369200
  416. B STORE NOT EQUAL @VA01248 00369300
  417. EQUAL C AC,M133 TYPLIN LINES < OR = 133 @VA01248 00369400
  418. BNH STORE @VA01248 00369500
  419. L AC,M133 DEFAULT TO 133 @VA01248 00369600
  420. B STORE @VA01248 00369700
  421. TLOOP1 CLC FTYPE(8),=CL8'LISTING' IS 'FILE-TYPE' = LISTING? 00370000
  422. BNE FIRSTOK BNE IF NOT, FIRST CHARACTER IS OK AS IS. 00371000
  423. CLI 0(EVEN),X'0B' IS CONTROL CHARACTER SPC, NOPRT 00372000
  424. BNE KPGNG NO, GO ON 00373000
  425. MVI 0(EVEN),X'40' YES, MOVE IN A BLANK IN COL 1 00374000
  426. L R1,JLENGTH 00375000
  427. EX R1,CLRMVC MOVE BLANK THROUGHT LENGTH OF REC 00376000
  428. KPGNG EQU * @VA04892 00381000
  429. CLI COLSET,X'01' IS COLSET SW SET? @VA04892 00381100
  430. BE FIRSTOK YES,KEEP 1ST CHAR. @VA04892 00381200
  431. MVI 0(EVEN),X'17' REP 1ST CHAR WITH 'IDLE' FOR @VA04892 00381300
  432. * LIST. 00381400
  433. FIRSTOK TM MSGFLAGS,NOTYPING TYPING SUPPRESSED? @VA00956 00382100
  434. BO CLOSE1 YES, EXIT IMMEDIATELY @VA00956 00382200
  435. XR R1,R1 CLEAR R1. @VA14716 00382207
  436. LH R1,TYPLIN+14 GET LENGTH OF LINE. @VA14716 00382214
  437. CR R1,R1 NULL LINE JUST STORE 00382215
  438. BE CHKDN0 NULL LINE JUST STORE 00382216
  439. CHKSPCHR EQU * @VA14716 00382221
  440. CLI 0(EVEN),X'15' IS IT A NEW LINE CHARACTER? @VA14716 00382228
  441. BNE CHK1D NO, GO TRY 1D. @VA14716 00382235
  442. MVI 0(EVEN),X'40' YES, SET IT TO BLANK. @VA14716 00382242
  443. B CHKNEXT GO SET UP TO CHECK NEXT COLUMN. @VA14716 00382249
  444. CHK1D EQU * @VA14716 00382256
  445. CLI 0(EVEN),X'1D' IS IT A START LINE CHARACTER? @VA14716 00382263
  446. BNE CHKNEXT NO, GO SET UP TO CHECK NEXT COL. @VA14716 00382270
  447. MVI 0(EVEN),X'40' YES, SET IT TO BLANK. @VA14716 00382277
  448. CHKNEXT EQU * @VA14716 00382284
  449. LA EVEN,1(EVEN) POINT R1 TO NEXT COLUMN. @VA14716 00382291
  450. BCT R1,CHKSPCHR IF THERE'S MORE, CHECK NEXT COL. @VA14716 00382298
  451. CHKDN0 EQU * 00382299
  452. LA R1,TYPLIN NO, GO AHEAD AND TYPE LINE @VA00956 00382300
  453. SVC X'CA' ... 00383000
  454. HEXRET LA FIRST,1(,FIRST) INCREMENT COUNTER 00384000
  455. TM SWS,MEMB PROCESSING A LIBRARY 00385000
  456. BNO HEXRET1 NO 00386000
  457. L R1,AREA POINT TO BUFFER AREA 00387000
  458. * CHECK FOR DELIMITERS FOR TXTLIB AND MACLIBS 00388000
  459. CLC 0(4,R1),=X'61FFFF61' IS IT END OF MEMBER ? 00389000
  460. BE NONELEFT END BY GETTING 'EOF' V0695 00390100
  461. HEXRET1 CR FIRST,LAST COMPARE COUNTERS, 00391000
  462. BH CLOSE BH IF WE'RE ALL FINISHED. 00392000
  463. B LOOP1 OTHERWISE,CONTINUE V0695 00393100
  464. * 00395000
  465. CLRMVC MVC 1(0,EVEN),0(EVEN) THIS INSTR EXECUTED AT KPGNG-4 00396000
  466. * 00397000
  467. DSKERR C 15,=F'12' IF RDBUF ERROR, IS IT 12 (EOF) ? 00398000
  468. BNE ERR2 BNE IF NOT (SOME STRANGE ERROR) 00399000
  469. * 00400000
  470. NONELEFT TM SWS,EOFWNT DO WE WANT EOF MESSAGE? V0695 00401100
  471. BZ NOEOF NO, JUST GIVE HIM CARR RET. V0695 00401200
  472. MVI CARCNT,EOFCNT YES, PREPARE EOF MESSAGE V0695 00401300
  473. NOEOF LA R1,CARET SET FOR CARR RET WITH POSS. EOF V0695 00401400
  474. SVC 202 ... V0695 00401500
  475. * 00402000
  476. CLOSE TM SWS,MEMB 00403000
  477. BZ CLOSE1 IF NOT MEMBER 00404000
  478. TM SWS,NAME IS NAME BEING PRINTED 00405000
  479. BO CLOSE1 YES, THEN FINISHED 00406000
  480. MVI CARCNT,X'00' INITIALIZE TO PRINT CARR RET V0695 00406100
  481. LA R1,CARET PUT BLANK LINE BETWEEN MEMBERS V0695 00406200
  482. SVC 202 ... V0695 00406300
  483. CKLP1 L R1,DICTADR GET NEXT DICTIONARY ADDR 00407000
  484. LA R1,12(R1) ANOTHER MEMBER 00408000
  485. C R1,DICTEND END OF ALL MEMBS 00409000
  486. BE CLOSE1 YES 00410000
  487. ST R1,DICTADR NEXT DICTIONARY ADDR 00411000
  488. CLI 0(R1),X'00' NULL DICTIONARY ENTRY? V0695 00412100
  489. BE CKLP1 IF SO, LOOK AGAIN V0695 00412200
  490. LR FIRST,R1 FREE R1 FOR MESSAGE V0695 00412300
  491. LA LAST,DOTS USE LAST FOR MESSAGE V0695 00412400
  492. LINEDIT TEXT='MEMBER ''........''....', *00412500
  493. SUB=(CHARA,(FIRST),CHARA,(LAST)),DOT=NO,RENT=NO 00412600
  494. LR R1,FIRST RESTORE R1 V0695 00412700
  495. LH FIRST,8(,R1) GET STARTING LOCATION V0695 00412800
  496. BCTR FIRST,0 DECREMENT TO 'ITEM 0' OF MEMBER V0695 00412900
  497. N FIRST,=F'65535' CLEAR THOSE BYTES @VA03130 00412950
  498. A FIRST,SAVFRST GET STARTING ITEM NO. IN MEMBER V0695 00413000
  499. BYALIAS LA LAST,12(,R1) ADDRESS OF NEXT DICTIONARY ENTRY @VA00956 00413100
  500. C LAST,DICTEND WAS THIS THE LAST ENTRY V0695 00413200
  501. BE LASTDCT YES,DO IT ACCORDINGLY V0695 00413300
  502. LH LAST,8(,LAST) ITEM NUMBER JUST BEYOND THIS MEMBER V0695 00413400
  503. CH LAST,8(,R1) NEXT DICT ENTRY FOR SAME MEMBER? @VA00956 00413425
  504. BNE COMPO NO, IT IS NOT AN ALIAS @VA00956 00413450
  505. LA R1,12(,R1) YES, PROMOTE NEXT DICT ENTRY... @VA00956 00413475
  506. ST R1,DICTADR ...TO CURRENT @VA00956 00413500
  507. B BYALIAS AND RECOMPUTE ENDING ITEM NO. @VA00956 00413525
  508. LASTDCT LH LAST,DICTITEM ITEM NUMBER OF DICTIONARY V0695 00413600
  509. COMPO N LAST,=F'65535' CLEAR HIGH ORDER BYTES @VA03130 00413730
  510. CR FIRST,LAST IS REQUESTED ITEM BEYOND MEMBER @VA03130 00413760
  511. BNL CLOSE YES, SEE IF THERE IS ANOTHER MEMBER V0695 00413800
  512. L LAST,SAVFRST RESTORE RECNO TO STARTING NUM. V0695 00413900
  513. ST LAST,RECNO ... V0695 00414000
  514. LH LAST,8(,R1) CALCULATE ENDING RECORD WANTED V0695 00414100
  515. BCTR LAST,0 DECREMENT TO 'ITEM 0' OF MEMBER V0695 00414200
  516. N LAST,=F'65535' CLEAR THOSE BYTES @VA03130 00414250
  517. A LAST,SAVLAST INCREMENT TO ENDING ITEM NUMBER V0695 00414300
  518. B LOOP1 AND GO TYPE IT V0695 00414400
  519. CLOSE1 SR R15,R15 RETURN CODE 00421000
  520. CLOSE1A LR R6,R15 SAVE RETURN CODE 00422000
  521. MVC SVCLST,=CL8'FINIS' CLOSE FILE 00423000
  522. LA 1,SVCLST ... 00424000
  523. SSM TYPDIS DISABLE INTERRUPTS @VA06258 00424500
  524. L R15,AFINIS FINIS @V305066 00425000
  525. BALR R14,R15 ... @V305066 00425100
  526. SSM TYPENA ENABLE INTERRUPTS @VA06258 00426000
  527. * 00427000
  528. MVI CARCNT,X'00' PREPARE FOR CARRIAGE RET. V0695 00427100
  529. LA 1,CARET CARRIAGE RETURN AFTER PRINTING 00428000
  530. SVC X'CA' ... 00429000
  531. LR R15,R6 RESTORE CODE 00430000
  532. TM SWS,MEMB PROCESSING MEMBER? 00431000
  533. BZ CLOSE2 NO 00432000
  534. L R1,STRADR 00436000
  535. L R0,STRLEN LENGTH OF STORAGE 00437000
  536. DMSFRET DWORDS=(0),LOC=(1) 00438000
  537. LR R15,R6 RESTORE CODE 00439000
  538. * 00440000
  539. RETURN EQU * 00441000
  540. CLOSE2 LR R6,R15 00442000
  541. L R0,STRG LENGTH 00443000
  542. L R1,AREA ADDRESS 00444000
  543. DMSFRET DWORDS=(0),LOC=(1) 00445000
  544. LR R15,R6 RESTORE RETURN CODE 00446000
  545. L R14,SAVRET RESTORE RETURN ADDR 00447000
  546. BR 14 RETURN TO CALLER. 00448000
  547. EJECT 00449000
  548. ********************************************************************** 00450000
  549. * 00451000
  550. * INTERNAL CONVERSION ROUTINE 00452000
  551. * 00453000
  552. ********************************************************************** 00454000
  553. * 00455000
  554. * AT ENTRY, 'AC' POINTS TO BEGINNING OF NUMERIC FIELD 00456000
  555. * AT EXIT, 'AC' MUST HOLD THE ANSWER. 00457000
  556. * 00458000
  557. * HANDLE UP TO 8 BYTES ... 00459000
  558. * (JAS - 29 MAY 1969) 00460000
  559. * 00461000
  560. * (MIGHT AS WELL CONVERT WHILE SCANNING FOR 00462000
  561. * BLANK AND POSSIBLE ILLEGAL CHARACTERS) 00463000
  562. * 00464000
  563. CONVRT SR EVEN,EVEN CLEAR PARTIAL SUM 00465000
  564. SR ODD,ODD CLEAR A REGISTER 00466000
  565. LA 15,8 NO MORE THAN 8 BYTES 00467000
  566. CVTLOOP CLI 0(AC),C' ' BLANK ? 00468000
  567. BE CVTDONE WE'RE DONE IF YES 00469000
  568. IC ODD,0(,AC) PICK UP BYTE, 00470000
  569. SH ODD,K0 SUBTRACT C'0', 00471000
  570. BM ERR9A ERROR IF NOT 0-9 00472000
  571. MH EVEN,TEN MULTIPLY OLD PARTIAL SUM BY TEN, 00473000
  572. AR EVEN,ODD ADD NEW DIGIT 00474000
  573. LA AC,1(,AC) BUMP 'AC' FOR NEXT DIGIT 00475000
  574. BCT 15,CVTLOOP ITERATE TO BLANK OR 8TH CHARACTER 00476000
  575. CVTDONE LR AC,EVEN ANSWER INTO 'AC' 00477000
  576. BR RET AND RETURN TO CALLER. 00478000
  577. TEN DC H'10' ... 00479000
  578. K0 DC X'00',C'0' C'0' FOR SUBTRACT 00480000
  579. EJECT 00481000
  580. * 00482000
  581. * READ AND CHECK FOR 'LIB' LIBRARY. GET STORAGE AND READ DICTIONARY 00483000
  582. * INTO IT. IF MEMBER NAME WANTER SEARCH FOR IT AND SET REGS. 00484000
  583. *R2-LENGTH,R4-DICTIONARY LOCATION OF CURRENT NAME. 00485000
  584. * DICTIONARY FORM- 00486000
  585. * CL8'NAME' 00487000
  586. * CL2'INDEX' 00488000
  587. * CL2'LENGTH' 00489000
  588. * 00490000
  589. MEMBS L R7,ADD1 GET BUFFER ADDR 00491000
  590. MVC FITEMNO(2),=XL2'0001' INITIALIZE ITEM NUMBER 00492000
  591. LA R1,SVCLST READ DICTIONARY POINTER 00493000
  592. SSM TYPDIS DISABLE INTERRUPTS @VA06258 00493500
  593. L R15,ARDBUF READ DICTIONARY POINTER @V305066 00494000
  594. BALR R14,R15 ... @V305066 00494100
  595. SSM TYPENA ENABLE INTERRUPTS @VA06258 00494150
  596. BNZ MEMBEOF ERROR RETURN @V305066 00494200
  597. CLC 3(3,R7),=CL3'LIB' IS IT A LIBRARY FILE 00496000
  598. BNE ERR6 NOT A LIB FILE 00497000
  599. ST FIRST,SAVFRST SAVE STARTING RECORD NUMBER 00498000
  600. ST LAST,SAVLAST AND ALSO THE LAST ONE 00499000
  601. L R0,8(R7) GET LEN OF DICTIONARY 00500000
  602. ST R0,DICTLEN SAVE 00501000
  603. LTR R0,R0 IF LENGTH IS ZERO... 00502000
  604. BZ ERR4 NO ENTRIES IN LIBRARY 00503000
  605. LA R1,60 INSURE MINIMUM NUMBER DOUBLE WORDS 00504000
  606. AR R0,R1 00505000
  607. SRL R0,3 TO GET DOUBLE WORDS 00506000
  608. ST R0,STRLEN STORE AMOUNT OF SPACE REQUESTED 00507000
  609. DMSFREE DWORDS=(0) 00508000
  610. ST R1,STRADR STORAGE ADDRESS 00509000
  611. ST R1,DICTADR SAVE STORAGE START 00510000
  612. L R6,DICTLEN A(START)+LEN=A(END) 00511000
  613. LA R3,0(R1,R6) SET END 00512000
  614. LA R2,72 SET INDEX FACTOR 00513000
  615. ST R3,DICTEND SAVE END OF DICTIONARY 00514000
  616. BCTR R3,R0 DECR FOR BXLE 00515000
  617. LH R4,6(R7) GET INDEX FOR READ 00516000
  618. LR R6,R1 00517000
  619. B RDLOOP 00518000
  620. * 00519000
  621. RDLOOP STH R4,FITEMNO SET ITEM NO 00520000
  622. STH R4,DICTITEM SAVE STARTING ITEM NO FOR LATER V0695 00520100
  623. LA R1,SVCLST READ PARM LIST 00521000
  624. SSM TYPDIS DISABLE INTERRUPTS @VA06258 00521500
  625. L R15,ARDBUF RDBUF @V305066 00522000
  626. BALR R14,R15 ... @V305066 00522100
  627. SSM TYPENA ENABLE INTERRUPTS @VA06258 00522150
  628. BNZ ERR2 ... @V305066 00522200
  629. MVC 0(72,R6),0(R7) MOVE TO DICTIONARY 00524000
  630. LA R4,1(,R4) INCR INDEX 00525000
  631. BXLE R6,R2,RDLOOP GET EVERY ONE 00526000
  632. * 00527000
  633. RDLOOPA L R3,DICTEND END OF DICTIONARY V0695 00528100
  634. L R4,DICTADR GET START ADDR 00529000
  635. LA R2,12 00530000
  636. BCTR R3,0 DECREMENT FOR BXLE V0695 00531100
  637. RDLOOP1 CLI 0(R4),X'00' NULL ENTRY? V0011 00532100
  638. BNE NAMLOOP2 NO V0011 00532200
  639. BXLE R4,R2,RDLOOP1 LOOK AGAIN 00535000
  640. B ERR4 ERROR NO ENTRIES 00536000
  641. * 00537000
  642. NAMLOOP2 ST R4,DICTADR 00538000
  643. TM SWS,NAME ONLY ONE MEMBER WANTED? 00539000
  644. BNO NAMLOOP1 NO, THEN WE CAN START 00540000
  645. LA R2,12 00541000
  646. NAMLOOP CLC 0(8,R4),NAME1 IS IT NAME 00542000
  647. BE NAMLOOP1 YES, FOUND IT 00543000
  648. BXLE R4,R2,NAMLOOP LOOK AT NEXT 00544000
  649. B ERR5 NAME NOT FOUND 00545000
  650. * 00546000
  651. NAMLOOP1 ST R4,DICTADR ENSURE DICTADR UP TO DATE V0695 00547000
  652. CLI 0(R4),X'00' NULL DICTIONARY ENTRY? V0695 00548000
  653. BNE NAMLOOP3 NO V0695 00549000
  654. LA R4,12(,R4) POINT TO NEXT ENTRY V0695 00550000
  655. B NAMLOOP2 V0695 00551000
  656. SPACE 1 V0695 00552000
  657. NAMLOOP3 L R4,DICTADR SET DICTADR BACK 12 FOR CORRECT... V0695 00553000
  658. S R4,=F'12' ...ENTRY INTO TYPING LOOP V0695 00554000
  659. ST R4,DICTADR ... V0695 00555000
  660. B CKLP1 AND GO TYPE IT V0695 00556000
  661. SPACE 1 V0695 00557000
  662. MEMBEOF NI SWS,255-MEMB TREAT AS NOT MEMB, NO FREE STG YET V0695 00558000
  663. B DSKERR V0695 00559000
  664. * 00568000
  665. EJECT 00569000
  666. * 00570000
  667. ********************************************************************** 00571000
  668. * HEX CONVERSION ROUTINE 00572000
  669. * 00573000
  670. * ON ENTRY- 00574000
  671. * UNIT+8 HAS BUFFER START ADDR 00575000
  672. * UNIT+12 HAS LENGTH OF RECORD 00576000
  673. * 00578000
  674. HEXRTN STM R4,R9,HEXSAVE+8 SAVE REGS USED HERE 00579000
  675. L R6,TYPLIN+8 GET BUFFER START 00580000
  676. LH R7,NUMBYT+2 GET LENGTH V0156 00581100
  677. N R7,=F'65535' CLEAR PROPAGATION @VA01053 00581110
  678. * PRINT HEADER IN FORM: V0024 00584100
  679. * RECORD XXXXX LENGTH = XXXX V0024 00584200
  680. HEX1 CVD R7,DECD 00585000
  681. MVC RSZF(6),RSZM SET EDIT MASK V0024 00586100
  682. ED RSZF(6),DECD+5 EDIT MEMBER TO MSG V0024 00586200
  683. L R5,RECNO GET RECORD NO FOR TYPE HEADING 00588000
  684. CVD R5,DECD CONVERT RECORD COUNT FOR PRINT 00589000
  685. LA R5,1(R5) INCR COUNT 00590000
  686. ST R5,RECNO SAVE FOR NEXT TIME 00591000
  687. MVC RNOF(6),RNOM SET EDIT MASK 00592000
  688. ED RNOF(6),DECD+5 EDIT REC NUM TO MSG 00593000
  689. LA R1,HDRMSG PRINT HEADER 00594000
  690. SVC 202 CALL CMS 00595000
  691. DC AL4(ERR3) ERROR RETURN 00596000
  692. LH R7,TYPLIN+14 SET LEN TO BE TYPED V0156 00596100
  693. N R7,=F'65535' CLEAR PROPAGATION @VA01053 00596200
  694. * DEBLOCK AND CONVERT EACH WORD IN INPUT RECORD AND 00597000
  695. * OUTPUT IT 00598000
  696. * R6=BUFFER ADDR 00599000
  697. * R7=LENGTH IN BYTES 00600000
  698. * 00601000
  699. * 00602000
  700. OUTER1 LA R8,4 00603000
  701. SR R6,R8 REDUCE R6 FOR BXH 00604000
  702. LA R9,0(R7,R6) SET END OF REQUESTED BUFFER 00608000
  703. OUTER LA R3,PBUF+1 00609000
  704. LA R4,10 00610000
  705. MVI PBUF,C' ' CLEAR BUFFER 00611000
  706. MVC PBUF+1(129),PBUF * 00612000
  707. INNER BXH R6,R8,ENDREC 00613000
  708. STM R14,R15,HEXSAVE 00614000
  709. LA R14,0(R3) 00615000
  710. LA R15,0(R6) 00616000
  711. UNPK HEXUNPK(9),0(5,R15) 00617000
  712. TR HEXUNPK(9),HEXTRTBL 00618000
  713. MVC 0(8,R14),HEXUNPK 00619000
  714. LM R14,R15,HEXSAVE 00620000
  715. LA R3,10(,R3) 00621000
  716. BCT R4,INNER 00622000
  717. LA R1,UNIT1 TYPE HEX RECORD 00623000
  718. SVC 202 CALL CMS 00624000
  719. B OUTER CONTINUE PROCESSING 00625000
  720. * 00626000
  721. ENDREC SR R6,R9 ANY BYTES LEFT TO DO 00627000
  722. SR R8,R6 00628000
  723. AR R6,R9 00629000
  724. LTR R8,R8 CHECK REMAINDER 00630000
  725. BNZ ENDREC1 GO FINISH 00631000
  726. LTR R4,R4 WAS LINE FINISHED? 00632000
  727. BZ LSTWRT1 NO, FINISH PRINTING 00633000
  728. B LSTWRT YES 00634000
  729. ENDREC1 SR R9,R9 00635000
  730. IC R9,UNPKTBL-1(8) GET THE EX MASK 00636000
  731. SLL R8,1 READY FOR TR MASK 00637000
  732. BCTR R8,0 00638000
  733. EX R9,UNPK DO UNPACK 00639000
  734. EX R8,TR AND TRANSLATE 00640000
  735. EX R8,MVC AND MVC 00641000
  736. * 00642000
  737. LSTWRT LA R1,UNIT1 WRITE PARM LIST 00643000
  738. SVC 202 CALL CMS 00644000
  739. LSTWRT1 LM 4,9,HEXSAVE+8 00645000
  740. BR R14 RETURN 00646000
  741. TYPDIS DC X'00' @VA06258 00646300
  742. TYPENA DC X'FF' @VA06258 00646600
  743. EJECT 00647000
  744. ********************************************************************** 00648000
  745. * 00649000
  746. * ERROR MESSAGES 00650000
  747. * 00651000
  748. ********************************************************************** 00652000
  749. ERR1 DMSERR NUM=054,LET=E,TEXT='INCOMPLETE FILEID SPECIFIED' 00653000
  750. LA R15,24 00654000
  751. B RETURN1 00655000
  752. ERR2 LA R0,8(R1) POINT TO FILE ID 00656000
  753. DMSERR NUM=104,LET=S, V0024X00657100
  754. TEXT=('ERROR ''...'' READING FILE', V0024X00657200
  755. ' ''....................'' FROM DISK.'), V0024X00657300
  756. SUB=(DEC,(15),CHAR8A,(0)),RENT=NO @VA09105 00657400
  757. LA R15,100 00659000
  758. B CLOSE1A 00660000
  759. ERR3 EQU * @VA09572 00661000
  760. C R15,=F'36' WAS DISK NOT ACCESSED? @VA09572 00661250
  761. BE ERROR36 GIVE MSG @VA09572 00661500
  762. C R15,=F'28' FILE NOT FOUND? @VA09572 00661750
  763. BNZ RETURN1 NO,MSG GIVEN BY STATE P0350 00662000
  764. LA R0,8(R1) FIX POINTER 00663000
  765. DMSERR NUM=2,LET=E,TEXT='FILE ''....................'' NOT X00664000
  766. FOUND',SUB=(CHAR8A,(0)) 00665000
  767. ERR3A LA R15,28 ERROR CODE 00666000
  768. B RETURN1 00667000
  769. ERR4 LA R0,FNAME 00668000
  770. DMSERR NUM=039,LET=E,TEXT='NO ENTRIES IN LIBRARY ''...........X00669000
  771. .......''',SUB=(CHAR8A,(0)) 00670000
  772. NI SWS,255-MEMB RESET SWITCH TO AVOID CALL TO DMSFRE 00671000
  773. LA R15,32 SET RETURN CODE 00672000
  774. B CLOSE1A 00673000
  775. ERR5 LA R0,NAME1 POINT TO PARAMETER 00674000
  776. DMSERR NUM=013,LET=E,TEXT='MEMBER ''........'' NOT FOUND IN X00675000
  777. LIBRARY',SUB=(CHARA,(0)) 00676000
  778. LA R15,32 SET RETURN CODE 00677000
  779. B CLOSE1A 00678000
  780. ERROR36 EQU * @VA09572 00678150
  781. LA R0,FMODE POINT TO MODE LETTER @VA09572 00678300
  782. DMSERR TEXT='DISK ''..'' NOT ACCESSED',NUM=69, X00678450
  783. LET=E,SUB=(CHARA,((R0),1)),TYPCALL=SVC @VA09572 00678600
  784. LA R15,36 GIVE RETCODE @VA09572 00678750
  785. RETURN1 L R14,SAVRET RETURN ADDRESS 00679000
  786. BR R14 00680000
  787. ERR6 LA R0,8(R1) POINT TO FILE 00681000
  788. DMSERR NUM=033,LET=E,TEXT='FILE ''..................'' IS NOT X00682000
  789. A LIBRARY ',SUB=(CHAR8A,(0)) 00683000
  790. LA R15,32 SET RETURN CODE 00684000
  791. B RETURN 00685000
  792. * 00686000
  793. ERR7 DMSERR NUM=062,LET=E,TEXT='INVALID * IN FILEID' 00687100
  794. LA R15,20 SET RETURN CODE P0766 00688000
  795. B RETURN1 RETURN 00689000
  796. * 00690000
  797. ERR8 EQU ERR1 00691000
  798. * 00692000
  799. ERR9 DMSERR NUM=3,LET=E,TEXT='INVALID OPTION ''........''', X00693000
  800. SUB=(CHARA,(3)) 00694000
  801. LA R15,24 SET RETURN CODE 00695000
  802. B RETURN 00696000
  803. ERR9A DMSERR NUM=29,LET=E,TEXT='INVALID PARAMETER ''........''', X00697000
  804. SUB=(CHARA,(3)) 00698000
  805. LA R15,024 00699000
  806. B RETURN 00700000
  807. ERR9B LR R4,R3 POINT TO THE PARAMETER 00701000
  808. ERR9C EQU * @VA08704 00701050
  809. MVI FIRSTSW,X'00' TURN OFF @VA01248 00701100
  810. S R4,=F'8' POINT TO OPTION 00702000
  811. DMSERR NUM=29,LET=E,TEXT='INVALID PARAMETER ''........'' IN THE00703000
  812. E OPTION ''........'' FIELD',SUB=(CHARA,(3),CHARA,(4)),RX00704000
  813. ENT=NO @VA08704 00705000
  814. LA R15,24 SET RETURN CODE 00706000
  815. B RETURN RETURN 00707000
  816. * 00708000
  817. ERR10 LA R10,0(PARAM) SET OPTION POINTER @VA02476 00709300
  818. DMSERR NUM=005,LET=E,TEXT='NO ''........'' SPECIFIED', X00709600
  819. SUB=(CHARA,(10)) 00710000
  820. LA R15,24 00711000
  821. B RETURN 00712000
  822. * 00713000
  823. ERR11 LA R3,8(PARAM) POINT TO ERROR 00714000
  824. ERR11A DMSERR NUM=49,LET=E,TEXT='INVALID LINE NUMBER ''........''', X00715000
  825. SUB=(CHARA,(3)) 00716000
  826. LA R15,24 SET RETURN CODE 00717000
  827. B RETURN RETURN 00718000
  828. ERR12 DMSERR NUM=9,LET=E,TEXT='COLUMN ''........'' EXCEEDS RECORD LEX00719000
  829. NGTH',SUB=(DEC,(4)) 00720000
  830. LA R15,24 SET RETURN CODE 00721000
  831. B RETURN RETURN 00722000
  832. LA R15,24 00723000
  833. B RETURN 00724000
  834. DS 0F 00725000
  835. CARET DC CL8'TYPLIN' TYPE A CARRIAGE RETURN ... 00726000
  836. DC AL1(1) 00727000
  837. DC AL3(EOF) 00728000
  838. DC C'K' 00729000
  839. DC X'0000' (FIRST 2 BYTES OF COUNT) 00730000
  840. CARCNT DC AL1(*-*) 07 FOR EOF & CAR. RTN., 00 FOR CAR. RTN. ONLY 00731000
  841. EOF DC X'40164016',C'-EOF-' EOF WITH JIGGLE V0695 00732100
  842. EOFCNT EQU *-EOF (COUNT FOR MVI) 00733000
  843. * 00734000
  844. EJECT 00735000
  845. ********************************************************************** 00736000
  846. * 00737000
  847. * SVC PARAMETER LISTS 00738000
  848. * 00739000
  849. ********************************************************************** 00740000
  850. DS 0F 00741000
  851. * 00742000
  852. SVCLST DC CL8' ' ROUTINE 00743000
  853. FNAME DC CL8' ' FILE NAME 00744000
  854. FTYPE DC CL8' ' FILE TYPE 00745000
  855. FMODE DC CL2' ' MODE 00746000
  856. FITEMNO DC H'1' ITEM NO. 00747000
  857. ADD1 DC A(*-*) USER MEMORY ADDRESS, FILLED BY STATE, THEN=ADD2. 00748000
  858. BUFSZ DC F'2000' NO OF BYTES TO READ 00749000
  859. FVFLAG DC CL2'F' FIXED/VARIABLE FLAG 00750000
  860. NUMITEMS DC H'1' NO. OF ITEMS 00751000
  861. NUMBYT DC A(*-*) NO. OF BYTES ACTUALLY READ 00752000
  862. * 00753000
  863. TYPLIN DC CL8'TYPLIN' ROUTINE 00754000
  864. DC AL1(1) 00755000
  865. ADD2 DC AL3(*) I/O BUFFER-LOCATION 00756000
  866. DC C'B' 00757000
  867. DC AL3(*-*) NO. OF BYTES 00758000
  868. H8 DC H'8' FOR SHIFT TO NEXT PLIST ENTRY @VA08704 00759000
  869. JLENGTH DC F'0' ANTICIPATED OR TRUNCATED LENGTH OF INPUT 00760000
  870. ACTUAL DC F'80' ACTUAL ITEM-LENGTH IS FILLED IN HERE. 00761000
  871. HI1 DC AL1(1),AL3(0) FOR FILLING IN TYPLIN PLIST 00762000
  872. * 00763000
  873. UNIT1 DS 0F 00764000
  874. DC CL8'TYPLIN' UNIT 00765000
  875. DC A(PBUF) BUFFER 00766000
  876. DC A(L'PBUF) LENGTH 00767000
  877. DS 2H 00768000
  878. * 00769000
  879. PBUF DC CL130' ' PRINT BUFFER 00770000
  880. NAME1 DS 8C MEMBER NAME SAVE AREA 00771000
  881. SWS DS 1C SWITCHES FOR PROGRAM CONTROL 00772000
  882. FIRSTSW DC X'00' SW FOR NEW FORMAT OF COL OPT @VA01248 00772100
  883. PARM2SW DC X'00' SW FOR NEW FORMAT OF COL OPT @VA01248 00772200
  884. COLSET DC X'00' SW TO INDICATE COL OPTION USED. @VA04892 00772600
  885. MEMB EQU X'01' MEMBER REQUEST 00773000
  886. NAME EQU X'02' NAME OF MEMBER GIVEN 00774000
  887. HEX EQU X'04' HEX CONVERSION WANTED 00775000
  888. EOFWNT EQU X'08' WANT 'EOF' MSG - END RECNO GIVEN V0695 00775100
  889. * 00776000
  890. STRG DS 1F NUMBER DOUBLE WORDS 00777000
  891. AREA DC A(IOAREA) ADDRESS OF I/O BUFFER 00778000
  892. START DS 1F START COL LOCATION 00779000
  893. STOP DS 1F ENDING COL LOCATION 00780000
  894. M133 DC F'133' MAX REC LEN FOR REGULAR TYPE P3058 00781000
  895. * 00782000
  896. SAVRET DS 1F RETURN ADDR 00783000
  897. HEXSAVE DS 8F 00784000
  898. COLTEMP DS CL8 'SETCOL' TEMP STORAGE 00785000
  899. BUFZONE DC CL4' ' BLANKS MUST FOLLOW DECIMAL FIELD @VA08758 00785500
  900. RECNO DS 1F 00786000
  901. RSZM DC XL6'402020202021' RECSIZE FIELD EDIT MASK V0024 00787100
  902. RNOM DC XL6'402020202021' RECORD NUMBER FIELD EDIT MASK 00788000
  903. DEC DS 1F 00790000
  904. DECD DS 1D 00791000
  905. HEXUNPK DS 4F 00792000
  906. HEXTRN DC C'0123456789ABCDEF' 00793000
  907. HEXTRTBL EQU HEXTRN-240 00794000
  908. UNPK UNPK HEXUNPK(0),0(0,R6) EXECUTED 00795000
  909. TR TR HEXUNPK(0),HEXTRTBL EXECUTED 00796000
  910. MVC MVC 0(0,3),HEXUNPK 00797000
  911. UNPKTBL DC XL3'214263' FOR EX OF UNPK 00798000
  912. DICTLEN DS 1F 00799000
  913. DICTADR DS 1F 00800000
  914. DICTEND DS 1F END ADDR OF DICTIONARY 00801000
  915. HDRMSG DS 0F 00802000
  916. DC CL8'TYPLIN' UNIT 00803000
  917. DC A(HDR) BUFFER ADDR 00804000
  918. DC A(L'HDR) LENGTH 00805000
  919. DS 2H 00806000
  920. HDR DC CL27' RECORD XXXXX LENGTH= XXXX ' HDR FOR HEX V0024 00807100
  921. RNOF EQU HDR+7 00808000
  922. RSZF EQU HDR+21 00809000
  923. SAVFRST DS 1F SAVE FIRST RECORD 00810000
  924. SAVLAST DS 1F SAVE LAST RECORD NUMBER 00811000
  925. DICTITEM DS 1H SAVE START OF DICTIONARY FOR MEMB V0695 00811100
  926. DS 0F 00811200
  927. DOTS DC X'4B4B4B4B' DOTS FOR MESSAGE V0695 00811300
  928. STRADR DS 1F 00812000
  929. STRLEN DS 1F AMT OF STORAGE FROM FREE 00813000
  930. * 00814000
  931. EJECT 00815000
  932. ********************************************************************** 00816000
  933. * 00817000
  934. * STORAGE AND DEFINITIONS 00818000
  935. * 00819000
  936. ********************************************************************** 00820000
  937. * 00821000
  938. * DEFINITIONS 00822000
  939. * 00823000
  940. BASE EQU 12 00824000
  941. PARAM EQU 3 00825000
  942. AC EQU 4 00826000
  943. FIRST EQU 5 00827000
  944. LAST EQU 6 00828000
  945. RET EQU 7 00829000
  946. EVEN EQU 8 00830000
  947. ODD EQU 9 00831000
  948. REGEQU 00832000
  949. * 00833000
  950. LTORG PUT LITERALS HERE ... 00834000
  951. IOAREA DS 3200C I/O BUFFER 00835000
  952. * 00836000
  953. NUCON 00837000
  954. * 00838000
  955. END 00839000