Table of Contents

XDICT Source

References

Source Listing

XDICT.MACRO.txt
  1. */ ADD NAME=XDICT 8000-03343-03343-2118-00607-00607-00000-GREG
  2. MACRO 00010000
  3. &ID XDICT &DUMMY,&TESTRAN=NO,&DIAG=NO,&LEVEL=1 00020000
  4. GBLC &COMPNM COMPONENT NAME 00030000
  5. LCLC &NM MODULE NAME 00040000
  6. JHEAD 'EXTERNAL SYMBOL DICTIONARY SUBROUTINES', ,00050000
  7. PHASEID=&ID,LEVEL=&LEVEL 00060000
  8. &NM SETC '&COMPNM&ID' 00070000
  9. * * 00080000
  10. *TITLE- EXTERNAL SYMBOL DICTIONARY ROUTINES * 00090000
  11. * * 00100000
  12. *FUNCTION/OPERATION- * 00110000
  13. * BUILD AND MAINTAIN THE EXTERNAL SYMBOL DICTIONARY * 00120000
  14. * PRINT AND PUNCH THE EXTERNAL SYMBOL DICTIONARY * 00130000
  15. * BUILD THE EXTERNAL SYMBOL DICTIONARY ADJUSTMENT TABLE * 00140000
  16. * * 00150000
  17. *ENTRY POINT- * 00160000
  18. ENTRY &NM.01 00170000
  19. * * 00180000
  20. *INPUT- * 00190000
  21. * REGISTERS- * 00200000
  22. * R4- REGISTER CONTAINING THE ADDRESS OF THE * 00210000
  23. * RECORD BEING PROCESSED * 00220000
  24. * R5- REGISTER CONTAINING THE ADDRESS OF THE * 00230000
  25. * OPERAND BEING PROCESSED * 00240000
  26. * R6- REGISTER CONTAINING THE ADDRESS OF THE * 00250000
  27. * CURRENT CONTROL SECTION ESD ENTRY * 00260000
  28. * * 00270000
  29. *OUTPUT- * 00280000
  30. * REGISTERS- * 00290000
  31. * R10 REGISTER CONTAINING THE ADDRESS OF THE * 00300000
  32. * NEW CURRENT CONTROL SECTION ESD ENTRY, IF * 00310000
  33. * CHANGED * 00320000
  34. * * 00330000
  35. *EXITS, NORMAL- * 00340000
  36. * EXITS TO THE CALLING ROUTINE * 00350000
  37. * * 00360000
  38. *EXITS, ERROR- * 00370000
  39. * EXITS TO THE CALLING ROUTINE * 00380000
  40. * * 00390000
  41. *TABLES/WORK AREAS- * 00400000
  42. * ESDBLK1- A BLOCK IN STORAGE TO CONTAIN A MAXMI * 00410000
  43. * ESDBLK1- A BLOCK OF STORAGE TO CONTAIN A MAXIMUM OF 16 ESD * 00420000
  44. * ENTRIES, ALSO SERVES AS AN INPUT/OUTPUT BUFFER * 00430000
  45. * FOR THE OVERFLOW FILE (FILE2) WHEN NECESSARY * 00440000
  46. * ESDBLK2- SAME FUNCTION AS ESDBLK1 ABOVE * 00450000
  47. * NOTELIST- A LIST OF NOTE PARAMETERS OF OVERFLOWED ESD BLOCKS * 00460000
  48. * WHEN NOT IN CORE * 00470000
  49. * * 00480000
  50. *ATTRIBUTES- * 00490000
  51. * REFRESHABLE * 00500000
  52. * * 00510000
  53. *NOTES * 00520000
  54. * * 00530000
  55. EJECT 00540000
  56. COPY JCOMMON 00550000
  57. EJECT 00560000
  58. COPY JTEXT 00570000
  59. EJECT 00580000
  60. COPY ICOMMON 00590000
  61. EJECT 00600000
  62. JTEXT DSECT , 00610000
  63. ORG JTEXT 00620000
  64. COPY RSYMRCD 00630000
  65. EJECT 00640000
  66. &NM.00 CSECT 00650000
  67. * VS1 REL 2.6 CHANGES 00660000
  68. *C221000 OX00106 00670000
  69. *A246500,430500,481500 OX00106 00680000
  70. *C430500,481500 @OY08064 00690000
  71. JMODID 00700000
  72. &NM.01 CONTENTS 00710000
  73. USING &NM.01,R8 BASE REGISTER 00720000
  74. EJECT 00730000
  75. *TITLE- BLDESD * 00740000
  76. * * 00750000
  77. *FUNCTION/OPERATION- * 00760000
  78. * BUILD OR RESUME AN ESD ENTRY * 00770000
  79. * * 00780000
  80. *INPUT- R4 CONTAINS A POINTER TO THE RECORD BEING PROCESSED * 00790000
  81. * R10 CONTAINS A POINTER TO A PARAMETER LIST * 00800000
  82. * * 00810000
  83. *OUTPUT- R10 CONTAINS A POINTER TO THE ESD ENTRY * 00820000
  84. * * 00830000
  85. SPACE 00840000
  86. BLDESD BALR R14,R7 SAVE REGISTERS IN STACK 00850000
  87. LR R8,R12 SET UP BASE REGISTER 00860000
  88. LA R2,D1 INCREMENT IN 00870000
  89. LR R3,R2 TWO REGISTER 00880000
  90. LR R5,R10 SAVE POINTER 00890000
  91. AH R2,D0(,R5) ESDID 00900000
  92. AH R3,HIESDNR ESD NUMBER 00910000
  93. STH R2,XESDI ESDID 00920000
  94. STH R3,XLNGQ ESD NUMBER 00930000
  95. MVC XFLGB,XPARM FLAGS 00940000
  96. SR R0,R0 ZERO 00950000
  97. ST R0,XLCTR INITIAL VALUE 00960000
  98. OC XESDI(D1),XPARM+D3 FLAG FOR DSECT OR COM 00970000
  99. BLDESD1 MVC XTYPE,XPARM+D1 TYPE 00980000
  100. MVC XNAME,=8AL1(JBLANK) PAD 00990000
  101. MVC XNAME(D1),XTYPE NAME 01000000
  102. GOIF RFIELDN,OFF=BLDESD2 SKIP IF NO NAME 01010000
  103. MVC RLNGQ,=H'1' LENGTH ATTRIBUTE 01020000
  104. GOIF PRIORDEF,ON=BLDESD2 SKIP IF PREVIOUSLY DEFINED 01030000
  105. MVC XNAME,RNAME GET NAME 01040000
  106. MVC XTYPE,XPARM+D2 TYPE 01050000
  107. BLDESD2 LA R10,XWORK PASS RECORD POINTER 01060000
  108. GOTO ENTER TRY TO ENTER IN SYMBOL TABLE 01070000
  109. BNE BLDESD5 ALREADY IN SYMBOL TABLE 01080000
  110. STH R2,D0(,R5) SAVE ESDID 01090000
  111. STH R3,HIESDNR SAVE ESD NUMBER 01100000
  112. TM XESDI,CSW2+DSW2 COM OR DSECT 01110000
  113. BNE BLDESD4 SKIP IF SO 01120000
  114. NC FSTCSECT,FSTCSECT SEE IF FIRST CSECT 01130000
  115. BNE BLDESD3 SKIP IF NOT 01140000
  116. STH R3,FSTCSECT FIRST CSECT ESD NUMBER 01150000
  117. BLDESD3 CLI XTYPE,ETYPEPC PRIVATE CODE 01160000
  118. BNE BLDESD4 SKIP IF NOT 01170000
  119. STH R2,JESDID ESDID OF PRIVATE CODE 01180000
  120. BLDESD4 LR R10,R3 ESD NUMBER 01190000
  121. GOTO GETESD GET ESD ENTRY 01200000
  122. LM R2,R3,XTYPE TYPE, ESDID, ADDRESS 01210000
  123. SR R4,R4 INITIALIZE 01220000
  124. LM R5,R6,XNAME NAME 01230000
  125. STM R2,R6,ETYPE-ETYPE(R10) CREATE ESD ENTRY 01240000
  126. B EXIT EXIT 01250000
  127. BLDESD5 CLC SFLGS,XFLGB SEE IF SAME TYPE SECTION 01260000
  128. BE BLDESD6 RESUME SECTION IF SAME 01270000
  129. NI XPARM,BITFF-(XDUMMY) DISCOUNT EXTERNAL DUMMYS 01280000
  130. CLC SFLGS,XPARM GIVE IT ANOTHER CHANCE 01290000
  131. BE BLDESD6 LET THIS ONE GO 01300000
  132. SET PRIORDEF,ON INDICATE PREVIOUSLY DEFINED 01310000
  133. B BLDESD1 IGNORE NAME 01320000
  134. BLDESD6 LH R10,SLNGQ ESD ASCENDSION NUMBER 01330000
  135. GOTO GETESD RESUME ESD ENTRY 01340000
  136. SET DEFINED,ON INDICATE RESUMED SECTION 01350000
  137. B EXIT EXIT 01360000
  138. EJECT 01370000
  139. *TITLE- GETESD * 01380000
  140. * * 01390000
  141. *FUNCTION/OPERATION- * 01400000
  142. * GET AN ESD ENTRY * 01410000
  143. * * 01420000
  144. *INPUT- R10 CONTAINS THE ESD NUMBER * 01430000
  145. * * 01440000
  146. *OUTPUT- R10 CONTAINS A POINTER TO THE ENTRY * 01450000
  147. * * 01460000
  148. SPACE 01470000
  149. GETESD BALR R14,R7 SAVE REGISTER IN STACK 01480000
  150. LR R8,R12 SET UP BASE REGISTER 01490000
  151. LR R2,R10 INTO WORK REGISTER 01500000
  152. LA R10,D16*D32 MAXIMUM ESD ENTRIES GP@P6 01510000
  153. CR R10,R2 SEE IF EXCEEDED 01520000
  154. BNL GETESD0 NOPE 01530000
  155. BAL R9,GETESD RECURSIVE CALL 01540000
  156. SET JESDOFLO,ON INDICATE ESD OVERFLOW 01550000
  157. MVI D0(R10),D3 OVERFLOW ENTRY 01560000
  158. XC D1(D19,R10),D1(R10) INITIALIZE 01570000
  159. B EXIT RETURN 01580000
  160. GETESD0 BCTR R2,D0 ESD NUMBER 01590000
  161. SRDL R2,D4 BLOCK NUMBER 01600000
  162. LR R4,R2 NOTE/POINT ADDRESS FOR BLOCK 01610000
  163. MH R4,=H'9' X 01620000
  164. LA R4,NOTELIST(R4) X 01630000
  165. SRL R3,D28 DISPLACEMENT 01640000
  166. MH R3,=H'20' DISPLACEMENT 01650000
  167. TM D8(R4),BIT7 SEE IF THIS A NEW BLOCK 01660000
  168. BO GETESD4 NO 01670000
  169. TM FILELAST+D8,BIT7 SEE IF FLIE POSITIONED TO WRITE 01680000
  170. BZ GETESD1 YES 01690000
  171. JPOINT FILE=FILE2,ADDR=FILELAST,NEXT=WRITE POSITION FILE 01700000
  172. GETESD1 LA R5,ESDBLK2 POINT TO SECOND BLOCK 01710000
  173. CR R5,R6 SEE IF BLOCK CURRENTLY IN USE 01720000
  174. BH GETESD2 NO 01730000
  175. LA R5,ESDBLK1 POINT TO FIRST BLOCK 01740000
  176. GETESD2 JWRITE FILE=FILE2,PARM=(R5) WRITE DESIGNATED BLOCK 01750000
  177. MVI FILELAST+D8,D0 INDICATE FILE POSITIONED TO END 01760000
  178. JCHECK FILE=FILE2 CHECK WRITE OPERATION 01770000
  179. JNOTE FILE=FILE2 NOTE ADDRESS OF BLOCK ON FILE 01780000
  180. LH R1,D6(,R5) BLOCK NUMBER OF BLOCK WRITTEN 01790000
  181. MH R1,=H'9' NOTE/POINT ADDRESS FOR BLOCK 01800000
  182. LA R1,NOTELIST(R1) X 01810000
  183. MVI D8(R1),BIT6 INDICATE BLOCK ON FILE 01820000
  184. MVC D0(D8,R1),JNOTEVAL SAVE BLOCK NOTE/POINT ADDRESS 01830000
  185. MVC FILELAST(D8),JNOTEVAL NOTE/POINT ADDRESS OF FILE END 01840000
  186. TM D8(R4),BIT6 SEE IF BLOCK ON FILE 01850000
  187. BZ GETESD3 NOPE 01860000
  188. JPOINT FILE=FILE2,ADDR=(R4),NEXT=READ POINT TO BLOCK 01870000
  189. JREAD FILE=FILE2,PARM=(R5) BRING IN BLOCK 01880000
  190. MVI FILELAST+D8,BIT7 INDICATE FILE NOT POSITIONED 01890000
  191. JCHECK FILE=FILE2 CHECK READ OPERATION 01900000
  192. GETESD3 ST R5,JFWORD1 ADDRESS OF BLOCK 01910000
  193. MVI D8(R4),BIT7 INDICATE BLOCK IS IN CORE 01920000
  194. MVC D0(D4,R4),JFWORD1 SAVE ADDRESS OF BLOCK IN CORE 01930000
  195. GETESD4 MVC JFWORD1,D0(R4) ADDRESS TO FULLWORD BOUNDARY 01940000
  196. L R5,JFWORD1 ADDRESS OF BLOCK IN CORE 01950000
  197. STH R2,D6(,R5) BLOCK NUMBER 01960000
  198. LA R10,D8(R3,R5) POINT TO ENTRY REQUESTED 01970000
  199. B EXIT RETURN 01980000
  200. EJECT 01990000
  201. *TITLE- MAKESD * 02000000
  202. * * 02010000
  203. *FUNCTION/OPERATION- * 02020000
  204. * CREATE THE ESD ADJUSTMENT TABLE * 02030000
  205. * ESD FINISHING AND OUTPUT * 02040000
  206. * * 02050000
  207. *INPUT- THE EXTERNAL SYMBOL DICTIONARY (ESD). * 02060000
  208. * * 02070000
  209. *OUTPUT- THE ESD ADJUSTMENT TABLE. * 02080000
  210. * THE EXTERNAL SYMBOL DICTIONARY ON THE SYSTEM OUTPUT FILES. * 02090000
  211. * * 02100000
  212. SPACE 02110000
  213. ENTRY BALR R14,R7 SAVE REGISTERS IN STACK 02120000
  214. LR R8,R12 SET UP BASE REGISTER 02130000
  215. LR R10,R4 PASS RECORD POINTER 02140000
  216. MVI RFLGB,ESDNRSW+ENTRYSW SET FLAGS 02150000
  217. GOTO FIND LOOKUP IN SYMBOL TABLE 02160000
  218. BZ ENTRY2 ERROR 02170000
  219. GOIF (MODE1,MODE2),ANY=EXIT SUSPEND ACTION IF NOT MODE IA 02180000
  220. GOTO ENTER ENTER IN SYMBOL TABLE 02190000
  221. LH R10,HIESDNR GET HIGHEST ESD NUMBER 02200000
  222. LA R10,D1(,R10) GET NEXT ESD NUMBER 02210000
  223. STH R10,HIESDNR SAVE 02220000
  224. STH R10,SLNGQ ESD ASCENDSION NUMBER 02230000
  225. GOTO GETESD FIND ROOM IN ESD 02240000
  226. MVI ETYPE-EITEM(R10),ETYPELX PRIME ESD ENTRY 02250000
  227. ENTRY1 MVI RTYPE,JTSYMBL CHECK BACK IN PASS 2 02260000
  228. B EXIT FINIS 02270000
  229. ENTRY2 GOIF (ESDNRSW,XENTRY,CSECTSW,DSECTSW),ALL=ENTRY1,MIX=ENTRY3 02280000
  230. GOIF (CSW,DSW,ESW),ANY=ENTRY3 INVALID OX00106 02290000
  231. SR R0,R0 SEE IF 02300000
  232. CH R0,SESDI ABSOLUTE 02310000
  233. BZ ENTRY3 BAD 02320000
  234. SET XENTRY,ON INDICATE VALID ENTRY 02330000
  235. OI RFLGB,XENTRY INDICATE VALID ENTRY 02340000
  236. MVC RESDI(D6),SESDI ESDID AND ADDRESS 02350000
  237. LH R10,HIESDNR GET HIGHERS ESD NUMBER 02360000
  238. LA R10,D1(,R10) GET NEXT ESD NUMBER 02370000
  239. STH R10,HIESDNR SAVE 02380000
  240. GOTO GETESD GET ESD ENTRY 02390000
  241. MVI ETYPE-EITEM(R10),ETYPELD ESD ENTRY TYPE 02400000
  242. MVC EESDI-EITEM(D6,R10),RESDI ESDID AND VALUE 02410000
  243. MVC ENAME-EITEM(D8,R10),RNAME NAME 02420000
  244. MVI RTYPE,JTADJII ADJUST VALUE IN IIA 02430000
  245. B EXIT FINIS 02440000
  246. ENTRY3 MVI RTYPE,JTPASS INVALID ENTRY 02450000
  247. B EXIT FINIS 02460000
  248. EXTRN BALR R14,R7 SAVE REGISTERS IN STACK 02470000
  249. LR R8,R12 SET UP BASE REGISTER 02480000
  250. LA R2,D1 INCREMENT 02490000
  251. LR R3,R2 IN TWO REGISTERS 02500000
  252. STH R2,RLNGQ LENGTH ATTRIBUTE OF SYMBOL 02510000
  253. AH R2,HICESDID NEXT ESDID 02520000
  254. AH R3,HIESDNR NEXT ESD NUMBER 02530000
  255. EXTRN1 STH R2,RESDI ESDID 02540000
  256. SET ESW1,ON SET EXTRN/EQU FLAG OX00106 02550000
  257. EXTRN2 XI RNAME,BIT0 UNIQUE NAME 02560000
  258. LR R10,R4 PASS RECORD POINTER 02570000
  259. GOTO ENTER ENTER INTO SYMBOL TABLE 02580000
  260. BNE EXTRN5 ALREADY IN SYMBOL TABLE 02590000
  261. TM RNAME,BIT0 SEE IF FIRST TIME AROUND 02600000
  262. BNE EXTRN2 ENTER SECOND TIME IF FIRST 02610000
  263. CH R3,HIESDNR SEE IF NEW ENTRY 02620000
  264. BNH EXTRN3 SKIP IF NOT NEW 02630000
  265. STH R2,HICESDID SAVE NEW ESDID 02640000
  266. STH R3,HIESDNR SAVE NEW0ESD NUMBER 02650000
  267. EXTRN3 LR R10,R3 PASS ESD NUMBER 02660000
  268. GOTO GETESD GET ESD ENTRY 02670000
  269. MVC ETYPE-EITEM(D8,R10),RTYPE 02680000
  270. MVC ENAME-EITEM(D8,R10),RNAME 02690000
  271. EXTRN4 MVI RTYPE,JTPASS NO PROCESS RECORD IN PASS 2 02700000
  272. B EXIT 02710000
  273. EXTRN5 LH R2,SESDI GET ESDID OF PREVIOUS ENTRY 02720000
  274. LH R3,SLNGQ GET ESD ASCENDSION NUMBER 02730000
  275. TM RNAME,BIT0 SEE IF FIRST TIME AROUND 02740000
  276. BNE EXTRN1 GO AGAIN IF FIRST 02750000
  277. SET PRIORDEF,ON INDICATE PREVIOUSLY DEFINED 02760000
  278. B EXTRN4 EXIT 02770000
  279. VCON BALR R14,R7 SAVE REGISTERS IN STACK 02780000
  280. LR R8,R12 SET UP BASE REGISTER 02790000
  281. LR R3,R2 IN TWO REGISTERS 02800000
  282. AH R2,HICESDID GET NEXT ESDID 02810000
  283. AH R3,HIESDNR GET NEXT ESD NUMBER 02820000
  284. STH R2,XESDI ESDID 02830000
  285. STH R3,XLNGQ ESD NUMBER 02840000
  286. MVI XTYPE,ETYPEER TYPE 02850000
  287. MVI XFLGB,ESDNRSW FLAGS 02860000
  288. OI XNAME,BIT0 EXTERNAL NAME 02870000
  289. SR R0,R0 ZERO 02880000
  290. STH R0,XLCTR VALUE 02890000
  291. LA R10,XWORK POINTER TO ENTRY 02900000
  292. GOTO ENTER ENTER IN SYMBOL TABLE 02910000
  293. BNZ EXIT ALREADY IN SYMBOL TABLE 02920000
  294. STH R2,HICESDID SAVE ESDID 02930000
  295. STH R3,HIESDNR SAVE ESD NUMBER 02940000
  296. XI XNAME,BIT0 RESET 02950000
  297. LR R10,R3 GET ESD NUMBER 02960000
  298. GOTO GETESD GET ESD ENTRY 02970000
  299. MVC ETYPE-EITEM(D8,R10),XTYPE TYPE, FLAGS, ESDID, VALUE 02980000
  300. MVC ENAME-EITEM(D8,R10),XNAME NAME 02990000
  301. B EXIT RETURN 03000000
  302. QCON BALR R14,R7 SAVE REGISTERS IN STACK 03010000
  303. LR R8,R12 SET UP BASE REGISTER 03020000
  304. LA R10,XWORK PASS POINTER TO WORK AREA 03030000
  305. GOTO FIND LOOKUP IN SYMBOL TABLE 03040000
  306. BNE EXIT NOT IN SYMBOL TABLE 03050000
  307. GOIF (ESDNRSW,DSECTSW,DSCOMSW,XDUMMY),NOTALL=EXIT VALID NAME 03060000
  308. SET XDUMMY,OFF ONE TIME ONLY PER DSECT NAME 03070000
  309. LR R10,R2 INCREMENT IN TWO REGISTERS 03080000
  310. AH R2,HICESDID NEXT ESDID 03090000
  311. STH R2,HICESDID SAVE ESDID 03100000
  312. LH R3,SLNGQ ESD ASCENDSION NUMBER 03110000
  313. AH R10,HIESDNR NEXT ESD NUMBER 03120000
  314. STH R10,HIESDNR SAVE ESD NUMBER 03130000
  315. GOTO GETESD GET ESD ENTRY 03140000
  316. MVC ENAME-EITEM(D8,R10),XNAME NAME 03150000
  317. STH R2,EESDI-EITEM(,R10) ESDID 03160000
  318. OI ESWTS-EITEM(R10),QDSW2 INDICATE XD ENTRY 03170000
  319. STH R3,EHILC-EITEM(,R10) ESD ASCENDSION NUMBER 03180000
  320. MVI ETYPE-EITEM(R10),ETYPEDX TYPE 03190000
  321. B EXIT EXIT 03200000
  322. SUMESD BALR R14,R7 PUSH DOWN ONE MORE LEVEL 03210000
  323. SUMGET LR R10,R4 PASS 03220000
  324. BAL R2,GOTESD GET ESD ITEM 03230000
  325. SR R2,R2 ZERO FUNCTION BYTE REGISTER 03240000
  326. TRT ETYPE,SUMTBL GET ROUTINE ADDRESS 03250000
  327. B SUMGET(R2) GO TO ROUTINE 03260000
  328. SUMCST LM R14,R15,ELCTR GET CURRENT AND HIGH ADDRESS 03270000
  329. CR R14,R15 SEE IF CURRENT IS ALSO HIGH 03280000
  330. BNH SUMCST1 SKIP IF NOT 03290000
  331. LR R15,R14 SAVE HIGH 03300000
  332. SUMCST1 SR R14,R14 ASSUME NO OFFSET 03310000
  333. GOIF (CSW2,DSW2),ANY=SUMCST3 NO OFFSET FOR DSECTS OR COMS 03320000
  334. L R14,STARTLOC GET START ADDRESS 03330000
  335. NR R14,R5 ROUND TO SECTION ALIGNMENT 03340000
  336. LA R0,D7 INCREMENT 03350000
  337. AR R0,R14 COMPUTE NEXT START ADDRESS 03360000
  338. AR R0,R15 COMPUTE NEXT START ADDRESS 03370000
  339. ST R0,STARTLOC SAVE 03380000
  340. LTR R14,R14 SEE IF ADJUSTMENT REQUIRED 03390000
  341. BZ SUMCST3 NOPE 03400000
  342. ST R14,D4(,R4) ADJUSTMENT FACTOR 03410000
  343. MVC D0(D2,R4),EESDI ARGUMENT ESDID 03420000
  344. SUMCST2 MVC D2(D2,R4),EESDI TARGET ESDID 03430000
  345. SR R4,R5 POINT TO NEXT ADJUSTMENT ENTRY 03440000
  346. SUMCST3 STM R14,R15,ELCTR ADDRESS AND LENGTH 03450000
  347. B SUMGET CONTINUE WITH NEXT ENTRY 03460000
  348. SUMDXD LM R15,R0,ELCTR GET LENGTH AND ALIGNMENT FACTOR 03470000
  349. LR R14,R0 REORDER 03480000
  350. B SUMCST3 SKIP 03490000
  351. SUMDSD MVI ETYPE,ETYPEXD CHANGE TYPE 03500000
  352. LH R10,EHILC GET ESD ASCENDSION NUMBER 03510000
  353. GOTO GETESD GET ESD ENTRY 03520000
  354. LA R14,D7 ALIGNMENT FACTOR 03530000
  355. L R15,EHILC-EITEM(,R10) LENGTH 03540000
  356. XC D4(D4,R4),D4(R4) 03550000
  357. MVC D0(D2,R4),EESDI-EITEM(R10) 03560000
  358. B SUMCST2 03570000
  359. GOTESD LA R3,D1(,R3) GET NEXT ESD NUMBER 03580000
  360. CH R3,HIESDNR SEE IF ALL THROUGH 03590000
  361. BH EXIT FINIS 03600000
  362. LR R10,R3 PASS ESD NUMBER 03610000
  363. GOTO GETESD GET ESD ENTRY 03620000
  364. LR R6,R10 RETURN POINTER 03630000
  365. BR R2 RETURN 03640000
  366. MAKESD BALR R14,R7 SAVE REGISTERS IN STACK 03650000
  367. LR R8,R12 SET UP BASE REGISTER 03660000
  368. L R4,LATEND ESD ADJUSTMENT TABLE POINTER 03670000
  369. LH R5,=H'-8' INCREMENT 03680000
  370. MVI CARDADDR+D3,48 FLUSH CARD PUNCH BUFFER 03690000
  371. SR R3,R3 ESD NUMBER INITIALIZED 03700000
  372. BAL R9,SUMESD SUM CONTROL SECTIONS 03710000
  373. S R10,LATEND LENGTH OF ESD ADJUSTMENT TABLE 03720000
  374. LR R11,R5 INCREMENT 03730000
  375. STM R10,R11,ADJINDEX SAVE FOR PASS TWO 03740000
  376. MAKGET BAL R2,GOTESD GET NEXT SEQUENTIAL ESD ENTRY 03750000
  377. SR R2,R2 ZERO FUNCTION BYTE REGISTER 03760000
  378. LR R10,R2 CLEAR REGISTER 03770000
  379. TRT ETYPE,MAKTBL GET ROUTINE ADDRESS 03780000
  380. B MAKGET(R2) GO TO ROUTINE 03790000
  381. MAKCST SET (QDSW2,DSW2,CSW2),OFF RESET XD DSECT OR COM BITS 03800000
  382. CLI ENAME,J9 SEE IF NAMED 03810000
  383. BH PRTESD SKIP IF NAMED 03820000
  384. MAKPVT MVI ENAME,JBLANK FAKE THE BLANK 03830000
  385. B PRTESD PRINT ESD ITEM 03840000
  386. MAKTRY LM R14,R1,ADJINDEX ESD ADJUSTMENT INDEX 03850000
  387. LH R10,EESDI GET ESDID 03860000
  388. MAKTRY1 BXLE R14,R15,PRTESD SEE IF ADJUSTMENT REQUIRED 03870000
  389. CH R10,D0(R1,R14) SEE IF THIS IS THE ENTRY 03880000
  390. BNE MAKTRY1 NO, KEEP LOOKING 03890000
  391. L R10,D4(R1,R14) GET ADJUSTMENT FACTOR 03900000
  392. A R10,ELCTR ADD OFFSET 03910000
  393. MAKEXT ST R10,ELCTR SAVE 03920000
  394. EJECT 03930000
  395. *TITLE- PRTESD * 03940000
  396. * * 03950000
  397. *FUNCTION/OPERATION- * 03960000
  398. * PRINT AN ITEM IN THE EXTERNAL SYMBOL DICTIONARY * 03970000
  399. * * 03980000
  400. *INPUT- REGISTER R10 IS A POINTER TO AN ESD ENTRY * 03990000
  401. * * 04000000
  402. *OUTPUT- THE EXTERNAL SYMBOL DICTIONARY * 04010000
  403. * * 04020000
  404. SPACE 04030000
  405. PRTESD EQU * 04040000
  406. GOIF (JESD,JLIST),NOTALL=PCHESD SKIP IF NOT OPTIONED 04050000
  407. LH R5,LINECNT GET LINE COUNT 04060000
  408. GOIF (R5),POS=PRTESD2 SKIP IF NOT END OF PAGE 04070000
  409. JPRINT GET PRINT BUFFER 04080000
  410. SET EJECT CARRIAGE CONTROL FOR TITLE LINE 04090000
  411. MVC DECKID,JDECKID DECK IDENTIFIER 04100000
  412. MVC TITLE,ZTITLE SET TITLE 04110000
  413. MVC PAGE,ZPAGEZ SET PAGE NUMBER DESIGNATOR 04120000
  414. LH R14,JPAGENO GET OLD PAGE NUMBER 04130000
  415. LA R14,1(,R14) INCREMENT BY 1 04140000
  416. STH R14,JPAGENO SAVE PAGE NUMBER 04150000
  417. CVD R14,JDWORD CONVERT PAGE NUMBER TO DECIMAL 04160000
  418. UNPK PAGENO,JDWORD+6(2) UNPACK TO EBCDIC CODE 04170000
  419. NC PAGENO,DIGMASK CONVERT TO INTERNAL CHARACTERS 04180000
  420. GOIF PAGENO,J0,NOTEQ=PRTESD1 SKIP IF NOT A LEADING ZERO 04190000
  421. MVI PAGENO,JBLANK FORCE TO A BLANK 04200000
  422. GOIF PAGENO+1,J0,NOTEQ=PRTESD1 SKIP IF NOT A LEADING ZERO 04210000
  423. MVI PAGENO+1,JBLANK FORCE TO A BLANK 04220000
  424. PRTESD1 JPRINT GET PRINT BUFFER 04230000
  425. MVC HEADING,ZHEADING SET SUBTITLE 04240000
  426. MVC LVTMDT,JLVTMDT SET ASSEMBLER LEVEL, TIME, DATE 04250000
  427. LH R5,JLNCT GET MAXIMUM LINE COUNT 04260000
  428. PRTESD2 JPRINT GET PRINT BUFFER 04270000
  429. SET SPACE1 CARRIAGE CONTROL FOR LINE 04280000
  430. CH R5,JLNCT COMPARE TO MAXIMUM LINE COUNT 04290000
  431. BL PRTESD3 SKIP IF NOT REACHED 04300000
  432. SET SPACE2 CARRIAGE CONTROL FOR FIRST LINE 04310000
  433. PRTESD3 BCTR R5,0 DECREMENT LINE COUNT 04320000
  434. STH R5,LINECNT SAVE LINE COUNT 04330000
  435. MVC ZSYMBOL,ENAME SET NAME 04340000
  436. TRT ETYPE,ZTYPESZ TRANSLATE FIRST CHARACTER 04350000
  437. STC R2,ZTYPE TO OUTPUT ITEM 04360000
  438. TRT ETYPE,ZTYPESZ+D7 TRANSLATE SECOND CHARACTER 04370000
  439. STC R2,ZTYPE+D1 TO OUTPUT ITEM 04380000
  440. UNPK ZID(L'ZID+1),EESDI(L'EESDI+1) UNPACK WITH ROOM TO SPARE 04390000
  441. NC ZID,DIGMASK CONVERT TO INTERNAL CHARACTERS 04400000
  442. MVI ZID+L'ZID,JBLANK REPAIR DAMAGE 04410000
  443. NI ZID+1,BITFF-ESW-EQUF @OY08064 04420000
  444. GOIF ETYPEER,EQUAL=PCHESD FINIS FOR EXTERNAL REFERENCE 04430000
  445. GOIF ETYPEWX,EQUAL=PCHESD FINIS FOR EXTERNAL REFERENCE 04440000
  446. UNPK ZADDR(L'ZADDR+1),ELCTR(L'ELCTR+1) UNPACK WITH EXCESS 04450000
  447. NC ZADDR,DIGMASK CONVERT TO INTERNAL CHARACTERS 04460000
  448. MVI ZADDR+L'ZADDR,JBLANK REPAIR DAMAGE 04470000
  449. GOIF ETYPELD,NOTEQ=PRTESD4 SKIP IF NOT LD TYPE 04480000
  450. MVC ZLDID,ZID PUT IN PROPER PERSPECTIVE 04490000
  451. MVC ZID,ZID-1 REPAIR 04500000
  452. B PCHESD FINISHED IF LD TYPE 04510000
  453. PRTESD4 UNPK ZLENGTH(L'ZLENGTH+1),EHILC(L'EHILC+1) UNPACK 04520000
  454. NC ZLENGTH,DIGMASK CONVERT TO INTERNAL CHARACTERS 04530000
  455. MVI ZLENGTH+L'ZLENGTH,JBLANK REPAIR 04540000
  456. EJECT 04550000
  457. *TITLE- PCHESD * 04560000
  458. * * 04570000
  459. *FUNCTION/OPERATION- * 04580000
  460. * PUNCH ONE ITEM IN THE EXTERNAL SYMBOL DICTIONARY. * 04590000
  461. * * 04600000
  462. *INPUT- REGISTER R6 IS A POINTER TO ONE ITEM IN THE EXTERNAL SYMBOL * 04610000
  463. * DICTIONARY. * 04620000
  464. * * 04630000
  465. *OUTPUT- THE EXTERNAL SYMBOL DICTIONARY ON THE PUNCH AND LINK FILES. * 04640000
  466. * * 04650000
  467. SPACE 04660000
  468. PCHESD GOIF (JDECK,JLINK),NONE=MAKGET RETURN IF NOT OPTIONED 04670000
  469. LM R10,R11,CARDADDR GET ADDRESS OF CARD 04680000
  470. CLI CARDADDR+D3,48 SEE IF ANOTHER CARD NEEDED 04690000
  471. BL PCHESD1 NOT NECESSARILY 04700000
  472. JPUNCH SEQ=YES GET ANOTHER CARD BUFFER 04710000
  473. SET JENDCHK,ON PUNCH END CARD WHEN TIME COMES 04720000
  474. MVC CARDID,ZESDZ CARD IDENTIFIER 04730000
  475. TR CARDID+D1(71),JTRTABLE TRANSLATE TO EXTERNAL CODE 04740000
  476. MVI DATALN,D0 HIGH ORDER BYTE OF FIELD ZEROED 04750000
  477. SR R10,R10 NEW CARD BUFFER INDICATION 04760000
  478. PCHESD1 LA R10,NEXTITEM POINT TO NEXT ENTRY SPACE 04770000
  479. STM R10,R11,CARDADDR SAVE ADDRESS OF CARD 04780000
  480. STC R10,DATALN+1 LENGTH OF DATA 04790000
  481. ALR R10,R11 POINTER TO ESD DATA ITEM IN R3 04800000
  482. MVC ZZSYMBOL,ENAME SET NAME 04810000
  483. TR ZZSYMBOL,JTRTABLE CONVERT TO EXTERNAL CHARACTERS 04820000
  484. MVC ZZTYPE,ETYPE SET TYPE 04830000
  485. MVC ZZADDR,ELCTR+L'ELCTR-L'ZZADDR SET ADDRESS 04840000
  486. GOIF ETYPEXD,NOTEQ=PCHESD3 SKIP IF NOT XD TYPE 04850000
  487. MVC ZZADDR(L'ZZADDR+L'ZZALGN),ELCTR SET ALIGNMENT FACTOR 04860000
  488. PCHESD3 GOIF ETYPELD,NOTEQ=PCHESD4 SKIP IF NOT LD TYPE 04870000
  489. MVC ZZLENGTH+L'ZZLENGTH-L'EESDI(L'EESDI),EESDI LDID 04880000
  490. MVI ZZLENGTH,X'00' PAD WITH LEADING ZEROS 04890000
  491. B MAKGET FINIS 04900000
  492. PCHESD4 TM FIRSTID,X'F0' SEE IF ESDID SET 04910000
  493. BZ PCHESD5 SKIP IF ALREADY SET 04920000
  494. MVC FIRSTID,EESDI SET ESDID OF FIRST NON LD ITEM 04930000
  495. NI FIRSTID,BITFF-BIT4-EQUF @OY08064 04940000
  496. PCHESD5 GOIF ETYPEER,EQUAL=MAKGET FINIS FOR EXTERNAL REFERENCE 04950000
  497. GOIF ETYPEWX,EQUAL=MAKGET FINIS FOR EXTERNAL REFERENCE 04960000
  498. MVC ZZLENGTH,EHILC+L'EHILC-L'ZZLENGTH SET LENGTH 04970000
  499. B MAKGET FINIS 04980000
  500. EJECT 04990000
  501. REFER BALR R14,R7 SAVE REGISTERS IN STACK 05000000
  502. LR R8,R12 SET UP BASE REGISTER 05010000
  503. MVC XWORK(D12),=AL1(0,24,JPSOP,0,JTSYMBL,0,0,0,0,0,0,0) 05020000
  504. LA R10,XWORK SYMBOL POINTER 05030000
  505. GOTO FIND LOOK UP IN SYMBOL TABLE 05040000
  506. BZ REFER2 FIND IN SYMBOL TABLE 05050000
  507. REFER1 GOIF MODE2,ON=EXIT DUMPING LITERALS ON OVERFLOW 05060000
  508. B REFER4 UNDEFINED AS YET 05070000
  509. REFER2 GOIF ENTRYSW,ON=REFER1 NOT A DEFINED SYMBOL 05080000
  510. MVC XTYPE(D2),=AL1(JTADJII,DEFINED+PRIORDEF) 05090000
  511. GOIF MODE2,OFF=REFER3 SKIP IF NOT OVERFLOW 05100000
  512. MVI XTYPE,JTSYMII REHASH IN PASS TWO 05110000
  513. REFER3 MVC XFLGB,SFLGS SYMBOL FLAGS 05120000
  514. MVC XESDI(D6),SESDI ESDID AND VALUE 05130000
  515. LH R15,SLNGQ LENGTH ATTRIBUTE 05140000
  516. GOIF ESDNRSW,OFF=REFER5 EXTERNAL SYMBOL 05150000
  517. REFER4 LA R15,D1 LENGTH ATTRIBUTE 05160000
  518. REFER5 STH R15,XLNGQ SET LENGTH ATTRIBUTE 05170000
  519. LR R11,R10 05180000
  520. LH R10,JOUTFILE OUTPUT FILE ADDRESS 05190000
  521. JPUTM FILE=(R10),ADDR=(R11) 05200000
  522. B EXIT FINIS 05210000
  523. EJECT 05220000
  524. * CONSTANTS * 05230000
  525. SPACE 05240000
  526. OIINST OI D0(R15),D0 EXECUTED INSTRUCTION 05250000
  527. DIGMASK JGENIN 'FFFFFF' DIGIT MASK 05260000
  528. ZTYPESZ JGENIN 'SLEXPCXDDRWCMDXXXX' TYPES 05270000
  529. SUMTBL DC AL1(SUMCST-SUMGET) 00 - (SD) CONTROL SECTION 05280000
  530. DC AL1(SUMGET-SUMGET) 01 - (LD) LABEL DEFINITION 05290000
  531. DC AL1(SUMGET-SUMGET) 02 - (ER) EXTERNAL REFERENCE 05300000
  532. DC AL1(SUMGET-SUMGET) 03 OVERFLOW ENTRY 05310000
  533. DC AL1(SUMCST-SUMGET) 04 - (PC) PRIVATE CODE 05320000
  534. DC AL1(SUMCST-SUMGET) 05 - (CM) COMMON 05330000
  535. DC AL1(SUMDXD-SUMGET) 06 - (XD) EXTERNAL DUMMY 05340000
  536. DC AL1(SUMDSD-SUMGET) 07 - EXTERNAL DUMMY 05350000
  537. DC AL1(SUMCST-SUMGET) 08 - DUMMY CONTROL SECTION 05360000
  538. DC AL1(SUMGET-SUMGET) 09 UNDEFINED ENTRY 05370000
  539. DC AL1(SUMGET-SUMGET) 0A - (WX) EXTERNAL REFERENCE 05380000
  540. MAKTBL DC AL1(PRTESD-MAKGET) 00 - (SD) CONTROL SECTION 05390000
  541. DC AL1(MAKTRY-MAKGET) 01 - (LD) LABEL DIFINITION 05400000
  542. DC AL1(MAKEXT-MAKGET) 02 - (ER) EXTERNAL REFERENCE 05410000
  543. DC AL1(MAKGET-MAKGET) 03 OVERFLOW ENTRY 05420000
  544. DC AL1(MAKPVT-MAKGET) 04 - (PC) PRIVATE CODE 05430000
  545. DC AL1(MAKCST-MAKGET) 05 - (CM) COMMON 05440000
  546. DC AL1(MAKCST-MAKGET) 06 - (XD) EXTERNAL DUMMY 05450000
  547. DC AL1(MAKGET-MAKGET) 07 - NOT USED 05460000
  548. DC AL1(MAKGET-MAKGET) 08 - DSECT 05470000
  549. DC AL1(MAKGET-MAKGET) 09 - UNDEFINED ENTRY 05480000
  550. DC AL1(MAKEXT-MAKGET) 0A - (WX) EXTERNAL REFERENCE 05490000
  551. ZESDZ DC B'00000010' 12-9-2 CARD IDENTIFIER 05500000
  552. JGENIN 'ESD' ESD CARD IDENTIFIER 05510000
  553. ZPAGEZ JGENIN 'PAGE' PAGE NUMBER DESIGNATOR 05520000
  554. ZTITLE JGENIN 'EXTERNAL SYMBOL DICTIONARY' ESD TITLE 05530000
  555. ZHEADING DC YL1(SPACE3) CARRIAGE CONTROL CHARACTER 05540000
  556. JGENIN 'SYMBOL TYPE ID ADDR LENGTH LDID' SUBTITLE 05550000
  557. EJECT 05560000
  558. DSECT10 DSECT , 05570000
  559. ORG DSECT10 05580000
  560. SPACE 05590000
  561. ZZSYMBOL DS C'XXXXXXXX' NAME, BLANK FOR PC OR BLANK CM 05600000
  562. ZZTYPE DS C'X' TYPE 05610000
  563. ZZADDR DS C'XXX' ADDRESS 05620000
  564. ZZALGN DS C'X' ALIGNMENT FACTOR FOR SC TYPE 05630000
  565. ZZLENGTH DS C'XXX' LENGTH 05640000
  566. NEXTITEM EQU * NEXT ITEM FOLLOWS IMMEDIATELY 05650000
  567. SPACE 05660000
  568. SPACE 05670000
  569. DSECT11 DSECT , 05680000
  570. ORG DSECT11 05690000
  571. SPACE 05700000
  572. CARD DS 0CL72 05710000
  573. CARDID DS C' ESD' CARD IDENTIFIER 05720000
  574. DS C' ' BLANK 05730000
  575. DATALN DS H NUMBER OF BYTES OF ESD DATA 05740000
  576. DS C' ' BLANK 05750000
  577. FIRSTID DS H ESDID OF FIRST NON LD TYPE ITEM 05760000
  578. DATAITEM DS CL16 05770000
  579. SPACE 05780000
  580. SPACE 05790000
  581. ORG DSECT11 05800000
  582. SPACE 05810000
  583. LINE DS 0CL121 05820000
  584. CTLCHAR DBV EJECT(0),SPACE1(1),SPACE2(2),SPACE3(3) CARRIAGE CONTROL 05830000
  585. DECKID DS CL8 DECK IDENTIFIER 05840000
  586. ORG LINE+48 05850000
  587. TITLE DS C'EXTERNAL SYMBOL DICTIONARY' ESD TITLE 05860000
  588. ORG LINE+112 05870000
  589. PAGE DS C'PAGE' PAGE NUMBER DESIGNATOR 05880000
  590. ORG LINE+118 05890000
  591. PAGENO DS C'000' PAGE NUMBER 05900000
  592. ORG LINE 05910000
  593. HEADING DS C'3SYMBOL TYPE ID ADDR LENGTH LDID' 05920000
  594. ORG LINE+L'LINE-L'JLVTMDT 05930000
  595. LVTMDT DS CL(L'JLVTMDT) ASSEMBLER LEVEL, TIME, DATE 05940000
  596. ORG LINE+1 05950000
  597. ZSYMBOL DS C'XXXXXXXX' NAME, BLANK FOR PC OR BLANK CM 05960000
  598. DS C' ' SPACES 05970000
  599. ZTYPE DS C'XX' ESD ITEM TYPE 05980000
  600. DS C' ' SPACES 05990000
  601. ZID DS C'XXXX' ESD IDENTIFIER, IF NON LD TYPE 06000000
  602. DS C' ' SPACE 06010000
  603. ZADDR DS C'XXXXXX' ADDRESS, IF TYPE SD, PC, LD 06020000
  604. DS C' ' SPACE 06030000
  605. ZLENGTH DS C'XXXXXX' LENGTH, IF TYPE SD, PC, CM, SC 06040000
  606. DS C' ' SPACE 06050000
  607. ZLDID DS C'XXXX' ESD IDENTIFIER OF SD ENTRY 06060000
  608. MEND 06070000
  609. * ENDUP "REVIEW" PDS MEMBER OFFLOAD AT 21:58 ON 04/01/09