Table of Contents

DMSLBM Source

References

Source Listing

DMSLBM.ASSEMBLE.txt
  1. LBM TITLE 'DMSLBM (CMS) VM/370 - RELEASE 6' 00001000
  2. SPACE 2 00002000
  3. *. 00003000
  4. * 00004000
  5. * 00005000
  6. * 00006000
  7. * MODULE NAME: 00007000
  8. * 00008000
  9. * DMSLBM (MACLIB) 00009000
  10. * 00010000
  11. * FUNCTION: 00011000
  12. * 00012000
  13. * TO GENERATE A MACRO LIBRARY, TO ADD MACROS TO AN 00013000
  14. * EXISTING LIBRARY, TO DELETE OR REPLACE MEMBERS OF AN 00013100
  15. * EXISTING LIBRARY, TO COMPRESS THE SPACE OCCUPIED BY AN 00013200
  16. * EXISTING LIBRARY, AND TO LIST THE DICTIONARY OF AN 00014000
  17. * EXISTING MACRO LIBRARY. 00015000
  18. * 00016000
  19. * ATTRIBUTES: 00017000
  20. * 00018000
  21. * DISK RESIDENT 00019000
  22. * 00020000
  23. * ENTRY POINTS: 00021000
  24. * 00022000
  25. * DMSLBM 00023000
  26. * 00024000
  27. * ENTRY CONDITIONS: 00025000
  28. * 00026000
  29. * GPR1 = A(PLIST) 00027000
  30. * DS 0D 00028000
  31. * PLIST DC CL8'MACLIB' 00029000
  32. * COMP 00030000
  33. * GEN 00031000
  34. * ADD 00032000
  35. * DC CL8' MAP ' 00033000
  36. * REP 00034000
  37. * DEL 00035000
  38. * DC CL8' ' MACRO LIBRARY NAME 00036000
  39. * DC CL8' ' NAME 1 00037000
  40. * . 00038000
  41. * . 00039000
  42. * . 00040000
  43. * DC CL8' ' NAME N 00041000
  44. * 00042000
  45. * IF MAP IS SPECIFIED: 00043000
  46. * DC CL8'(' 00044000
  47. * DC CL8'TERM'|'PRINT'|'DISK' 00045000
  48. * 00046000
  49. * EXIT CONDITIONS: 00047000
  50. * 00048000
  51. * GPR15 = 0 NO ERRORS 00049000
  52. * GPR15 = XX ERRORS: 00050000
  53. * 4 MEMBER NOT FOUND 00051000
  54. * FILE NOT FOUND 00052000
  55. * LIBRARY NOT CREATED 00053000
  56. * LIBRARY IS ERASED IF LAST MEMBER IS DELETED @VA12809 00053500
  57. * 24 INVALID PARAMETER 00054000
  58. * NO LIBRARY NAME 00055000
  59. * NO FUNCTION 00056000
  60. * INVALID OPTION 00057000
  61. * NO FILENAME 00058000
  62. * INVALID FUNCTION 00058100
  63. * 28 LIBRARY NOT FOUND 00059000
  64. * 32 INVALID RECORDS 00060000
  65. * 36 DISK IS READ/ONLY 00061100
  66. * DISK IS NOT ATTACHED 00061150
  67. * 88 UNPREDICTABLE MACLIB FORMAT 00062000
  68. * MACLIB LIMIT EXCEEDED 00063000
  69. * 100 READ OR WRITE ERROR 00064000
  70. * 104 STORAGE CAPACITY EXCEEDED 00065000
  71. * 256 POINT ERROR 00066000
  72. * EXTERNAL REFERENCES: 00067000
  73. * 00068000
  74. * DMSNUC 00069000
  75. * 00070000
  76. * TABLES/WORK 00071000
  77. * 00072000
  78. * MACTBLLC - DICTIONARY BUFFER 00073000
  79. * 00074000
  80. * REGISTER USAGE: 00075000
  81. * 00076000
  82. * R4,R5 BASES 00077000
  83. * REST WORK 00078000
  84. * 00079000
  85. * NOTES: 00080000
  86. * NONE 00081000
  87. * 00082000
  88. * CALLS TO OTHER ROUTINES: 00083000
  89. * 00084000
  90. * DMSERS, DMSBWR, DMSSTT, DMSBRD, 00085000
  91. * DMSFNS,DMSPNT,DMSRNM,DMSERR,DMSCWR,DMSPRT 00086000
  92. * 00087000
  93. * OPERATION: 00088000
  94. * 00089000
  95. * THE OPERATION OF THE MACLIB COMMAND PROGRAM DEPENDS 00090000
  96. * ON WHETHER THE CALLING PROGRAM SPECIFIES GEN, ADD, 00091000
  97. * COMP, MAP, REP, OR DEL. 00092000
  98. * 00093000
  99. * GEN: DMSLBM CALLS THE ERASE COMMAND PROGRAM TO ERASE 00094000
  100. * ANY OLD LIBRARY WITH THE SAME NAME. THEN CALL DMSBWR 00095000
  101. * TO WRITE A TEMPORARY HEADER RECORD IN THE 00096000
  102. * MACRO LIBRARY. THIS DUMMY RECORD WILL LATER BE 00097000
  103. * REPLACED BY A MACRO DIRECTORY 00098000
  104. * DESCRIPTOR RECORD. NEXT, DMSLBM INITIALIZES THE 00099000
  105. * INDEX, WHICH 00100000
  106. * CORRESPONDS TO THE ITEM NUMBER, TO ONE. THEN IT 00101000
  107. * CALLS THE STATE FUNCTION PROGRAM TO LOCATE THE FILE 00102000
  108. * STATUS TABLE FOR THE FIRST MACRO 00103000
  109. * FILE - FILETYPE MUST BE MACRO OR COPY. DMSLBM NEXT 00104000
  110. * CALLS DMSBRD TO READ THE FIRST RECORD IN THE FIRST 00105000
  111. * MACRO FILE, CALLS DMSBWR TO WRITE IT INTO THE 00106000
  112. * MACRO LIBRARY BEING CREATED, AND INCREMENTS THE 00107000
  113. * INDEX. IF THE CARD IS A ./ CARD OR CMS EOF CARD IT IS 00108000
  114. * NOT WRITTEN TO THE MACLIB. AFTER WRITING 00109000
  115. * THE FIRST (OR ANY) RECORD, THE ACTION TAKEN BY DMSLBM 00110000
  116. * DEPENDS ON THE 00111000
  117. * NATURE OF THE RECORD. 00112000
  118. * 00113000
  119. * IF THE RECORD IS A MACRO HEADER RECORD DMSLBM 00114000
  120. * SAVES THE CURRENT INDEX VALUE 00115000
  121. * THEN IT STORES 00116000
  122. * THE INDEX VALUE IN THE APPROPRIATE ENTRY IN THE MACRO 00117000
  123. * DICTIONARY (REFER TO "TABLE/RECORD FORMATS" LATER IN 00118000
  124. * THIS SECTION), READS THE NEXT RECORD, WHICH IS THE 00119000
  125. * PROTOTYPE RECORD, OBTAINS THE MACRO NAME FROM THAT 00120000
  126. * RECORD, MOVES THE NAME TO THE APPROPRIATE ENTRY IN 00121000
  127. * THE MACRO DICTIONARY, WRITES THE PROTOTYPE RECORD 00122000
  128. * INTO THE MACRO LIBRARY, INCREMENTS THE INDEX, AND 00123000
  129. * READS AND PROCESSES THE NEXT RECORD. 00124000
  130. * 00125000
  131. * IF THE RECORD READ IS EITHER A COMMENT OR AN ELEMENT 00126000
  132. * OF THE BODY OF THE 00127000
  133. * MACRO, DMSLBM MERELY READS AND PROCESSES THE NEXT 00128000
  134. * RECORD. 00129000
  135. * 00130000
  136. * IF THE RECORD IS A MACRO TRAILER RECORD (THAT IS, IT 00131000
  137. * CONTAINS THE CHARACTERS 00132000
  138. * MEND STARTING IN COLUMN 10, DMSLBM INCREMENTS 00133000
  139. * A POINTER TO POINT TO THE NEXT 00134000
  140. * ENTRY IN THE MACRO DICTIONARY, AND RETURNS TO READ 00135000
  141. * AND PROCESSES THE NEXT ENTRY. 00136000
  142. * 00137000
  143. * DMSLBM REPEATS THIS PROCESS FOR ALL RECORDS IN THE 00138000
  144. * FIRST MACRO FILE. WHEN AN END-OF-FILE IS 00139000
  145. * ENCOUNTERED, IT CALLS DMSFNSA TO CLOSE 00140000
  146. * THAT FILE, AND PROCESSES THE NEXT MACRO FILE 00141000
  147. * SIMILARLY. 00142000
  148. * 00143000
  149. * WHEN ALL MACRO FILES ARE PROCESSED, DMSLBM WRITES THE 00144000
  150. * MACRO DICTIONARY OUT AT 00145000
  151. * THE END OF THE MACRO LIBRARY, OVERLAYS THE DUMMY 00146000
  152. * RECORD AT THE START OF THE MACRO LIBRARY WITH A 00147000
  153. * DICTIONARY HEADER RECORD (REFERS TO "TABLE/RECORD 00148000
  154. * FORMATS"), CLOSES THE NEWLY CREATED MACRO LIBRARY, 00149000
  155. * AND RETURNS TO THE CALLING PROGRAM, WHICH IS 00150000
  156. * USUALLY DMSINT. 00151000
  157. * 00152000
  158. * NOTE: 00153000
  159. * THROUGHOUT ITS PROCESSING, DMSLBM CHECKS TO ENSURE 00154000
  160. * THAT THE RECORDS IN EACH 00155000
  161. * MACRO DEFINITION ARE IN CORRECT SEQUENCE. IF THEY 00156000
  162. * ARE NOT, IT SIGNALS THE ERROR BY MEANS OF A TERMINAL 00157000
  163. * MESSAGE (ERROR CODE 32), AND RETURNS TO THE CALLING 00158000
  164. * PROGRAM. 00159000
  165. * 00160000
  166. * ADD: DMSLBM CALLS DMSSTT TO DETERMINE IF THE MACRO 00161000
  167. * LIBRARY TO 00162000
  168. * WHICH THE MACROS ARE TO BE ADDED EXISTS. IF IT DOES 00163000
  169. * NOT, IT SIGNALS THE ERROR 00164000
  170. * AND RETURNS TO THE CALLING PROGRAM. IF THE MACRO 00165000
  171. * LIBRARY EXISTS, DMSLBM CALLS DMSBRD TO READ THE 00166000
  172. * DICTIONARY HEADER RECORD INTO MAIN STORAGE 00167000
  173. * SO THAT IT CAN GET THE STARTING LOCATION OF THE MACRO 00168000
  174. * DICTIONARY. IT THEN SETS THE READ POINTER IN THE 00169000
  175. * FILE STATUS TABLE TO POINT TO THE START OF THE MACRO 00170000
  176. * DICTIONARY AND REPEATEDLY CALLS DMSLBM TO READ THE 00171000
  177. * MACRO DICTIONARY INTO STORAGE. DMSLBM NEXT CALLS 00172000
  178. * DMSFNSA TO CLOSE THE MACRO LIBRARY. HAVING CLOSED 00173000
  179. * THE LIBRARY, MACLIB CALLS DMSPNT TO SET THE WRITE 00174000
  180. * POINTER TO THE START OF THE OLD MACRO DICTIONARY. 00175000
  181. * NEXT, DMSLBM SETS A POINTER TO THE NEXT AVAILABLE 00176000
  182. * LOCATION IN THE MACRO DICTIONARY 00177000
  183. * AND THEN PROCEEDS TO ADD THE MACROS IN THE SAME 00178000
  184. * MANNER AS IT DOES IF GEN IS SPECIFIED. 00179000
  185. * 00180000
  186. * DEL: THE SPECIFIED MACRO NAME IS DELETED FROM THE 00181000
  187. * MACRO LIBRARY DICTIONARY BY MOVING ALL 00182000
  188. * DICTIONARY ENTRIES BEYOND IT DOWN 12 00183000
  189. * BYTES IN THE DICTIONARY BUFFER. 00184000
  190. * THE ACTUAL MACRO STATEMENTS 00185000
  191. * REMAIN IN THE LIBRARY FILE UNTIL COMPACTED. THE @VA12809 00186000
  192. * LIBRARY IS ERASED IF THE LAST MEMBER IS DELETED. @VA12809 00186500
  193. * 00187000
  194. * REP: THE MACRO NAME THAT IS OBTAINED FROM WITHIN THE 00188000
  195. * SPECIFIED FILE (WITH A FILETYPE OF MACRO OR COPY) IS 00189000
  196. * USED AS THE NAME OF THE MACRO TO BE REPLACED. THE 00190000
  197. * OLD MACRO IS DELETED FROM THE LIBRARY AND 00191000
  198. * THE NEW ONE ADDED TO THE END OF THE MACLIB. 00192000
  199. * 00193000
  200. * COMP: THE MACRO DICTIONARY IS READ INTO STORAGE, AND 00194000
  201. * EACH MACRO FROM THE LIBRARY IS WRITTEN INTO A 00195000
  202. * TEMPORARY FILE (MACLIB CMSUT1) FOR EACH VALID ENTRY 00196000
  203. * WITHIN THE DICTIONARY. 00197000
  204. * 00198000
  205. * MAP: DMSLBM READS THE MACRO DICTIONARY INTO MAIN 00199000
  206. * STORAGE AS IT DOES FOR ADD. NEXT, DMSLBM OBTAINS THE 00200000
  207. * FIRST ENTRY IN THE DICTIONARY, MOVES THE NAME, INDEX, 00201000
  208. * AND SIZE TO A BUFFER, AND CALLS THE APPROPRIATE 00202000
  209. * ROUTINE (DMSCWR, DMSPIO, DMSBWR) TO OUTPUT THE 00203000
  210. * CONTENTS OF THE BUFFER, AT THE TERMINAL, PRINTER OR 00204000
  211. * ONTO DISK. DMSLBM REPEATS THIS FOR EACH ENTRY IN THE 00205000
  212. * DICTIONARY. WHEN ALL ENTRIES ARE PROCESSED, DMSLBM 00206000
  213. * RETURNS TO THE CALLING PROGRAM. 00207000
  214. * 00208000
  215. * TABLE/RECORD/FORMATS: THE FORMATS OF THE MACRO 00209000
  216. * DICTIONARY AND THE DICTIONARY HEADER RECORD ARE 00210000
  217. * DESCRIBED BELOW. 00211000
  218. * 00212000
  219. * MACRO DICTIONARY: IN THE MACRO DICTIONARY 00213000
  220. * EACH ENTRY IS TWELVE BYTES IN LENGTH AND 00214000
  221. * CONTAINS TWO FIELDS. THE NAME FIELD (EIGHT BYTES) 00215000
  222. * CONTAINS THE NAME OF THE MACRO. THE INDEX FIELD (2 00216000
  223. * BYTES) INDICATES WHERE, WITHIN THE MACRO LIBRARY, THE 00217000
  224. * FIRST RECORD (ITEM) IN THE MACRO IS LOCATED. THE 00218000
  225. * INDEX FIELD (2 BYTES) IS EXPRESSED AS AN ITEM NUMBER. 00219000
  226. * 00220000
  227. * DICTIONARY HEADER RECORD: THE DICTIONARY HEADER 00221000
  228. * RECORD DEFINES THE LOCATION AND SIZE 00222000
  229. * OF THE MACRO DICTIONARY. IT IS AN 80-BYTE RECORD AND 00223000
  230. * CONTAINS THREE MEANINGFUL FIELDS. THE FIRST FIELD 00224000
  231. * (BYTES 1-6) CONTAINS THE CHARACTERS 'MACLIB'. THE 00225000
  232. * SECOND FIELD (BYTES 7 AND 8) IS A POINTER TO THE 00226000
  233. * START OF THE MACRO DICTIONARY. IT IS EXPRESSED AS AN 00227000
  234. * ITEM NUMBER. THE THIRD FIELD (BYTES 11 AND 12) 00228000
  235. * CONTAINS THE SIZE OF THE MACRO DICTIONARY (IN BYTES). 00229000
  236. * 00230000
  237. * 00231000
  238. * 00232000
  239. * ------------------------------------------ 00233000
  240. * | NAME OF FIRST MACRO INDEX | 00234000
  241. * ------------------------------------------ 00235000
  242. * | NAME OF SECOND MACRO INDEX | 00236000
  243. * ------------------------------------------ 00237000
  244. * | | 00238000
  245. * ------------------------------------------ 00239000
  246. * | NAME OF NTH MACRO | 00240000
  247. * ------------------------------------------ 00241000
  248. * 00242000
  249. * MACRO DICTIONARY FORMAT 00243000
  250. * 00244000
  251. * 00245000
  252. * ------------------------------------------- 00246000
  253. * | BYTES | CONTENTS | 00247000
  254. * ------------------------------------------- 00248000
  255. * | 1-6 | DMSLIB 00249000
  256. * | | | 00250000
  257. * | 7-8 | POINTER TO START OF MACRO | 00251000
  258. * | | DICTIONARY | 00252000
  259. * | | | 00253000
  260. * | 9-10 | NOT USED | 00254000
  261. * | | | 00255000
  262. * | 11-12 | SIZE OF MACRO DICTIONARY | 00256000
  263. * | | | 00257000
  264. * | 13-80 | NOT USED | 00258000
  265. * ------------------------------------------- 00259000
  266. * 00260000
  267. * DICTIONARY HEADER RECORD FORMAT 00261000
  268. *. 00262000
  269. EJECT 00263000
  270. *********************************************************************** 00264000
  271. * 00265000
  272. * INITIALIZE 00266000
  273. * 00267000
  274. *********************************************************************** 00268000
  275. DMSLBM START 00269000
  276. BALR R4,0 SET ADDRESSABILITY 00270000
  277. BCTR R4,0 00271000
  278. BCTR R4,0 00272000
  279. USING DMSLBM,R4,R5 00273000
  280. LA R5,4095(R4) SET SECOND BASE V0516 00274000
  281. LA R5,1(,R5) V0516 00275000
  282. REGEQU 00276000
  283. USING NUCON,R0 00277000
  284. LR PLIST,1 SAVE PARAMETER LIST POINTER 00278000
  285. ST R14,R14SAVE SAVE A LINKAGE REGISTER @VA04691 00278100
  286. XC ERRCODE(2),ERRCODE INIT EROR FILED 00279000
  287. MVC INTYPE,=CL8'MACRO' 00280000
  288. MVC OUTTYPE,=CL8'MACLIB' ... 00281000
  289. MVC INITNO,=H'0' ... 00282000
  290. MVC OUTITNO,=H'0' ... 00283000
  291. MVC INMODE(2),=2C' ' CHECK ALL MODES 00284000
  292. MVC OUTMODE,=CL2'A1' 00285000
  293. LA TEMP,BUFFER ... 00286000
  294. ST TEMP,INBUFF ... 00287000
  295. ST TEMP,OUTBUFF ... 00288000
  296. LA TEMP,80 ... 00289000
  297. ST TEMP,INSIZE ... 00290000
  298. ST TEMP,OUTSIZE ... 00291000
  299. MVI INFV,C'F' ... 00292000
  300. MVI OUTFV,C'F' ... 00293000
  301. MVC INNOIT,=H'1' ... 00294000
  302. MVC OUTNOIT,=H'1' ... 00295000
  303. LA MACTBL,MACTBLLC ... 00296000
  304. ST MACTBL,MACTBLSV ... 00297000
  305. LA TEMP,MACBUF ... 00298000
  306. O TEMP,=X'01000000' ... 00299000
  307. ST TEMP,MACPRT+8 ... 00300000
  308. MVC MACPRT+12(4),MACPRTX ... 00301000
  309. CLI 8(PLIST),X'FF' IS COMMAND SPECIFIED 00302000
  310. BE ERR047E NO, ERROR 00303000
  311. CLI 16(PLIST),X'FF' IS LIBRARY NAME SPECIFIED? @VA02856 00304000
  312. BE ERR046E YES, ERROR @VA02856 00305000
  313. MVC OUTNAME,16(PLIST) SET MACLIB FILE NAME 00306000
  314. CLI OUTNAME,C'*' * FOR MACLIB NAME V0516 00307000
  315. BE ERR046E YES, ERROR @VA02856 00308000
  316. LM RG7,RG9,COMLOOK LOOK UP COMMAND 00309000
  317. SR SWT,SWT CLEAR SWITCH (LIST/PRINT) 00310000
  318. LOOK CLC 0(8,RG7),8(PLIST) ... 00311000
  319. BE COMOK COMMAND FOUND,OK 00312000
  320. BXLE RG7,RG8,LOOK NOT FOUND YET, KEEP LOOKING 00313000
  321. LA PLIST,8(PLIST) POINT TO INVALID FUNCTION 00314000
  322. B ERR014E COMMAND NOT FOUND, ERROR 00315000
  323. COMOK CLI 16(PLIST),X'FF' LIBRARY NAME SPECIFIED 00316000
  324. BE ERR046E NO, ERROR 00317000
  325. L TEMP,8(0,RG7) GET ADDRESS OF COMMAND 00318000
  326. LA PLIST,24(0,PLIST) SET UP PLIST 00319000
  327. BR TEMP AND AWAY WE GO ... 00320000
  328. EJECT 00321000
  329. *********************************************************************** 00322000
  330. * 00323000
  331. * GENERATE NEW MACLIB 00324000
  332. * 00325000
  333. *********************************************************************** 00326000
  334. GEN EQU * 00327000
  335. LA R1,OUT ERASE OLD MACLIB 00328000
  336. MVC 0(8,R1),=CL8'STATE' 00329000
  337. SVC 202 CHECK FOR LIBRARY 00330000
  338. DC AL4(GENSTER) 00331000
  339. MVC 0(8,R1),=CL8'ERASE' 00332000
  340. SVC 202 00333000
  341. DC AL4(*+4) 00334000
  342. B WRDUM 00335000
  343. GENSTER CH R15,=H'28' FILE NOT FOUND 00336000
  344. BE WRDUM YES 00337000
  345. B ERRETRN SOMETHING WRONG 00338000
  346. WRDUM LA INDEX,1 SET INDEX 00339000
  347. MVC OUTBUFF,INBUFF RESTORE BUFFER ADDRESS 00340000
  348. XC 0(12,MACTBL),0(MACTBL) ZERO 1ST ENTRY V0516 00341000
  349. MVC 8(2,MACTBL),=H'2' INITIALIZE 1ST MEMBER INDEX V0516 00342000
  350. MVC BUFFER+3(3),=CL3'***' INDICATE LIBRARY IS VULNERV0516 00343000
  351. MVC 0(8,R1),=CL8'WRBUF' WRITE DUMMY RECORD 00344000
  352. SVC 202 00345000
  353. DC AL4(ERR105S) 00346000
  354. OI FLAGS1,X'20' INDICATE ADDITIONS BEING MADE V0516 00347000
  355. GLOOP1 SR SWT,SWT CLEAR SWITCH REGISTER 00348000
  356. CLI 0(PLIST),X'FF' ANY MORE IN FILES ? 00349000
  357. BE GFINI YES, FINISH UP 00350000
  358. NI FLAGS1,255-X'40' RESET END BIT 00351000
  359. MVC IN+8(8),0(PLIST) NO, GET NEXT FILE NAME 00352000
  360. LA PLIST,8(0,PLIST) ADV. PLIST PTR. FOR NEXT TIME DL 00353000
  361. MVC INMODE(2),=2C' ' CHECK ALL MODES 00354000
  362. MVC INTYPE,=CL8'MACRO' CHECK FOR FILETYPE OF MACRO 00355000
  363. LA R1,IN CHECK FOR INPUT MACRO FILE 00356000
  364. MVC 0(8,R1),=CL8'STATE' 00357000
  365. SVC 202 00358000
  366. DC AL4(INSTER) 00359000
  367. BAL R8,VALIDITY CHECK THIS MACRO FILE V0516 00360000
  368. MVC FPNAM(18),INNAME SET FN FT FM V0516 00361000
  369. MVC INITNO,=H'0' RE-INITIALIZE.. 00362000
  370. MVC INNOIT,=H'1' 00363000
  371. MVI FLAGS,MACNXT MACRO CARD NEXT 00364000
  372. GLOOP2 LA R1,IN READ FROM INPUT FILE 00365000
  373. MVC 0(8,R1),=CL8'RDBUF' 00366000
  374. SVC 202 00367000
  375. DC AL4(GEOF) 00368000
  376. GLOOP2A CLI FLAGS,MACNXT ARE WE BETWEEN MACROS V0516 00369000
  377. BNE GLOOP2B NO, OMIT CHECKS V0516 00370000
  378. CLC BUFFER(2),=CL2'./' IEBUPDTE CARD ? V0516 00371000
  379. BE GLOOP2 YES, IGNORE IT 00372000
  380. CLC BUFFER(4),=XL4'61FFFF61' MACLIB EOF CARD V0516 00373000
  381. BE GLOOP2 YES, IGNORE IT V0516 00374000
  382. CLC BUFFER+9(6),CATALS CATALS CARD? @VM03253 00375000
  383. BE GLOOP2 YES, SKIP RECORD @VM03253 00376000
  384. CLC BUFFER+9(3),END END CARD @VM03253 00377000
  385. BNE NEXTCK @VA05421 00378100
  386. CLI BUFFER,C'*' IS THIS BY CHANCE A COMMENT CARD @VA05421 00378200
  387. BNE GLOOP2 NO AN END CARD @VA05421 00378300
  388. * VA05421 00378400
  389. NEXTCK EQU * @VA05421 00378500
  390. CLC BUFFER(2),SLASHAST '/*'? @VM03253 00379000
  391. BE GLOOP2 YES, SKIP RECORD @VM03253 00380000
  392. GLOOP2B LA R1,OUT WRITE THIS RECORD V0516 00381000
  393. MVC 0(8,R1),=CL8'WRBUF' 00382000
  394. SVC 202 00383000
  395. DC AL4(ERR105S) 00384000
  396. LTR SWT,SWT MULTIPLE COPIES? @VA04600 00384250
  397. BNP ADVANCE NO; SKIP @VA04600 00384500
  398. CLC BUFFER(6),CSCOPY COPY CONTROL STATEMENT? @VA04690 00385100
  399. BE COPYNXT YES, PROCESS IT 00386000
  400. LTR SWT,SWT IS THIS A COPY FILE? @VA04600 00387000
  401. ADVANCE LA INDEX,1(,INDEX) (ADVANCE INDEX) @VA04600 00388000
  402. BNZ GLOOP2 YES, PROCESS NEXT CARD 00389000
  403. CLI BUFFER,C'*' IS IT A COMMENT CARD 00390000
  404. BE GLOOP2 YES 00391000
  405. CLI BUFFER+1,C'*' IS COL 2 AN ASTERISK DL 00392000
  406. BE GLOOP2 DL 00393000
  407. BAL SUBR,SCAN GO SCAN FOR AN OPERATION CODE 00394000
  408. LTR RG7,RG7 WAS ONE FOUND? 00395000
  409. BNZ CKMAC YES, GO CHECK FOR 'MACRO' CARD 00396000
  410. CLI FLAGS,MACNXT NO, WAS A 'MACRO' CARD EXPECTED? 00397000
  411. BE ERR056W YES, ERROR P3043 00398000
  412. B GLOOP2 NO, COPY THE CARD INTO THE MACLIB FILE 00399000
  413. INSTER CH R15,=H'28' FILE NOT FOUND 00400000
  414. BE CKCPY YES, CHECK FOR COPY FILE 00401000
  415. CH R15,=H'20' RETURN CODE OF 20 FROM STATE @VA01845 00402000
  416. * FOR INVALID '(' 00403000
  417. BNE ERRETRN STATE INVALIDTYPE? @VA02822 00404000
  418. STH R15,ERRCODE @VA02822 00405000
  419. B GLOOP1 @VA02822 00406000
  420. * INDICATION 00407000
  421. CKMAC CLI CONFLG,X'80' IS CONTINUATION FLAG ON? @VA02823 00408000
  422. BNE CCKMAC NO, THEN CONTINUE NORMALLY @VA02823 00409000
  423. CLI BUFFER+71,X'40' CONTINUATION CARD? @VA02823 00410000
  424. BNE GLOOP2 NO, THEN CONTINUE @VA02823 00411000
  425. MVI CONFLG,X'00' TURN FLAG OFF @VA02823 00412000
  426. B GLOOP2 @VA02823 00413000
  427. CCKMAC CLC 0(6,RG7),=CL6'MACRO' IS IT MACRO? @VA02823 00414000
  428. BE GMACRO YES 00415000
  429. CLI FLAGS,MACNXT ARE WE IN PHASE 00416000
  430. BE ERR056W DECK NOT IN ORDER P3043 00417000
  431. CLC 0(5,RG7),=CL5'MEND' IS IT A MEND CARD? 00418000
  432. BNE GLOOP2 NO, TRANSFER TO GLOOP2 00419000
  433. CKMAC1 EQU * 00420000
  434. MVI BUFFER,X'40' 00421000
  435. MVC BUFFER+1(79),BUFFER 00422000
  436. MVC BUFFER(4),=XL4'61FFFF61' MOVE IN SLASH CARD 00423000
  437. LA R1,OUT GO WRITE IT OUT 00424000
  438. MVC 0(8,R1),=CL8'WRBUF' 00425000
  439. SVC 202 00426000
  440. DC AL4(ERR105S) 00427000
  441. B GMEND 00428000
  442. GMACRO CLI FLAGS,MENDNXT ARE WE IN ORDER V0516 00429000
  443. BE ERR056W DECK NOT IN ORDER P3043 00430000
  444. MVI FLAGS,MENDNXT SET FLAG 00431000
  445. LA R1,IN READ FROM INPUT 00432000
  446. MVC 0(8,R1),=CL8'RDBUF' 00433000
  447. SVC 202 00434000
  448. DC AL4(GEOF) 00435000
  449. BAL SUBR,SCAN GO SCAN FOR MACRO TITLE 00436000
  450. LTR RG7,RG7 IS THERE ONE? 00437000
  451. BZ ERR056W NO, ERROR 00438000
  452. TRT 0(9,RG7),BLFIND YES, FIND TRAILING BLANK 00439000
  453. BC 8,ERR056W MACRO NAME LONGER THAN 8 LETTERS 00440000
  454. SR 1,RG7 COMPUTE NAME LENGTH FOR MOVE 00441000
  455. BCTR 1,0 00442000
  456. MVC 0(8,MACTBL),=CL8' ' ... 00443000
  457. EX 1,MOVE MOVE NAME TO DICTIONARY 00444000
  458. TM FLAGS1,X'80' ARE WE REPPING ? 00445000
  459. BNO *+8 NO,SKIP CHECK 00446000
  460. BAL SUBR,REPCHECK DELETE THIS ENTRY IF IT EXISTS 00447000
  461. B GLOOP2A CARD ALREADY READ, CONTINUE 00448000
  462. MOVE MVC 0(0,MACTBL),0(RG7) THIS INSTRUCTION IS EXECUTED.. 00449000
  463. EJECT 00450100
  464. SCAN LA RG7,BUFFER+1 SET INDEXES FOR SCAN DL 00451000
  465. LA RG8,1 00452000
  466. LA RG9,BUFFER+71 00453000
  467. CLI 0(RG9),X'40' IS THIS A CONTINUATION ? @VA02823 00454000
  468. BE NOCNT NO, CONTINUE NORMALLY @VA02823 00455000
  469. MVI CONFLG,X'80' SET CONFLG FOR CONT CHECK @VA02823 00456000
  470. NOCNT CLI BUFFER,C' ' DOES A SYMBOL EXIST? @VA02823 00457000
  471. BE SCAN3 NO, GO SCAN FOR OP CODE 00458000
  472. SCAN1 CLI 0(RG7),C' ' YES, LOOK FOR END OF SYMBOL 00459000
  473. BE FNDOP END FOUND, GO SCAN FOR OP CODE 00460000
  474. BXLE RG7,RG8,SCAN1 NOT FOUND, INCREMENT AND LOOP 00461000
  475. SCAN2 SR RG7,RG7 OP CODE NOT FOUND, SET USER FLAG 00462000
  476. OPFND BR SUBR RETURN TO CALLER 00463000
  477. FNDOP LA RG7,1(,RG7) ADVANCE BUFFER ADDRESS TO NEXT CHAR. 00464000
  478. SCAN3 CLI 0(RG7),C' ' SCAN FOR FIRST NON-BLANK CHAR. 00465000
  479. BNE OPFND NOT BLANK, BRANCH 00466000
  480. BXLE RG7,RG8,SCAN3 ELSE INCREMENT AND LOOP 00467000
  481. B SCAN2 OP CODE NOT FOUND, GO CK PHASE ERR 00468000
  482. EJECT 00468100
  483. GMEND LA INDEX,1(0,INDEX) INCREMENT INDEX FOR 'XL4'61FFFF61'CARD 00469000
  484. LA MACTBL,12(0,MACTBL) ADVANCE TO NEXT ENTRY IN DICTIONARY 00470000
  485. LR R15,MACTBL GET CURRENT DICTIONARY SLOT V0516 00471000
  486. S R15,MACTBLSV DETERMINE CURRENT LENGTH V0516 00472000
  487. ST R15,MACTBLLG SAVE LENGTH V0516 00473000
  488. C MACTBL,FREELOWE WILL IN STOR. DICT EXCEED LIMITV0516 00474000
  489. BH ERR109S BRANCH IF EXCEEDS V0516 00475000
  490. XC 0(12,MACTBL),0(MACTBL) CLEAR ENTRY TO ZERO V0516 00476000
  491. LTR SWT,SWT IS THIS A COPY FILE ? 00477000
  492. BZ GMEND1 NOPE 00478000
  493. TM FLAGS1,X'40' END FLAG ON ? 00479000
  494. BO GMENDA YES, FINISH UP 00480000
  495. MVC 0(8,MACTBL),COPYSAVE NO, MOVE IN SAVED COPY FILE NA 00481000
  496. BAL R14,XCHECK SET AND CHECK INDEX @VA04691 00482100
  497. TM FLAGS1,X'80' IS THIS A REP FUNCTION ? 00483000
  498. BNO GLOOP2 NO 00484000
  499. BAL SUBR,REPCHECK CHECK THE ENTRY NAME 00485000
  500. B GLOOP2 PROCESS NEXT COPY ENTRY 00486000
  501. GMENDA BAL R14,XCHECK SET AND CHECK INDEX @VA04691 00487100
  502. BCTR INDEX,0 ADJUST INDEX COUNTER V0516 00488000
  503. B GEOF2 GO CLOSE FILE 00489000
  504. GMEND1 LA INDEX,1(,INDEX) SET MACRO INDEX IN DICT. V0516 00490000
  505. BAL R14,XCHECK SET AND CHECK INDEX @VA04691 00491100
  506. BCTR INDEX,0 V0516 00492000
  507. MVI FLAGS,MACNXT SET FLAGS 00493000
  508. B GLOOP2 CONTINUE 00494000
  509. GEOF C 15,=F'12' IS IT AN EOF 00495000
  510. BNE ERR104S NO, ERROR 00496000
  511. LTR SWT,SWT IS THIS A COPY FILE 00497000
  512. BZ GEOF1 NO, CLOSE THE FILE 00498000
  513. OI FLAGS1,X'40' TURN ON END BIT 00499000
  514. B CKMAC1 FINISH UP THE MACRO LIBRARY 00500000
  515. EJECT 00501000
  516. GEOF1 EQU * 00502000
  517. CLI FLAGS,MACNXT DID EOF OCCUR IN MIDDLE OF MACRO 00503000
  518. BNE ERR056W DECK NOT IN ORDER P3043 00504000
  519. GEOF2 LA R1,IN CLOSE THE IN FILE 00505000
  520. MVC 0(8,R1),=CL8'FINIS' 00506000
  521. SVC 202 00507000
  522. DC AL4(ERR907T) 00508000
  523. B GLOOP1 CONTINUE 00509000
  524. GFINI CLC MACTBLLG(4),=4X'00' NULL DICTIONARY V0516 00510000
  525. BNE GFINI3 NO V0516 00511000
  526. LA R1,OUT ERASE MACLIB 00512000
  527. MVC 0(8,R1),=CL8'ERASE' 00513000
  528. SVC 202 00514000
  529. DC AL4(*+4) 00515000
  530. B ERR213W 00516000
  531. GFINI3 EQU * COMPACT ROUTINE JOINS HERE 00517000
  532. L RG7,MACTBLSV SET INDEXES TO WRITE DICTIONARY ON DISK 00518000
  533. LA RG8,72 00519000
  534. L RG9,MACTBLLG ... 00520000
  535. LA RG9,0(RG7,RG9) ... 00521000
  536. GWRDICT CR RG7,RG9 AT END OF DICT. V0516 00522000
  537. BE WRTHDR YES V0516 00523000
  538. MVC BUFFER(72),0(RG7) GET PART OF DICTIONARY V0516 00524000
  539. XC BUFFER+72(8),BUFFER+72 ZERO UNUSED PORTION V0516 00525000
  540. LA R1,OUT WRITE IT 00526000
  541. MVC 0(8,R1),=CL8'WRBUF' 00527000
  542. SVC 202 00528000
  543. DC AL4(ERR105S) 00529000
  544. BXLE RG7,RG8,GWRDICT ... 00530000
  545. WRTHDR MVI BUFFER,X'40' CLEAR BUFFER V0516 00531000
  546. MVC BUFFER+1(79),BUFFER 00532000
  547. MVC BUFFER(6),=CL6'DMSLIB' SET DICTIONARY HEADER NAME 00533000
  548. LA INDEX,1(0,INDEX) CALCULATE LOC. OF DICTIONARY 00534000
  549. STH INDEX,BUFFER+6 LOC OF DICTIONARY 00535000
  550. MVC BUFFER+8(4),MACTBLLG LENGTH OF DICTIONARY 00536000
  551. MVC OUTITNO(2),=H'1' AT FRONT OF FILE 00537000
  552. SVC 202 WRITE DICTIONARY HEADER 00538000
  553. DC AL4(ERR105S) 00539000
  554. B RETURN DL 00540000
  555. EJECT 00540100
  556. CKCPY MVC INTYPE,=CL8'COPY' 00541000
  557. LA R1,IN CHECK FOR COPY FILE 00542000
  558. SVC 202 00543000
  559. DC AL4(ERR002W) 00544000
  560. BAL R8,VALIDITY CHECK THIS COPY FILE V0516 00545000
  561. LA R1,IN READ A CARD 00546000
  562. MVC 0(8,R1),=CL8'RDBUF' 00547000
  563. SVC 202 00548000
  564. DC AL4(ERR104S) 00549000
  565. LA INDEX,1(,INDEX) SET BEGINNING INDEX NO 00550000
  566. BAL R14,XCHECK SET AND CHECK INDEX @VA04691 00551100
  567. CLC BUFFER(6),CSCOPY COPY FILE NAME CARD? @VA04690 00552100
  568. BNE COPY03 NO, THIS IS SINGLE ENTRY COPY FL. 00553000
  569. LA SWT,1 YES, INDICATE MULTI ENTRY COPY FILE 00554000
  570. BAL SUBR,SCAN LOOK FOR COPY MEMBER NAME 00555000
  571. LTR R7,R7 WAS ONE FOUND 00556000
  572. BZ ERR056W NO 00557000
  573. MVC 0(8,MACTBL),0(R7) YES, ENTER INTO DICTIONARY 00558000
  574. TM FLAGS1,X'80' IS THIS A REP FUNCTION ? 00559000
  575. BNO GLOOP2 NO 00560000
  576. BAL SUBR,REPCHECK YES, CHECK COPY NAME 00561000
  577. B GLOOP2 GET NEXT CARD 00562000
  578. COPY03 L SWT,=4X'FF' INDICATE SINGLE ENTRY COPY FILE @VA04600 00563000
  579. MVC 0(8,MACTBL),INNAME USE FILE NAME FROM USER COMMAND 00564000
  580. TM FLAGS1,X'80' IS THIS A REP FUNCTION ? 00565000
  581. BNO *+8 NO 00566000
  582. BAL SUBR,REPCHECK YES CHECK THE COPY NAME 00567000
  583. B GLOOP2A WRITE OUT THIS CARD 00568000
  584. COPYNXT LA R1,OUT GET CURRENT WRITE POINTER 00569000
  585. MVC 0(8,R1),=CL8'STATE' 00570000
  586. SVC 202 00571000
  587. L R11,OUTBUFF ADDRESS OF FST COPY 00572000
  588. L R11,20(,R11) GET WRITE AND READ POINTERS 00573000
  589. S R11,=X'00010000' DECREMENT WRITE POINTER BY ONE 00574000
  590. ST R11,TEMST PUT IN TEMPORARY STOR 00575000
  591. MVC WRPT(4),TEMST MOVE WRITE READ POINTERS TO POINT PLIST 00576000
  592. MVC FPNAM(18),OUTNAME NAME,TYPE,MODE TO P-LIST @VA04691 00577100
  593. LA R1,PNT POINT PLIST TO R1 00580000
  594. SVC 202 POINT THE IN FILE WR PTR BACK ONE 00581000
  595. DC AL4(*+4) 00582000
  596. MVC OUTBUFF(4),INBUFF RESTORE READ PLIST 00583000
  597. BAL SUBR,SCAN LOOK FOR MEMBER NAME 00584000
  598. LTR R7,R7 FOUND 00585000
  599. BZ ERR056W NO 00586000
  600. MVC COPYSAVE(8),0(R7) YES, SAVE IT 00587000
  601. B CKMAC1 FINISH THIS COPY ENTRY V0516 00588000
  602. EJECT 00589000
  603. ****************************************************************** 00590000
  604. * 00591000
  605. * CHECK INPUT FILE FOR FIXED 80 BYTE RECORDS. 00592000
  606. * CHECK THAT NEW ADDITION WILL NOT CAUSE MACLIB TO EXCEED 65K 00593000
  607. * ITEMS. 00594000
  608. * CHECK THAT NEW ADDITION WILL FIT ON OUTPUT DISK. 00595000
  609. * 00596000
  610. ****************************************************************** 00597000
  611. USING FSTSECT,TEMP V0516 00598000
  612. VALIDITY L TEMP,INBUFF GET FST ADDRESS V0516 00599000
  613. MVC INBUFF,OUTBUFF RESET READ PLIST @VA0516 00600000
  614. MVC INMODE,FSTM SET FILEMODE IN READ PLIST V0516 00601000
  615. CLI FSTFV,C'F' FIXED FORMAT V0516 00602000
  616. BNE ERR056W NO, THIS FILE INELIGIBLE V0516 00603000
  617. CLC FSTIL,=F'80' 80 BYTE RECORDS V0516 00604000
  618. BNE ERR056W NO V0516 00605000
  619. L R1,MACTBLLG DICTIONARY LENGTH V0516 00606000
  620. LA R1,156(,R1) PLUS 12 PLUS EOF REC. PLUS OVFL V0516 00607000
  621. SR R0,R0 CLEAR FOR DIVIDE V0516 00608000
  622. D R0,=F'72' GET NO. OF RECORDS THIS IS V0516 00609000
  623. LH R0,FSTIC NO. RECORDS THIS INPUT FILE V0516 00610000
  624. N R0,MAXHW CLEAR PROPAGATION V0516 00611000
  625. AR R1,R0 TOTAL NEW RECORDS THIS FILE V0516 00612000
  626. LR R7,R1 SAVE COUNT V0516 00613000
  627. DROP TEMP V0516 00614000
  628. USING ADTSECT,TEMP V0516 00615000
  629. TM FLAGS2,CKVAL HAVE WE BEEN HERE BEFORE? @VA03532 00616000
  630. BO GETNUM YES, SO GO DON'T DO IT AGAIN @VA03532 00617000
  631. OI FLAGS2,CKVAL SET BEEN HERE FLAG @VA03532 00618000
  632. LA R1,OUT CALL ADT LOOK UP FOR MACLIB V0516 00619000
  633. L R15,AADTLKW @VA03532 00621000
  634. BALR R14,R15 V0516 00622000
  635. LTR R15,R15 CHECK COD CODE @VA03532 00623000
  636. BNZ ERR157S NOT OK THEN ERROR @VA03532 00624000
  637. BCTR R0,0 SAVE 1 BLOCK FOR ME @VA03532 00625000
  638. LR TEMP,R0 GET NO BLOCKS LEFT @VA03532 00627000
  639. MH TEMP,=H'10' TIMES TEN REC/BLOCK V0516 00628000
  640. ST TEMP,TOTAL SAVE NO RECORDS @VA03532 00629000
  641. GETNUM L R15,TOTAL GET TOTAL ROOM LEFT @VA03532 00630000
  642. CR R7,R15 DO WE HAVE ENOUGH? @VA03532 00631000
  643. BNL ERR157S NO, THEN ERROR @VA03532 00632000
  644. SR R15,R7 SUBTRACT AMOUNT FROM TOTAL @VA03532 00633000
  645. ST R15,TOTAL AND PUT BACK CORRECTED AMOUNT @VA03532 00634000
  646. AR R7,INDEX COMPUTE HIGHEST ITEM NO. THIS ADDITIV0516 00635000
  647. C R7,=X'0000FFFD' CHECK 65K MAX @VA03532 00636000
  648. BH ERR157S WON'T FIT IF HIGHER V0516 00637000
  649. BR R8 SUCCESSFUL RETURN V0516 00638000
  650. EJECT 00639000
  651. ********************************************************************** 00640000
  652. * 00641000
  653. * ADD MACROS TO EXISTING MACLIB 00642000
  654. * 00643000
  655. ********************************************************************** 00644000
  656. ADD CLI 0(PLIST),X'FF' ANY INPUT NAMES V0516 00645000
  657. BE ERR001E NO, ERROR V0516 00646000
  658. BAL SUBR,READICT READ IN DICTIONARY 00647000
  659. OI FLAGS1,X'20' INDICATE ADD IN PROGRESS V0273 00648000
  660. XC OUTITNO(4),OUTITNO CLEAR ITEM NUMBER 00649000
  661. LA R1,OUT CLOSE MACLIB 00650000
  662. MVC 0(8,R1),=CL8'FINIS' 00651000
  663. SVC 202 00652000
  664. DC AL4(ERR907T) 00653000
  665. XC OUTITNO(4),OUTITNO CLEAR 'POINT' READ/WRITE POINTERS 00654000
  666. STH INDEX,OUTITNO SET TO WRITE MODE AT RIGHT PLACE 00655000
  667. LA R1,OUT POINT TO END OF MACLIB 00656000
  668. MVC 0(8,R1),=CL8'POINT' 00657000
  669. SVC 202 00658000
  670. DC AL4(ERR907T) 00659000
  671. XC OUTITNO,OUTITNO RESET ITEM NUMBER 00660000
  672. MVC OUTBUFF,INBUFF RESET BUFFER ADDRESS 00661000
  673. L MACTBL,MACTBLSV SET MACRO DICTIONARY POINTER 00662000
  674. A MACTBL,MACTBLLG ... 00663000
  675. BAL R14,XCHECK SET AND CHECK INDEX @VA04691 00664100
  676. BCTR INDEX,0 ADJUST INDEX 00665000
  677. B GLOOP1 PRETEND THAT WE ARE CREATING THE FILE 00666000
  678. EJECT 00667000
  679. ********************************************************************** 00668000
  680. * 00669000
  681. * REPLACE A MACRO IN AN EXISTING MACLIB 00670000
  682. * 00671000
  683. ********************************************************************** 00672000
  684. * 00673000
  685. REPLACE EQU * 00674000
  686. OI FLAGS1,X'80' INDICATE REP FUNCTION 00675000
  687. B ADD TREAT AS ADD 00676000
  688. REPCHECK ST SUBR,TEMST+4 SAVE RETURN ADDRESS 00677000
  689. ST PLIST,TEMST SAVE PLIST POINTER 00678000
  690. LR PLIST,MACTBL POINT TO MACRO OR COPY NAME 00679000
  691. BAL SUBR,MACSEEK SEE IF IT ALREADY EXISTS 00680000
  692. L PLIST,TEMST RESTOR PLIST PTR 00681000
  693. L SUBR,TEMST+4 RESTORE RETURN REG 00682000
  694. BC 7,ERR013W MSG IF NAME NOT FOUND 00683000
  695. XC 0(8,RG7),0(RG7) DELETED DICTIONARY ENTRY 00684000
  696. BR SUBR RETURN 00685000
  697. * 00686000
  698. DCTWR EQU * PREPARE TO WRITE DICTIONARY 00687000
  699. L MACTBL,MACTBLLG 00688000
  700. XC OUTITNO(4),OUTITNO CLEAR 'POINT' READ/WRITE POINTERS 00689000
  701. STH INDEX,OUTITNO MOVE THE WRITE POINTER OUT TO 00690000
  702. LA R1,OUT OLD DICTIONARY 00691000
  703. MVC 0(8,R1),=CL8'POINT' 00692000
  704. SVC 202 00693000
  705. DC AL4(ERR907T) 00694000
  706. XC OUTITNO,OUTITNO CLEAR THE ITEMNO AGAIN FOR DICT WRT 00695000
  707. MVC OUTBUFF,INBUFF RESET THE BUFFER ADDRESS 00696000
  708. BCT INDEX,GFINI3 REDUCE INDEX, WRITE DICTIONARY V0516 00697000
  709. * SHOULD NEVER DROP THRU HERE 00698000
  710. EJECT 00699000
  711. ********************************************************************** 00700000
  712. * 00701000
  713. * DELETE A MACRO FROM AN EXISTING FILE 00702000
  714. * 00703000
  715. ********************************************************************** 00704000
  716. DELETE CLI 0(PLIST),X'FF' ANY NAMES TO DELETE V0516 00705000
  717. BE ERR001E NO, ERROR V0516 00706000
  718. BAL SUBR,READICT READ IN THE DICTIONARY 00707000
  719. DELEMAC BAL SUBR,MACSEEK SEE IF IT'S REALLY THERE 00708000
  720. LR R6,PLIST IN CASE MEMBER NOT FOUND 00709000
  721. BE DELMEM YES, DELETE IT 00710000
  722. LA SUBR,DELMEM1 SET RETURN FROM ERROR MESSAGE 00711000
  723. B ERR013W ISSUE WARNING 00712000
  724. DELMEM XC 0(8,RG7),0(RG7) BLANK DICTIONARY MEMBER NAME 00713000
  725. DELMEM1 LA PLIST,8(PLIST) POINT TO NEXT SPECIFIED NAME 00714000
  726. CLI 0(PLIST),X'FF' IS THIS THE END 00715000
  727. BNE DELEMAC BR ON NO TO DO MORE 00716000
  728. TM FLAG,NOMEMBER HAVE WE FOUND A MEMBER YET? @VA12809 00716010
  729. BNO SRCHOVER YES, DON'T SEARCH ANY FURTHER @VA12809 00716020
  730. CR RG7,RG9 ARE WE AT END OF DICTIONARY? @VA12809 00716030
  731. BNL ERASELIB YES, NO MEMBERS LEFT, DELETE LIB @VA12809 00716040
  732. SEEKMEMB EQU * @VA12809 00716050
  733. CLC 0(8,RG7),=8X'00' IS THIS A NULL ENTRY? @VA12809 00716060
  734. BE SKPRESET YES, GO SET UP FOR THE NEXT ONE @VA12809 00716070
  735. NI FLAG,255-NOMEMBER NO, LIBRARY IS NOT EMPTY @VA12809 00716080
  736. B SRCHOVER MEMBER FOUND, SEARCH OVER @VA12809 00716090
  737. SKPRESET EQU * @VA12809 00716100
  738. BXLE RG7,RG8,SEEKMEMB GO TRY THE NEXT ONE @VA12809 00716110
  739. ERASELIB EQU * @VA12809 00716120
  740. LA R1,OUT POINT TO OUTPUT FILE @VA12809 00716130
  741. MVC 0(8,R1),=CL8'ERASE' SET UP TO ERASE LIBRARY @VA12809 00716140
  742. SVC 202 AND DO IT @VA12809 00716150
  743. DC AL4(*+4) @VA12809 00716160
  744. B ERR213W GO TELL USER LIBRARY ERASED @VA12809 00716170
  745. SRCHOVER EQU * @VA12809 00716180
  746. XC OUTITNO(4),OUTITNO CLEAR READ/WRITE POINTERS 00717000
  747. LA R1,OUT CLOSE OUT FILE 00718000
  748. MVC 0(8,R1),=CL8'FINIS' 00719000
  749. SVC 202 00720000
  750. DC AL4(ERR907T) 00721000
  751. XC OUTITNO(4),OUTITNO CLEAR READ/WRITE AGAIN FOR POINT 00722000
  752. B DCTWR NOW GO WRITE DICTIONARY 00723000
  753. EJECT 00724000
  754. ********************************************************************** 00725000
  755. * 00726000
  756. * LIST MACRO DICTIONARY 00727000
  757. * 00728000
  758. ********************************************************************** 00729000
  759. LIST BAL SUBR,READICT GET MACLIB DICTIONARY IN CORE 00730000
  760. WRTERM MAPHDR,L'MAPHDR DISPLAY THE HEADINGS @VA04691 00731100
  761. SKPTYPE L RG7,MACTBLSV SET INDEXES 00732000
  762. L RG9,MACTBLLG ... 00733000
  763. LA RG8,12 ... 00734000
  764. LA RG9,0(RG7,RG9) ... 00735000
  765. SR RG9,RG8 ... 00736000
  766. LLOOP MVC PMAC,0(RG7) GET MACRO NAME 00737000
  767. MVC PMAC+8(L'MASK),MASK SET MASK FOR ED INSTRUCTION 00738000
  768. LH TEMP,8(0,RG7) GET INDEX OF MACRO IN PARTIONED DS 00739000
  769. N TEMP,MAXHW CLEAR PROPAGATION V0516 00740000
  770. LTR TEMP,TEMP NULL ENTRY? 00741000
  771. BZ LSTJN YES, THEN IGNORE 00742000
  772. CLI 0(RG7),X'00' DELETED ENTRY ? 00743000
  773. BE LSTJN YES, OMIT THIS ENTRY 00744000
  774. CVD TEMP,DOUBLE ... 00745000
  775. ED PNDX-1(6),DOUBLE+5 ... 00746000
  776. CR RG7,RG9 LAST NAME IN DICTIONARY 00747000
  777. BE ENDED YES 00748000
  778. LH TEMP,20(0,R7) INDEX OF NEXT MEMBER 00749000
  779. B STOR 00750000
  780. ENDED LH TEMP,DICITEM USE DICTIONARY ITEM NUMBER 00751000
  781. STOR N TEMP,MAXHW CLEAR PROPAGATION V0516 00752000
  782. LH R1,8(0,R7) CURRENT INDEX V0516 00753000
  783. N R1,MAXHW CLEAR PROPAGATION V0516 00754000
  784. SR TEMP,R1 LESS CURRENT INDEX V0516 00755000
  785. BCTR TEMP,0 ADJUST FOR EOF CARD 00756000
  786. CVD TEMP,DOUBLE ... 00757000
  787. ED PSZE(6),DOUBLE+5 ... DL 00758000
  788. LTR SWT,SWT IS IT REALLY A 'PRINT' REQUEST? 00759000
  789. BNZ MAP YES, GO DO A 'WRBUF' INSTEAD OF 'TYPLIN' 00760000
  790. LA R1,MACPRT TYPE DICTIONARY INFO 00761000
  791. MVC 0(8,R1),=CL8'TYPLIN' 00762000
  792. SVC 202 00763000
  793. LSTJN BXLE RG7,RG8,LLOOP CONTINUE THROUGH THE DICTIONARY 00764000
  794. B OFFPRINT CLOSE FILES 00765000
  795. * 00766000
  796. MAP LA R1,IN WRITE A LINE TO DISK 00767000
  797. MVC 0(8,R1),=CL8'WRBUF' 00768000
  798. SVC 202 00769000
  799. DC AL4(ERR105S) 00770000
  800. B LSTJN RETURN TO LOOP 00771000
  801. EJECT 00772000
  802. ******************************************************************* 00773000
  803. * 00774000
  804. * CREATE A PRINT FILE WITH FILETYPE=MAP 00775000
  805. * 00776000
  806. ******************************************************************* 00777000
  807. SPACE 1 @VA04590 00783000
  808. PRINT BAL SUBR,READICT READ IN MACRO DICTIONARY @VA04590 00784000
  809. LA TEMP,MAPHDR 00785000
  810. ST TEMP,INBUFF SET HEADER ADDRESS IN DISK PLIST 00786000
  811. LA TEMP,20 DL 00787000
  812. ST TEMP,INSIZE IN DISK PLIST 00788000
  813. LA R1,IN WRITE HEADER 00789000
  814. MVC 0(8,R1),=CL8'WRBUF' 00790000
  815. SVC 202 00791000
  816. DC AL4(ERR105S) @VA07183 00792100
  817. LA TEMP,MACBUF SET NORMAL BUFFER ADDRESS 00793000
  818. ST TEMP,INBUFF IN DISK PLIST 00794000
  819. B SKPTYPE NOW ENTER AS IF A 'LIST' CALL 00795000
  820. OFFPRINT EQU * OFFLINE PRINT COPY OF LIB MAP TR 00800000
  821. LA R1,IN CLOSE MAP FILE 00801000
  822. MVC 0(8,R1),=CL8'FINIS' 00802000
  823. SVC 202 00803000
  824. DC AL4(*+4) 00804000
  825. LTR SWT,SWT IS THIS PRINT PARAMETER 00805000
  826. BNP RETURN NO, RETURN 00806000
  827. MVC OP+8(18),INNAME SET MAP FILE ID 00807000
  828. MVC OP(8),=CL8'PRINT' SET TO PRINT ON SYSTEM PRINTER 00808000
  829. LA 1,OP POINT TO OFFLINE PLIST DL 00809000
  830. SVC 202 00810000
  831. DC AL4(*+4) @VA04590 00810200
  832. LA R1,IN @VA04590 00810400
  833. MVC 0(8,R1),=CL8'ERASE' ERASE MAP FILE @VA04590 00810600
  834. SVC 202 @VA04590 00810800
  835. DC AL4(RETURN) 00811000
  836. B RETURN TR 00812000
  837. MAP1 MVC INTYPE,=CL8'MAP' 00813000
  838. L SWT,=4X'FF' SET DEFAULT OPTION 'DISK' 00814000
  839. CLI 0(PLIST),X'FF' ANY OPTIONS 00815000
  840. BE OPEND NO 00816000
  841. CLI 0(PLIST),C'(' ANY OPTIONS 00817000
  842. BNE ERR070E UNEXPECTED PARAMETER 00818000
  843. NEXTOP LA PLIST,8(PLIST) POINT TO FIRST OPTION 00819000
  844. CLI 0(PLIST),X'FF' END OF OPTIONS 00820000
  845. BE OPEND YES 00821000
  846. CLI 0(PLIST),C')' END OF OPTIONS 00822000
  847. BE OPEND YES 00823000
  848. CLC 0(8,PLIST),=CL8'DISK' DISK OPTION 00824000
  849. BE DSK YES 00825000
  850. CLC 0(8,PLIST),=CL8'TERM' TERM OPTION 00826000
  851. BE TRM YES 00827000
  852. CLC 0(8,PLIST),=CL8'PRINT' PRINT OPTION 00828000
  853. BE PRT YES 00829000
  854. B ERR003E INVALID OPTION 00830000
  855. DSK L SWT,=4X'FF' SET FOR DISK 00831000
  856. B NEXTOP CHECK MORE OPTIONS 00832000
  857. TRM SR SWT,SWT SET FOR TERM 00833000
  858. B NEXTOP CHECK MORE OPTIONS 00834000
  859. PRT LA SWT,1 SET FOR PRINT 00835000
  860. B NEXTOP CHECK MORE OPTIONS 00836000
  861. OPEND MVC INNAME,OUTNAME MAP NAME = MACLIB NAME @VA04590 00836250
  862. MVC INMODE,=CL2'A1' MAP MODE IS A1 @VA04590 00836500
  863. DMSKEY NUCLEUS SET NUCLEUS KEY @VA07183 00836550
  864. LA R1,IN POINT TO PLIST @VA07183 00836600
  865. L R15,AADTLKP GET DMSLAD ADDRESS @VA07183 00836650
  866. BALR R14,R15 AND GO SEARCH ADT FOR DISK @VA07183 00836700
  867. DMSKEY RESET RESTORE USERS KEY @VA07183 00836750
  868. LTR R15,R15 WERE THERE ANY ERRORS? @VA07183 00836800
  869. BZ OPERASE BRANCH IF NOT @VA07183 00836850
  870. LTR SWT,SWT DO WE NEED DISK? @VA07183 00836900
  871. BZ LIST BRANCH IF NOT @VA07183 00836950
  872. B ERR104S ERROR IF NEEDED @VA07183 00837000
  873. OPERASE EQU * @VA07183 00837050
  874. DROP TEMP @VA07183 00837100
  875. USING ADTSECT,R1 @VA07183 00837150
  876. TM ADTFLG1,ADTFRW IS IT A R/W DISK? @VA07183 00837200
  877. BO SETPLIST BRANCH IF YES @VA07183 00837250
  878. LTR SWT,SWT DO WE NEED DISK? @VA07183 00837300
  879. BZ LIST BRANCH IF NOT @VA07183 00837350
  880. TM ADTFLG1,ADTFRO IS DISK R/O? @VA07183 00837400
  881. BZ ERR069 BRANCH IF NOT ATTACHED @VA07183 00837450
  882. LA R3,IN+TWO4 POINT TO FILEMODE @VA07183 00837500
  883. B ERR37 AND STATE R/0 DISK @VA07183 00837550
  884. DROP R1 @VA07183 00837600
  885. USING ADTSECT,TEMP @VA07183 00837650
  886. SETPLIST EQU * @VA07183 00837700
  887. LA R1,IN POINT TO PLIST AGAIN @VA07183 00837750
  888. MVC 0(EIGHT,R1),ERASE INDICATE ERASE @VA07183 00837800
  889. SVC 202 @VA07183 00837850
  890. DC AL4(*+4) @VA07183 00837900
  891. LTR SWT,SWT CHECK OPTION SWITCH @VA07183 00837950
  892. BZ LIST BRANCH IF TERM OPTION 00838000
  893. B PRINT BRANCH FOR DISK OR PRINT 00839000
  894. EJECT 00840000
  895. ********************************************************************** 00841000
  896. * 00842000
  897. * COMPACT A MACLIB WHICH HAS SOME GAPS 00843000
  898. * 00844000
  899. ********************************************************************** 00845000
  900. COMPACT NI FLAGS2,X'00' RESET FLAGS2 00846000
  901. CLI 0(PLIST),X'FF' END OF PARAMETERS 00847000
  902. BNE ERR070E NO, ERROR 00848000
  903. BAL SUBR,READICT GET OLD DICTIONARY 00849000
  904. XC OUTITNO(2),OUTITNO CLEAR ITEM NUMBER FOR SEQ. WRITES 00850000
  905. MVC IN(44),OUT GET BLOCK FOR INPUT 00851000
  906. L MACTBL,MACTBLSV GET DICTIONARY ADDRESS @VA04691 00852100
  907. L RG9,MACTBLLG AND ITS LENGTH 00853000
  908. LA RG8,12 ENTRY WIDTH 00854000
  909. ALR RG9,MACTBL POINT TO DICTIONARY END @VA04691 00855100
  910. SR RG9,RG8 AND NOW TO LAST ENTRY 00856000
  911. MVC OUTNAME(16),TEMPNAME USE TEMPORARY FILE @VA04105 00858100
  912. * NOW ERASE ANY OLD TEMPORARY FILE 00859000
  913. LA R1,OUT 00860000
  914. MVC 0(8,R1),=CL8'ERASE' 00861000
  915. SVC 202 00862000
  916. DC AL4(*+4) 00863000
  917. * WRITE A DUMMY DICTIONARY POINTER 00864000
  918. MVC 0(8,R1),=CL8'WRBUF' 00865000
  919. SVC 202 00866000
  920. DC AL4(TEMPERR) 00867000
  921. LA INDEX,2 POINTER TO FIRST RECORD @VA04691 00868500
  922. SPACE 1 00869000
  923. CCLOOP EQU * @VA04691 00869500
  924. LH SINDEX,8(,MACTBL) GET FIRST INPUT ITEM @VA04691 00870000
  925. N SINDEX,MAXHW CLEAR PROPAGATION @VA04691 00870500
  926. CLI 0(MACTBL),X'00' IS THIS A DELETED ENTRY? @VA04691 00871000
  927. BNE CLOOP2 NO 00872000
  928. L R10,MACTBLLG DECREMENT DICTIONARY LENGTH 00873000
  929. SR R10,RG8 00874000
  930. ST R10,MACTBLLG 00875000
  931. CLR MACTBL,RG9 LAST ENTRY IN DICTIONARY? @VA04691 00876100
  932. BE CCEXIT YES, FINISH UP 00877000
  933. LR R10,RG9 COMPRESS THIS ENTRY FROM DICTIONARY 00878000
  934. SLR R10,MACTBL REMAINING LENGTH @VA04691 00879100
  935. STM R6,R9,BUFFER SAVE SOME REGS P3011 00880000
  936. LA R8,12(,MACTBL) MOVE FROM ADDRESS @VA04691 00881100
  937. LR R7,R10 LENGTH OF TO LOCATION P3011 00883000
  938. LR R9,R10 LENGTH OF FROM PLUS PADDING P3011 00884000
  939. MVCL R6,R8 COMPRESS ENTRY FROM DICTIONARY P3011 00885000
  940. LM R6,R9,BUFFER GET REGS BACK P3011 00886000
  941. SR RG9,RG8 POINT TO NEW END OF DICTIONARY 00887000
  942. B CCLOOP PROCESS NEXT ENTRY 00888000
  943. SPACE 1 00889100
  944. CLOOP2 EQU * @VA04691 00889200
  945. BAL R14,XCHECK SET AND CHECK INDEX @VA04691 00889300
  946. TM FLAGS2,OLDLIB CONVERTING AN OLD LIBRARY FORMAT 00891000
  947. BNO CNOLD NO 00892000
  948. XC 10(2,MACTBL),10(MACTBL) YES, CLEAR OLD SIZE @VA04691 00893100
  949. CNOLD DS 0H 00894000
  950. CLOOP STH SINDEX,INITNO STORE READ ITEM NUMBER 00895000
  951. * READ FROM OLD MACLIB 00896000
  952. LA R1,IN READ FROM OLD MACLIB 00897000
  953. MVC 0(8,R1),=CL8'RDBUF' 00898000
  954. SVC 202 00899000
  955. DC AL4(ERR104S) 00900000
  956. * WRITE ONTO TEMP MACLIB 00901000
  957. LA R1,OUT 00902000
  958. MVC 0(8,R1),=CL8'WRBUF' 00903000
  959. SVC 202 00904000
  960. DC AL4(ERR105S) 00905000
  961. LA INDEX,1(,INDEX) ADVANCE WRITE COUNTER @VA04691 00906100
  962. LA SINDEX,1(,SINDEX) AND READ POINTER 00907000
  963. CLC BUFFER(4),=XL4'61FFFF61' END OF MEMBER 00908000
  964. BNE CLOOP NO, GET NEXT RECORD 00909000
  965. BXLE MACTBL,RG8,CCLOOP TRY NEXT MACRO @VA04691 00910100
  966. SPACE 1 00910200
  967. CCEXIT EQU * @VA04691 00910300
  968. BCT INDEX,GFINI3 CUT POINTER FOR DICT WRITE AND DO IT 00912000
  969. * SHOULD NOT DROP THROUGH HERE 00913000
  970. TEMPERR CH R15,=H'12' TRYING TO WRITE ON R/O DISK 00914000
  971. BNE ERR105S NO, SOME OTHER WRITE ERROR 00915000
  972. B ERR037E YES, TERMINATE WITH MESSAGE 00916000
  973. EJECT 00917000
  974. ********************************************************************** 00918000
  975. * 00919000
  976. * UTILITY ROUTINE TO READ MACRO DICTIONARY 00920000
  977. * 00921000
  978. ********************************************************************** 00922000
  979. READICT EQU * 00923000
  980. MVC OUTMODE(2),=CL2' ' DETERMINE IF MACLIB EXISTS 00924000
  981. LA R1,OUT 00925000
  982. MVC 0(8,R1),=CL8'STATE' 00926000
  983. SVC 202 00927000
  984. DC AL4(NODICT) 00928000
  985. L TEMP,OUTBUFF GET LOC. OF FST COPY 00929000
  986. MVC OUTMODE,24(TEMP) SET MODE 00930000
  987. L TEMP,FVSFSTAD-STATEFST(TEMP) Get ADT for file HRC015DS 00931100
  988. MVC OUTMODE(1),ADTM SET CORRECT MODE IN PLIST P3043 00932000
  989. CLC INTYPE(8),=CL8'MAP' IS THIS MAP FUNCTION 00933000
  990. BE AROUND DON'T CHECK R/W STATUS 00934000
  991. TM ADTFLG1,ADTFRW IS DISK READ/WRITE 00935000
  992. BNO ERR037E NO, ERROR 00936000
  993. AROUND EQU * 00937000
  994. MVC OUTBUFF,INBUFF RESET BUFFER ADDRESS 00938000
  995. MVC 0(8,R1),=CL8'RDBUF' READ 1ST RECORD 00939000
  996. SVC 202 00940000
  997. DC AL4(ERR104S) 00941000
  998. CLC BUFFER+3(3),=CL3'***' WAS MACLIB FUNCTION V0516 00942000
  999. * PREMATURELY ENDED 00943000
  1000. BE ERR167S YES, NOTE THAT FACT V0516 00944000
  1001. CLC BUFFER+3(3),=CL3'LIB' IS IT A LIB FILE 00945000
  1002. BNE ERR456E NO, ERROR 00946000
  1003. CLC BUFFER(3),=CL3'DMS' NEW FORMAT P3043 00947000
  1004. BE NOTOLD YES P3043 00948000
  1005. OI FLAGS2,OLDLIB YES, SET FLAG IN CASE OF COMPACT 00949000
  1006. NOTOLD CLC INTYPE(8),=CL8'MAP' MAP FUNCTION V0516 00950000
  1007. BE AROUND1 YES V0516 00951000
  1008. CLI 0(PLIST),X'FF' COMPRESS FUNCTION V0516 00952000
  1009. BE AROUND1 YES V0516 00953000
  1010. MVC 0(8,R1),=CL8'FINIS' CLOSE FILE FOR READING V0516 00954000
  1011. SVC 202 V0516 00955000
  1012. DC AL4(ERR907T) V0516 00956000
  1013. MVC 0(8,R1),=CL8'WRBUF' SET TO OVERWRITE HEADER OF MACLV0516 00957000
  1014. LA R15,1 SET TO WRITE ITEM 1 V0516 00958000
  1015. STH R15,OUTITNO V0516 00959000
  1016. MVC BUFFER+3(3),=CL3'***' INDICATE MACLIB IS VULNERAV0516 00960000
  1017. SVC 202 V0516 00961000
  1018. DC AL4(ERR105S) V0516 00962000
  1019. MVC 0(8,R1),=CL8'FINIS' RESET FOR READING V0516 00963000
  1020. SVC 202 V0516 00964000
  1021. DC AL4(ERR907T) V0516 00965000
  1022. MVC 0(8,R1),=CL8'RDBUF' RESET COMMAND V0516 00966000
  1023. AROUND1 EQU * V0516 00967000
  1024. SR RG9,RG9 INITIALIZE REG 9 @VA08993 00967100
  1025. ICM RG9,3,BUFFER+10 GET LENGTH OF MACRO DICT. @VA08993 00968100
  1026. ST RG9,MACTBLLG ... 00969000
  1027. L RG7,MACTBLSV GET LOC. OF MACRO DICTIONARY 00970000
  1028. LA RG9,0(RG7,RG9) SET INDEXES 00971000
  1029. LA RG8,72 00972000
  1030. LH INDEX,BUFFER+6 ... 00973000
  1031. N INDEX,MAXHW CLEAR PROPAGATION V0516 00974000
  1032. STH INDEX,DICITEM SAVE INDEX OF DICTIONARY 00975000
  1033. LR SINDEX,INDEX ... 00976000
  1034. RDLOOP CR RG7,RG9 AT END OF DICTIONARY V0516 00977000
  1035. BCR 8,SUBR YES, RETURN V0516 00978000
  1036. STH SINDEX,OUTITNO SET ITEM NO. FOR DICTIONARY V0516 00979000
  1037. SVC 202 00980000
  1038. DC AL4(ERR104S) 00981000
  1039. LA R15,72(,RG7) CHECK FOR TOP OF STORAGE V0516 00982000
  1040. C R15,FREELOWE V0516 00983000
  1041. BH ERR109S ERROR IF ABOVE V0516 00984000
  1042. MVC 0(72,RG7),BUFFER MOVE INTO MACRO DICTIONARY 00985000
  1043. LA SINDEX,1(0,SINDEX) ADVANCE INDEX 00986000
  1044. BXLE RG7,RG8,RDLOOP GET THE ENTIRE DICTIONARY 00987000
  1045. BR SUBR RETURN TO CALLER 00988000
  1046. NODICT CH R15,=H'28' FILE NOT FOUND 00989000
  1047. BE ERR002E YES 00990000
  1048. B ERRETRN 00991000
  1049. EJECT 00992000
  1050. ********************************************************************** 00993000
  1051. * 00994000
  1052. * UTILITY ROUTINE TO SEARCH FOR A MACRO 00995000
  1053. * 00996000
  1054. ********************************************************************** 00997000
  1055. MACSEEK EQU * 00998000
  1056. OI FLAG,NOMEMBER IN CASE WE DELETE LAST MEMBER @VA12809 00998500
  1057. L RG7,MACTBLSV POINT TO MACLIB DICTIONARY 00999000
  1058. LA RG8,12 ENTRY WIDTH 01000000
  1059. L RG9,MACTBLLG GET TABLE LENGTH 01001000
  1060. LA RG9,0(RG7,RG9) POINT TO END OF TABLE 01002000
  1061. SR RG9,RG8 POINT TO LAST ENTRY 01003000
  1062. SEEKLP EQU * @VA13802 01004000
  1063. CLC 0(8,RG7),=8X'00' NO, THEN IS THIS A NULL ENTRY? @VA12809 01005200
  1064. BE CONTSEEK YES, KEEP LOOKING @VA12809 01005400
  1065. NI FLAG,255-NOMEMBER NO, SHOW LIB IS NOT EMPTY @VA12809 01005600
  1066. CONTSEEK EQU * @VA12809 01005800
  1067. CLC 0(8,RG7),0(PLIST) IS THIS THE ONE @VA13802 01005900
  1068. BCR 8,SUBR BR ON YES @VA13802 01005950
  1069. BXLE RG7,RG8,SEEKLP CYCLE UNTIL DONE 01006000
  1070. BR SUBR NOT THERE - COND. CODE STILL SET 01007000
  1071. EJECT 01008000
  1072. XCHECK EQU * @VA04691 01008050
  1073. SPACE 1 01008100
  1074. * THIS SUBROUTINE SETS AN INDEX VALUE IN A DICTIONARY 01008150
  1075. * ENTRY. IT THEN DETERMINES IF PROBLEMS COULD ARISE 01008200
  1076. * FOR OS MACRO SIMULATION (IE, A MEMBER STARTING ON 01008250
  1077. * A RELATIVE ITEM NUMBER WHICH IS A MULTIPLE OF 256). 01008300
  1078. * IF SO, THE RIGHT BYTE OF THE ADDR FIELD IS SET TO 01008350
  1079. * A NON-ZERO VALUE, AND THE WRITE POINTER IS ADJUSTED 01008400
  1080. * ACCORDINGLY. 01008450
  1081. * 01008500
  1082. STH INDEX,8(,MACTBL) SET NEW ITEM NUMBER @VA04691 01008550
  1083. CLI 9(MACTBL),X'00' POTENTIAL PROBLEM? @VA04691 01008600
  1084. BNER R14 EXIT, STAGE RIGHT @VA04691 01008650
  1085. SPACE 1 01008700
  1086. MVI 9(MACTBL),X'01' YES, FIX IT @VA04691 01008750
  1087. LA INDEX,1(,INDEX) ADJUST THE INDEX VALUE @VA04691 01008800
  1088. SPACE 1 01008850
  1089. LA R1,OUT GET THE CURRENT WRITE POINTER @VA04691 01008900
  1090. MVC 0(8,R1),=CL8'STATE' @VA04691 01008950
  1091. SVC 202 @VA04691 01009000
  1092. L R1,OUTBUFF GET FST COPY ADDRESS @VA04691 01009050
  1093. L R1,20(,R1) GET READ AND WRITE POINTERS @VA04691 01009100
  1094. A R1,=X'00010000' RE-ADJUST FOR OS MACRO SIM @VA04691 01009150
  1095. STCM R1,X'F',WRPT MOVE PTRS TO POINT P-LIST @VA04691 01009200
  1096. MVC FPNAM(18),OUTNAME GET NAME, TYPE, AND MODE @VA04691 01009250
  1097. LA R1,PNT SET PARM REGISTER @VA04691 01009300
  1098. SVC 202 ADVANCE THE WRITE POINTER @VA04691 01009350
  1099. DC AL4(ERR105S) ERROR RETURN @VA04691 01009400
  1100. MVC OUTBUFF(4),INBUFF RESTORE P-LIST @VA04691 01009450
  1101. BR R14 RETURN @VA04691 01009500
  1102. EJECT 01009550
  1103. ********************************************************************** 01010000
  1104. * 01011000
  1105. * ERROR ROUTINES 01012000
  1106. * 01013000
  1107. ********************************************************************** 01014000
  1108. SPACE 01015000
  1109. ERR056W LA R3,IN+8 POINT TO MACRO NAME 01016000
  1110. ERR056 DMSERR TEXT=('FILE ''....................'' ', P3080X01017000
  1111. 'CONTAINS INVALID RECORD FORMATS'), P3080X01018000
  1112. NUM=56,LET=E,SUB=(CHAR8A,(R3)) P3080 01019000
  1113. LA ERROR,32 01020000
  1114. STH ERROR,ERRCODE SAVE ERROR CODE V0273 01021000
  1115. TM FLAGS1,X'20' ADD OR REP FUNCTION V0273 01022000
  1116. BNO ERRETRN NO, EXIT V0516 01023000
  1117. LA R1,OUT MACLIB PLIST V0516 01024000
  1118. MVC 0(8,R1),=CL8'POINT' SET FOR POINT FUNCTION V0516 01025000
  1119. XC OUTITNO(4),OUTITNO CLEAR FOR POINT V0516 01026000
  1120. LH INDEX,8(MACTBL) DETERMINE END OF MACLIB MEMBERSV0516 01027000
  1121. N INDEX,MAXHW V0516 01028000
  1122. STH INDEX,OUTITNO SET FOR POINT V0516 01029000
  1123. BCTR INDEX,0 ADJUST FOR GFINI V0516 01030000
  1124. SVC 202 V0516 01031000
  1125. DC AL4(ERR907T) V0516 01032000
  1126. XC OUTITNO(2),OUTITNO V0516 01033000
  1127. MVC OUTBUFF,INBUFF RESTORE BUFFER ADDRESS V0516 01034000
  1128. MVC 0(8,R1),=CL8'WRBUF' RESET FUNCTION NAME V0516 01035000
  1129. B GFINI V0516 01036000
  1130. SPACE 01037000
  1131. ERR213W LA R2,8(0,R1) POINT TO NAME 01038000
  1132. DMSERR TEXT='LIBRARY ''........'' MACLIB NOT CREATED, OR ERASEX01039000
  1133. D IF NO MEMBERS LEFT', @VA12809X01039500
  1134. SUB=(CHARA,(R2)),NUM=213,LET=W 01040000
  1135. LA ERROR,4 01041000
  1136. CH ERROR,ERRCODE WAS THERE A HIGHER CODE V0516 01042000
  1137. BL RETURN YES, USE IT V0516 01043000
  1138. B ERRETRN 01044000
  1139. SPACE 01045000
  1140. ERR001E DMSERR TEXT='NO FILENAME SPECIFIED',NUM=1,LET=E 01046000
  1141. LA ERROR,24 01047000
  1142. B ERRETRN 01048000
  1143. SPACE 01049000
  1144. ERR002E CH R15,=H'28' WAS IT FILE NOT FOUND 01050000
  1145. BNE ERRETRN NO 01051000
  1146. LA R2,8(0,R1) POINT TO NAME 01052000
  1147. DMSERR TEXT='FILE ''........'' MACLIB NOT FOUND', X01053000
  1148. SUB=(CHARA,(R2)),NUM=2,LET=E 01054000
  1149. LA ERROR,28 01055000
  1150. B ERRETRN 01056000
  1151. SPACE 01057000
  1152. ERR003E DMSERR TEXT='INVALID OPTION ''........''',NUM=3,LET=E, X01058000
  1153. SUB=(CHARA,(R3)) 01059000
  1154. LA ERROR,24 01060000
  1155. B ERRETRN 01061000
  1156. SPACE 01062000
  1157. ERR002W CH R15,=H'28' FILE NOT FOUND 01063000
  1158. BNE ERRETRN NO 01064000
  1159. LA R10,8(R1) POINT TO NAME 01065000
  1160. DMSERR TEXT='FILE ''........'' NOT FOUND',NUM=2, X01066000
  1161. LET=W,SUB=(CHARA,(R10)) 01067000
  1162. MVC ERRCODE(2),=H'4' SET ERROR CODE 4 01068000
  1163. B GLOOP1 CHECK NEXT INPUT FILE 01069000
  1164. SPACE 01070000
  1165. ERR013W LA R2,OUTNAME MACLIB NAME 01071000
  1166. DMSERR TEXT=('MEMBER ''........'' NOT FOUND IN ', @VA00822X01072000
  1167. 'LIBRARY ''....................'''), @VA00822X01073000
  1168. NUM=13,LET=W,MF=(E,MACERR), @VA00822X01074000
  1169. SUB=(CHAR8A,(R6),CHAR8A,(R2)) @VA00822 01075000
  1170. MVC ERRCODE(2),=H'4' SET ERROR CODE 4 01076000
  1171. BR SUBR RETURN 01077000
  1172. SPACE 01078000
  1173. ERR014E DMSERR TEXT='INVALID FUNCTION ''........''',LET=E,NUM=14, X01079000
  1174. SUB=(CHARA,(R3)) 01080000
  1175. LA ERROR,24 01081000
  1176. B ERRETRN 01082000
  1177. SPACE 01083000
  1178. ERR037E LA R3,OUTMODE POINT TO MODE 01084000
  1179. ERR37 DMSERR TEXT='DISK ''..'' IS READ/ONLY',NUM=37, X01085000
  1180. LET=E,SUB=(CHARA,((R3),1)) 01086000
  1181. LA ERROR,36 01087000
  1182. B ERRETRN 01088000
  1183. SPACE 01089000
  1184. SPACE 01090000
  1185. ERR047E DMSERR TEXT='NO FUNCTION SPECIFIED',NUM=47,LET=E 01091000
  1186. LA ERROR,24 01092000
  1187. B ERRETRN 01093000
  1188. SPACE 01094000
  1189. ERR046E DMSERR TEXT='NO LIBRARY NAME SPECIFIED',NUM=46,LET=E 01095000
  1190. LA ERROR,24 01096000
  1191. B ERRETRN 01097000
  1192. SPACE 01098000
  1193. ERR456E LA R3,OUTNAME POINT TO FILE NAME 01099000
  1194. B ERR056 01100000
  1195. SPACE 1 @VA07183 01100100
  1196. ERR069 EQU * @VA07183 01100200
  1197. LA R3,IN+TWO4 GET ADDRESS OF MODE @VA07183 01100300
  1198. DMSERR TEXT='DISK ''..'' NOT ACCESSED',NUM=69, C01100400
  1199. LET=E,SUB=(CHARA,((R3),1)) @VA07183 01100500
  1200. LA ERROR,THREE6 SET ERROR CODE @VA07183 01100600
  1201. B LASTGO AND EXIT @VA07183 01100700
  1202. SPACE 1 @VA07183 01100800
  1203. ERR070E DMSERR TEXT='INVALID PARAMETER ''........''',NUM=70, X01101000
  1204. LET=E,SUB=(CHAR8A,(PLIST)) 01102000
  1205. LA ERROR,24 01103000
  1206. B ERRETRN 01104000
  1207. SPACE 01105000
  1208. SPACE 01106000
  1209. ERR104S LA R2,8(0,R1) POINT TO FILE ID V0314 01107000
  1210. LR R10,R15 V0314 01108000
  1211. DMSERR TEXT=('ERROR ''..'' READING FILE ', V0314X01109000
  1212. '''..................'' FROM DISK'), V0314X01110000
  1213. NUM=104,LET=S, V0314X01111000
  1214. SUB=(DEC,(R10),CHAR8A,(R2)),MF=(E,MACERR) V0314 01112000
  1215. LA ERROR,100 01113000
  1216. B ERRETRN 01114000
  1217. SPACE 01115000
  1218. ERR105S LA R2,OUTNAME ADDR OF FILE NAME 01116000
  1219. LR R3,R15 ERROR CODE FROM WRBUF 01117000
  1220. DMSERR TEXT='ERROR ''...'' WRITING FILE ''..................''X01118000
  1221. ON DISK',NUM=105,LET=S,SUB=(DEC,(R3),CHAR8A,(R2)), X01119000
  1222. MF=(E,MACERR) 01120000
  1223. LA ERROR,100 01121000
  1224. B ERRETRN 01122000
  1225. SPACE 01123000
  1226. ERR109S DMSERR TEXT='VIRTUAL STORAGE CAPACITY EXCEEDED', V0516X01124000
  1227. NUM=109,LET=S V0516 01125000
  1228. LA ERROR,104 V0516 01126000
  1229. TM FLAGS1,X'20' WERE ADDITIONS BEING MADE V0516 01127000
  1230. BNO ERRETRN NO, EXIT V0516 01128000
  1231. STH ERROR,ERRCODE SAVE ERROR CODE V0516 01129000
  1232. B GFINI WRITE OUT DICTIONARY V0516 01130000
  1233. ERR907T DMSERR TEXT='I/O ERROR ON FILE ''..................''', X01131000
  1234. NUM=907,LET=T,SUB=(CHAR8A,(R2)) 01132000
  1235. LA ERROR,256 01133000
  1236. B ERRETRN 01134000
  1237. ERR157S SH MACTBL,=H'12' BACK UP TO LAST ADD V0516 01135000
  1238. LA R15,LONGMSG LENGTH FOR FULL ERROR MSG V0516 01136000
  1239. C MACTBL,MACTBLSV WAS THIS 1ST ADDITION V0516 01137000
  1240. BNL SETLNTH NO V0516 01138000
  1241. LA R15,SHRTMSG YES, SET FOR SHORT MSG V0516 01139000
  1242. SETLNTH STC R15,MSG157 SET LENGTH V0516 01140000
  1243. DMSERR TEXTA=MSG157,LET=S,NUM=157, V0516X01141000
  1244. SUB=(CHAR8A,(MACTBL)) V0516 01142000
  1245. LA ERROR,88 V0516 01143000
  1246. STH ERROR,ERRCODE V0516 01144000
  1247. B GFINI WRITE OUT DICTIONARY V0516 01145000
  1248. MSG157 DC X'00' LENGTH BYTE V0516 01146000
  1249. BEGIN157 DC C'MACLIB LIMIT EXCEEDED' V0516 01147000
  1250. MID157 DC C', LAST MEMBER ADDED WAS ''........''' V0516 01148000
  1251. SHRTMSG EQU MID157-BEGIN157 V0516 01149000
  1252. LONGMSG EQU *-BEGIN157 V0516 01150000
  1253. ERR167S DMSERR TEXT='PREVIOUS MACLIB FUNCTION NOT FINISHED', V0516X01151000
  1254. NUM=167,LET=S V0516 01152000
  1255. LA ERROR,88 V0516 01153000
  1256. B ERRETRN EXIT V0516 01154000
  1257. EJECT 01155100
  1258. ********************************************************************** 01156000
  1259. * 01157000
  1260. * RETURN ROUTINES 01158000
  1261. * 01159000
  1262. ********************************************************************** 01160000
  1263. RETURN LH ERROR,ERRCODE SET ANY ERROR CODE 01161000
  1264. ERRETRN EQU * 01162000
  1265. XC OUTITNO(4),OUTITNO CLEAR ITEM NUMBER 01163000
  1266. LA R1,OUT CLOSE OUT FILE 01164000
  1267. MVC 0(8,R1),=CL8'FINIS' 01165000
  1268. SVC 202 01166000
  1269. DC AL4(*+4) 01167000
  1270. XC OUTITNO(4),OUTITNO CLEAR ITEM NUMBER 01168000
  1271. CLC OUTNAME(16),TEMPNAME WAS THIS A COMPACT 01169000
  1272. BE COMPFIN BR ON YES TO END IT 01170000
  1273. LASTGO EQU * COMPACT REJOINS HERE 01171000
  1274. LR 15,ERROR SET ERROR CODE 01172000
  1275. L R14,R14SAVE RESTORE LINKAGE REGISTER @VA04691 01172100
  1276. DMSEXS OI,MISFLAGS,RELPAGES INDICATE PAGE RELEASE 01173000
  1277. BR 14 RETURN 01174000
  1278. * 01175000
  1279. COMPFIN EQU * 01176000
  1280. LA R1,IN CLOSE IN FILE 01177000
  1281. MVC 0(8,R1),=CL8'FINIS' 01178000
  1282. SVC 202 01179000
  1283. DC AL4(*+4) 01180000
  1284. LTR ERROR,ERROR WERE THERE ANY ERRORS 01181000
  1285. BNZ LASTGO BR ON YES - DO NOTHING 01182000
  1286. LA R1,IN 01184000
  1287. MVC 0(8,R1),=CL8'ERASE' 01185000
  1288. SVC 202 01186000
  1289. DC AL4(*+4) 01187000
  1290. MVC OUT+32(17),IN+8 GET OLD MACLIB NAME,TYPE AND MODE JR 01188000
  1291. MVC OUT+49(1),IN+25 MOVE IN FILEMODE NUMBER @VA02961 01189000
  1292. MVC OUT+56(4),=4X'FF' SEAL OFF PLIST 01190000
  1293. LA R1,OUT DO RENAME 01191000
  1294. MVC 0(8,R1),=CL8'RENAME' 01192000
  1295. SVC 202 01193000
  1296. DC AL4(*+4) 01194000
  1297. B LASTGO ALL DONE - READY TO LEAVE 01195000
  1298. EJECT 01196000
  1299. *********************************************************************** 01197000
  1300. * 01198000
  1301. * DEFINITIONS + CONSTANTS 01199000
  1302. * 01200000
  1303. *********************************************************************** 01201000
  1304. * 01202000
  1305. * INPUT DISK PARAMETER LIST 01203000
  1306. * 01204000
  1307. DS 0D 01205000
  1308. IN EQU * 01206000
  1309. INCOMM DC CL8'*' COMMAND 01207000
  1310. INNAME DC CL8'*' FILE NAME 01208000
  1311. INTYPE DC CL8'MACRO' FILE TYPE 01209000
  1312. INMODE DC CL2'A1' FILE MODE 01210000
  1313. INITNO DC H'0' ITEM NUMBER 01211000
  1314. INBUFF DC A(BUFFER) BUFFER AREA 01212000
  1315. INSIZE DC A(80) BUFFER SIZE 01213000
  1316. INFV DC CL2'F' FIXED/VARIABLE FLAG 01214000
  1317. INNOIT DC H'1' NUMBER OF ITEMS 01215000
  1318. INNORD DC F'0' NUMBER OF BYTES ACTUALLY READ 01216000
  1319. * 01217000
  1320. * OUTPUT DISK PARAMTER LIST 01218000
  1321. * 01219000
  1322. DS 0D 01220000
  1323. OUT EQU * 01221000
  1324. OUTCOMM DC CL8'*' 01222000
  1325. OUTNAME DC CL8'*' 01223000
  1326. OUTTYPE DC CL8'MACLIB' 01224000
  1327. OUTMODE DC CL2'A1' 01225000
  1328. OUTITNO DC H'0' 01226000
  1329. OUTBUFF DC A(BUFFER) 01227000
  1330. OUTSIZE DC A(80) 01228000
  1331. OUTFV DC CL2'F' 01229000
  1332. OUTNOIT DC H'1' 01230000
  1333. OUTORD DC F'0' 01231000
  1334. SLASHAST DC CL2'/*' @VM03253 01232000
  1335. END DC CL3'END' @VM03253 01233000
  1336. CATALS DC CL6'CATALS' @VM03253 01234000
  1337. * 01235000
  1338. * POINT PLIST 01236000
  1339. * 01237000
  1340. DS 0F 01238000
  1341. PNT DC CL8'POINT' 01239000
  1342. FPNAM DC CL8' ' FILENAME 01240000
  1343. FPTYP DC CL8' ' FILETYPE 01241000
  1344. FPMOD DC CL2' ' FILEMODE 01242000
  1345. WRPT DC H'0' WRITE POINTER.. 01243000
  1346. RDPT DC H'1' READ POINTER.. 01244000
  1347. * 01245000
  1348. DS 0D 01246000
  1349. * 01247000
  1350. * CARD BUFFER 01248000
  1351. * 01249000
  1352. DS 0F 01250000
  1353. BUFFER DS CL80 01251000
  1354. * 01252000
  1355. * OFFLINE PRINT LINBAME MAP PLIST 01253000
  1356. * 01254000
  1357. OP DS 3D 01255000
  1358. DC CL8' ' @VA03054 01256000
  1359. DC 8X'FF' FENCE @VA03054 01257000
  1360. ERRCODE DS H 01258000
  1361. * 01259000
  1362. * 01260000
  1363. * MACRO DICTIONARY PRINT AREA 01261000
  1364. * 01262000
  1365. DS 0D 01263000
  1366. MACPRT DC CL8'TYPLIN' 01264000
  1367. DC AL1(1) 01265000
  1368. DC AL3(MACBUF) 01266000
  1369. DC C'B' 01267000
  1370. DC AL3(L'MACBUF) 01268000
  1371. MACBUF DC CL20' ' DL 01269000
  1372. PMAC EQU MACBUF 01270000
  1373. PNDX EQU MACBUF+9 01271000
  1374. PSZE EQU MACBUF+14 01272000
  1375. DOUBLE DS 1D 01273000
  1376. * 01274000
  1377. MAXHW DC X'0000FFFF' V0516 01275000
  1378. ERASE DC CL8'ERASE' @VA07183 01275200
  1379. EIGHT EQU 8 @VA07183 01275400
  1380. TWO4 EQU 24 @VA07183 01275600
  1381. THREE6 EQU 36 @VA07183 01275800
  1382. FLAG DC X'00' FLAG BYTE @VA12809 01275830
  1383. NOMEMBER EQU X'08' NO MEMBERS LEFT IN LIBRARY @VA12809 01275860
  1384. EJECT DL 01276000
  1385. ADFREE DC A(DMSLBM+4096) 01277000
  1386. LTORG DL 01278000
  1387. EJECT 01279000
  1388. * 01280000
  1389. * DEFINITIONS 01281000
  1390. * 01282000
  1391. TEMP EQU 2 01283000
  1392. PLIST EQU 3 01284000
  1393. MACTBL EQU 6 01285000
  1394. RG7 EQU 7 01286000
  1395. RG8 EQU 8 01287000
  1396. RG9 EQU 9 01288000
  1397. ERROR EQU 10 01289000
  1398. SWT EQU 10 01290000
  1399. SUBR EQU 11 01291000
  1400. INDEX EQU 12 01292000
  1401. SINDEX EQU 13 01293000
  1402. * 01294000
  1403. * COMMAND TABLE 01295000
  1404. * 01296000
  1405. COMDS DS 0F 01297000
  1406. DC CL8'GEN' 01298000
  1407. DC A(GEN) 01299000
  1408. DC CL8'ADD' 01300000
  1409. DC A(ADD) 01301000
  1410. DC CL8'REP' 01302000
  1411. DC A(REPLACE) 01303000
  1412. DC CL8'COMP' 01304000
  1413. DC A(COMPACT) 01305000
  1414. DC CL8'DEL' 01306000
  1415. DC A(DELETE) 01307000
  1416. DC CL8'MAP' 01308000
  1417. DC A(MAP1) 01309000
  1418. COMDSN EQU * 01310000
  1419. COMLOOK DC A(COMDS,12,COMDSN-12) 01311000
  1420. COPYSAVE DC D'0' NAME OF COPY ENTRY SAVE HERE 01312000
  1421. TEMST DC D'0' WRITE READ POINTERS SAVED HERE 01313000
  1422. R14SAVE DS F LINKAGE REGISTER SAVED HERE @VA04691 01313100
  1423. * 01314000
  1424. * FLAGS 01315000
  1425. * 01316000
  1426. CONFLG DC CL1'0' IN CASE A CONTINUATION CARD @VA02823 01317000
  1427. FLAGS DS CL1 01318000
  1428. FLAGS1 DC X'00' 01319000
  1429. MACNXT EQU X'80' 01320000
  1430. MENDNXT EQU X'40' 01321000
  1431. FLAGS2 DC X'00' @VA03532 01322000
  1432. OLDLIB EQU X'80' LIBRARY IS OLD FORMAT 01323000
  1433. CKVAL EQU X'40' VALIDITY CHECK (ROOM LEFT ON @VA03532 01324000
  1434. * DISK) 01325000
  1435. TEMPST DS H 01326000
  1436. TOTAL DC F'0' SAVE AREA FOR ROOM LEFT ON DISK @VA03532 01327000
  1437. EJECT 01328000
  1438. * CONSTANTS 01329000
  1439. * 01330000
  1440. MACPRTX DC C'B',AL3(L'MACBUF) 01331000
  1441. MASK DC X'402020202021402020202021' DL 01332000
  1442. MAPHDR DC CL20'MACRO INDEX SIZE' DL 01333000
  1443. TEMPNAME DC CL8'MACLIB' 01334000
  1444. DC CL8'CMSUT1' 01335000
  1445. DC CL2'A1' MODE FOR TEMPORARY FILE JR 01336000
  1446. MACERR DMSERR MAXSUBS=2,MF=L ERROR PARAMETER AREA 01337000
  1447. DICITEM DC H'0' INDEX OF DICTIONARY 01338000
  1448. BLFIND DC 256X'00' BLANK TRANSLATE-TEST TABLE 01339000
  1449. ORG BLFIND+C' ' 01340000
  1450. DC X'FF' 01341000
  1451. ORG BLFIND+256 01342000
  1452. CSCOPY DC CL6'*COPY ' COPY CONTROL STATEMENT DEFINITION@VA04690 01342100
  1453. MACTBLSV DC A(MACTBLLC) 01343000
  1454. MACTBLLG DC F'0' TR 01344000
  1455. MACTBLLC EQU * DICTIONARY BUFFER V0516 01345000
  1456. EJECT 01346000
  1457. NUCON 01347000
  1458. SPACE 01348000
  1459. ADT 01349000
  1460. FSTB V0516 01350000
  1461. FVS HRC015DS 01350100
  1462. END 01351000