MACRO 00100000 &ID XDICT &DUMMY,&TESTRAN=NO,&DIAG=NO,&LEVEL=1 00200000 GBLC &COMPNM COMPONENT NAME 00300000 LCLC &NM MODULE NAME 00400000 JHEAD 'EXTERNAL SYMBOL DICTIONARY SUBROUTINES', ,00500000 PHASEID=&ID,LEVEL=&LEVEL 00600000 &NM SETC '&COMPNM&ID' 00700000 * * 00800000 *TITLE- EXTERNAL SYMBOL DICTIONARY ROUTINES * 00900000 * * 01000000 *FUNCTION/OPERATION- * 01100000 * BUILD AND MAINTAIN THE EXTERNAL SYMBOL DICTIONARY * 01200000 * PRINT AND PUNCH THE EXTERNAL SYMBOL DICTIONARY * 01300000 * BUILD THE EXTERNAL SYMBOL DICTIONARY ADJUSTMENT TABLE * 01400000 * * 01500000 *ENTRY POINT- * 01600000 ENTRY &NM.01 01700000 * * 01800000 *INPUT- * 01900000 * REGISTERS- * 02000000 * R4- REGISTER CONTAINING THE ADDRESS OF THE * 02100000 * RECORD BEING PROCESSED * 02200000 * R5- REGISTER CONTAINING THE ADDRESS OF THE * 02300000 * OPERAND BEING PROCESSED * 02400000 * R6- REGISTER CONTAINING THE ADDRESS OF THE * 02500000 * CURRENT CONTROL SECTION ESD ENTRY * 02600000 * * 02700000 *OUTPUT- * 02800000 * REGISTERS- * 02900000 * R10 REGISTER CONTAINING THE ADDRESS OF THE * 03000000 * NEW CURRENT CONTROL SECTION ESD ENTRY, IF * 03100000 * CHANGED * 03200000 * * 03300000 *EXITS, NORMAL- * 03400000 * EXITS TO THE CALLING ROUTINE * 03500000 * * 03600000 *EXITS, ERROR- * 03700000 * EXITS TO THE CALLING ROUTINE * 03800000 * * 03900000 *TABLES/WORK AREAS- * 04000000 * ESDBLK1- A BLOCK IN STORAGE TO CONTAIN A MAXMI * 04100000 * ESDBLK1- A BLOCK OF STORAGE TO CONTAIN A MAXIMUM OF 16 ESD * 04200000 * ENTRIES, ALSO SERVES AS AN INPUT/OUTPUT BUFFER * 04300000 * FOR THE OVERFLOW FILE (FILE2) WHEN NECESSARY * 04400000 * ESDBLK2- SAME FUNCTION AS ESDBLK1 ABOVE * 04500000 * NOTELIST- A LIST OF NOTE PARAMETERS OF OVERFLOWED ESD BLOCKS * 04600000 * WHEN NOT IN CORE * 04700000 * * 04800000 *ATTRIBUTES- * 04900000 * REFRESHABLE * 05000000 * * 05100000 *NOTES * 05200000 * * 05300000 EJECT 05400000 COPY JCOMMON 05500000 EJECT 05600000 COPY JTEXT 05700000 EJECT 05800000 COPY ICOMMON 05900000 EJECT 06000000 JTEXT DSECT , 06100000 ORG JTEXT 06200000 COPY RSYMRCD 06300000 EJECT 06400000 &NM.00 CSECT 06500000 * VS1 REL 2.6 CHANGES 06510002 *C221000 OX00106 06550002 *A246500,430500,481500 OX00106 06560002 *C430500,481500 @OY08064 06560105 JMODID 06600000 &NM.01 CONTENTS 06700000 USING &NM.01,R8 BASE REGISTER 06800000 EJECT 06900000 *TITLE- BLDESD * 07000000 * * 07100000 *FUNCTION/OPERATION- * 07200000 * BUILD OR RESUME AN ESD ENTRY * 07300000 * * 07400000 *INPUT- R4 CONTAINS A POINTER TO THE RECORD BEING PROCESSED * 07500000 * R10 CONTAINS A POINTER TO A PARAMETER LIST * 07600000 * * 07700000 *OUTPUT- R10 CONTAINS A POINTER TO THE ESD ENTRY * 07800000 * * 07900000 SPACE 08000000 BLDESD BALR R14,R7 SAVE REGISTERS IN STACK 08100000 LR R8,R12 SET UP BASE REGISTER 08200000 LA R2,D1 INCREMENT IN 08300000 LR R3,R2 TWO REGISTER 08400000 LR R5,R10 SAVE POINTER 08500000 AH R2,D0(,R5) ESDID 08600000 AH R3,HIESDNR ESD NUMBER 08700000 STH R2,XESDI ESDID 08800000 STH R3,XLNGQ ESD NUMBER 08900000 MVC XFLGB,XPARM FLAGS 09000000 SR R0,R0 ZERO 09100000 ST R0,XLCTR INITIAL VALUE 09200000 OC XESDI(D1),XPARM+D3 FLAG FOR DSECT OR COM 09300000 BLDESD1 MVC XTYPE,XPARM+D1 TYPE 09400000 MVC XNAME,=8AL1(JBLANK) PAD 09500000 MVC XNAME(D1),XTYPE NAME 09600000 GOIF RFIELDN,OFF=BLDESD2 SKIP IF NO NAME 09700000 MVC RLNGQ,=H'1' LENGTH ATTRIBUTE 09800000 GOIF PRIORDEF,ON=BLDESD2 SKIP IF PREVIOUSLY DEFINED 09900000 MVC XNAME,RNAME GET NAME 10000000 MVC XTYPE,XPARM+D2 TYPE 10100000 BLDESD2 LA R10,XWORK PASS RECORD POINTER 10200000 GOTO ENTER TRY TO ENTER IN SYMBOL TABLE 10300000 BNE BLDESD5 ALREADY IN SYMBOL TABLE 10400000 STH R2,D0(,R5) SAVE ESDID 10500000 STH R3,HIESDNR SAVE ESD NUMBER 10600000 TM XESDI,CSW2+DSW2 COM OR DSECT 10700000 BNE BLDESD4 SKIP IF SO 10800000 NC FSTCSECT,FSTCSECT SEE IF FIRST CSECT 10900000 BNE BLDESD3 SKIP IF NOT 11000000 STH R3,FSTCSECT FIRST CSECT ESD NUMBER 11100000 BLDESD3 CLI XTYPE,ETYPEPC PRIVATE CODE 11200000 BNE BLDESD4 SKIP IF NOT 11300000 STH R2,JESDID ESDID OF PRIVATE CODE 11400000 BLDESD4 LR R10,R3 ESD NUMBER 11500000 GOTO GETESD GET ESD ENTRY 11600000 LM R2,R3,XTYPE TYPE, ESDID, ADDRESS 11700000 SR R4,R4 INITIALIZE 11800000 LM R5,R6,XNAME NAME 11900000 STM R2,R6,ETYPE-ETYPE(R10) CREATE ESD ENTRY 12000000 B EXIT EXIT 12100000 BLDESD5 CLC SFLGS,XFLGB SEE IF SAME TYPE SECTION 12150000 BE BLDESD6 RESUME SECTION IF SAME 12200000 NI XPARM,BITFF-(XDUMMY) DISCOUNT EXTERNAL DUMMYS 12250000 CLC SFLGS,XPARM GIVE IT ANOTHER CHANCE 12300000 BE BLDESD6 LET THIS ONE GO 12370000 SET PRIORDEF,ON INDICATE PREVIOUSLY DEFINED 12400000 B BLDESD1 IGNORE NAME 12500000 BLDESD6 LH R10,SLNGQ ESD ASCENDSION NUMBER 12600000 GOTO GETESD RESUME ESD ENTRY 12700000 SET DEFINED,ON INDICATE RESUMED SECTION 12800000 B EXIT EXIT 12900000 EJECT 13000000 *TITLE- GETESD * 13100000 * * 13200000 *FUNCTION/OPERATION- * 13300000 * GET AN ESD ENTRY * 13400000 * * 13500000 *INPUT- R10 CONTAINS THE ESD NUMBER * 13600000 * * 13700000 *OUTPUT- R10 CONTAINS A POINTER TO THE ENTRY * 13800000 * * 13900000 SPACE 14000000 GETESD BALR R14,R7 SAVE REGISTER IN STACK 14100000 LR R8,R12 SET UP BASE REGISTER 14200000 LR R2,R10 INTO WORK REGISTER 14300000 LA R10,D16*D25 MAXIMUM ESD ENTRIES 14400000 CR R10,R2 SEE IF EXCEEDED 14500000 BNL GETESD0 NOPE 14600000 BAL R9,GETESD RECURSIVE CALL 14700000 SET JESDOFLO,ON INDICATE ESD OVERFLOW 14800000 MVI D0(R10),D3 OVERFLOW ENTRY 14860000 XC D1(D19,R10),D1(R10) INITIALIZE 14920000 B EXIT RETURN 15000000 GETESD0 BCTR R2,D0 ESD NUMBER 15100000 SRDL R2,D4 BLOCK NUMBER 15200000 LR R4,R2 NOTE/POINT ADDRESS FOR BLOCK 15300000 MH R4,=H'9' X 15400000 LA R4,NOTELIST(R4) X 15500000 SRL R3,D28 DISPLACEMENT 15600000 MH R3,=H'20' DISPLACEMENT 15700000 TM D8(R4),BIT7 SEE IF THIS A NEW BLOCK 15800000 BO GETESD4 NO 15900000 TM FILELAST+D8,BIT7 SEE IF FLIE POSITIONED TO WRITE 16000000 BZ GETESD1 YES 16100000 JPOINT FILE=FILE2,ADDR=FILELAST,NEXT=WRITE POSITION FILE 16200000 GETESD1 LA R5,ESDBLK2 POINT TO SECOND BLOCK 16300000 CR R5,R6 SEE IF BLOCK CURRENTLY IN USE 16400000 BH GETESD2 NO 16500000 LA R5,ESDBLK1 POINT TO FIRST BLOCK 16600000 GETESD2 JWRITE FILE=FILE2,PARM=(R5) WRITE DESIGNATED BLOCK 16700000 MVI FILELAST+D8,D0 INDICATE FILE POSITIONED TO END 16800000 JCHECK FILE=FILE2 CHECK WRITE OPERATION 16900000 JNOTE FILE=FILE2 NOTE ADDRESS OF BLOCK ON FILE 17000000 LH R1,D6(,R5) BLOCK NUMBER OF BLOCK WRITTEN 17100000 MH R1,=H'9' NOTE/POINT ADDRESS FOR BLOCK 17200000 LA R1,NOTELIST(R1) X 17300000 MVI D8(R1),BIT6 INDICATE BLOCK ON FILE 17400000 MVC D0(D8,R1),JNOTEVAL SAVE BLOCK NOTE/POINT ADDRESS 17500000 MVC FILELAST(D8),JNOTEVAL NOTE/POINT ADDRESS OF FILE END 17600000 TM D8(R4),BIT6 SEE IF BLOCK ON FILE 17700000 BZ GETESD3 NOPE 17800000 JPOINT FILE=FILE2,ADDR=(R4),NEXT=READ POINT TO BLOCK 17900000 JREAD FILE=FILE2,PARM=(R5) BRING IN BLOCK 18000000 MVI FILELAST+D8,BIT7 INDICATE FILE NOT POSITIONED 18100000 JCHECK FILE=FILE2 CHECK READ OPERATION 18200000 GETESD3 ST R5,JFWORD1 ADDRESS OF BLOCK 18300000 MVI D8(R4),BIT7 INDICATE BLOCK IS IN CORE 18400000 MVC D0(D4,R4),JFWORD1 SAVE ADDRESS OF BLOCK IN CORE 18500000 GETESD4 MVC JFWORD1,D0(R4) ADDRESS TO FULLWORD BOUNDARY 18600000 L R5,JFWORD1 ADDRESS OF BLOCK IN CORE 18700000 STH R2,D6(,R5) BLOCK NUMBER 18800000 LA R10,D8(R3,R5) POINT TO ENTRY REQUESTED 18900000 B EXIT RETURN 19000000 EJECT 19100000 *TITLE- MAKESD * 19200000 * * 19300000 *FUNCTION/OPERATION- * 19400000 * CREATE THE ESD ADJUSTMENT TABLE * 19500000 * ESD FINISHING AND OUTPUT * 19600000 * * 19700000 *INPUT- THE EXTERNAL SYMBOL DICTIONARY (ESD). * 19800000 * * 19900000 *OUTPUT- THE ESD ADJUSTMENT TABLE. * 20000000 * THE EXTERNAL SYMBOL DICTIONARY ON THE SYSTEM OUTPUT FILES. * 20100000 * * 20200000 SPACE 20300000 ENTRY BALR R14,R7 SAVE REGISTERS IN STACK 20400000 LR R8,R12 SET UP BASE REGISTER 20500000 LR R10,R4 PASS RECORD POINTER 20600000 MVI RFLGB,ESDNRSW+ENTRYSW SET FLAGS 20700000 GOTO FIND LOOKUP IN SYMBOL TABLE 20800000 BZ ENTRY2 ERROR 20900000 GOIF (MODE1,MODE2),ANY=EXIT SUSPEND ACTION IF NOT MODE IA 21000000 GOTO ENTER ENTER IN SYMBOL TABLE 21100000 LH R10,HIESDNR GET HIGHEST ESD NUMBER 21200000 LA R10,D1(,R10) GET NEXT ESD NUMBER 21300000 STH R10,HIESDNR SAVE 21400000 STH R10,SLNGQ ESD ASCENDSION NUMBER 21500000 GOTO GETESD FIND ROOM IN ESD 21600000 MVI ETYPE-EITEM(R10),ETYPELX PRIME ESD ENTRY 21700000 ENTRY1 MVI RTYPE,JTSYMBL CHECK BACK IN PASS 2 21800000 B EXIT FINIS 21900000 ENTRY2 GOIF (ESDNRSW,XENTRY,CSECTSW,DSECTSW),ALL=ENTRY1,MIX=ENTRY3 22000000 GOIF (CSW,DSW,ESW),ANY=ENTRY3 INVALID OX00106 22100002 SR R0,R0 SEE IF 22200000 CH R0,SESDI ABSOLUTE 22300000 BZ ENTRY3 BAD 22400000 SET XENTRY,ON INDICATE VALID ENTRY 22500000 OI RFLGB,XENTRY INDICATE VALID ENTRY 22600000 MVC RESDI(D6),SESDI ESDID AND ADDRESS 22700000 LH R10,HIESDNR GET HIGHERS ESD NUMBER 22800000 LA R10,D1(,R10) GET NEXT ESD NUMBER 22900000 STH R10,HIESDNR SAVE 23000000 GOTO GETESD GET ESD ENTRY 23100000 MVI ETYPE-EITEM(R10),ETYPELD ESD ENTRY TYPE 23200000 MVC EESDI-EITEM(D6,R10),RESDI ESDID AND VALUE 23300000 MVC ENAME-EITEM(D8,R10),RNAME NAME 23400000 MVI RTYPE,JTADJII ADJUST VALUE IN IIA 23500000 B EXIT FINIS 23600000 ENTRY3 MVI RTYPE,JTPASS INVALID ENTRY 23700000 B EXIT FINIS 23800000 EXTRN BALR R14,R7 SAVE REGISTERS IN STACK 23900000 LR R8,R12 SET UP BASE REGISTER 24000000 LA R2,D1 INCREMENT 24100000 LR R3,R2 IN TWO REGISTERS 24200000 STH R2,RLNGQ LENGTH ATTRIBUTE OF SYMBOL 24300000 AH R2,HICESDID NEXT ESDID 24400000 AH R3,HIESDNR NEXT ESD NUMBER 24500000 EXTRN1 STH R2,RESDI ESDID 24600000 SET ESW1,ON SET EXTRN/EQU FLAG OX00106 24650002 EXTRN2 XI RNAME,BIT0 UNIQUE NAME 24700000 LR R10,R4 PASS RECORD POINTER 24800000 GOTO ENTER ENTER INTO SYMBOL TABLE 24900000 BNE EXTRN5 ALREADY IN SYMBOL TABLE 25000000 TM RNAME,BIT0 SEE IF FIRST TIME AROUND 25100000 BNE EXTRN2 ENTER SECOND TIME IF FIRST 25200000 CH R3,HIESDNR SEE IF NEW ENTRY 25300000 BNH EXTRN3 SKIP IF NOT NEW 25400000 STH R2,HICESDID SAVE NEW ESDID 25500000 STH R3,HIESDNR SAVE NEW0ESD NUMBER 25600000 EXTRN3 LR R10,R3 PASS ESD NUMBER 25700000 GOTO GETESD GET ESD ENTRY 25800000 MVC ETYPE-EITEM(D8,R10),RTYPE 25900000 MVC ENAME-EITEM(D8,R10),RNAME 26000000 EXTRN4 MVI RTYPE,JTPASS NO PROCESS RECORD IN PASS 2 26100000 B EXIT 26200000 EXTRN5 LH R2,SESDI GET ESDID OF PREVIOUS ENTRY 26300000 LH R3,SLNGQ GET ESD ASCENDSION NUMBER 26400000 TM RNAME,BIT0 SEE IF FIRST TIME AROUND 26500000 BNE EXTRN1 GO AGAIN IF FIRST 26600000 SET PRIORDEF,ON INDICATE PREVIOUSLY DEFINED 26700000 B EXTRN4 EXIT 26800000 VCON BALR R14,R7 SAVE REGISTERS IN STACK 26900000 LR R8,R12 SET UP BASE REGISTER 27000000 LR R3,R2 IN TWO REGISTERS 27100000 AH R2,HICESDID GET NEXT ESDID 27200000 AH R3,HIESDNR GET NEXT ESD NUMBER 27300000 STH R2,XESDI ESDID 27400000 STH R3,XLNGQ ESD NUMBER 27500000 MVI XTYPE,ETYPEER TYPE 27600000 MVI XFLGB,ESDNRSW FLAGS 27700000 OI XNAME,BIT0 EXTERNAL NAME 27800000 SR R0,R0 ZERO 27900000 STH R0,XLCTR VALUE 28000000 LA R10,XWORK POINTER TO ENTRY 28100000 GOTO ENTER ENTER IN SYMBOL TABLE 28200000 BNZ EXIT ALREADY IN SYMBOL TABLE 28300000 STH R2,HICESDID SAVE ESDID 28400000 STH R3,HIESDNR SAVE ESD NUMBER 28500000 XI XNAME,BIT0 RESET 28600000 LR R10,R3 GET ESD NUMBER 28700000 GOTO GETESD GET ESD ENTRY 28800000 MVC ETYPE-EITEM(D8,R10),XTYPE TYPE, FLAGS, ESDID, VALUE 28900000 MVC ENAME-EITEM(D8,R10),XNAME NAME 29000000 B EXIT RETURN 29100000 QCON BALR R14,R7 SAVE REGISTERS IN STACK 29200000 LR R8,R12 SET UP BASE REGISTER 29300000 LA R10,XWORK PASS POINTER TO WORK AREA 29400000 GOTO FIND LOOKUP IN SYMBOL TABLE 29500000 BNE EXIT NOT IN SYMBOL TABLE 29600000 GOIF (ESDNRSW,DSECTSW,DSCOMSW,XDUMMY),NOTALL=EXIT VALID NAME 29700000 SET XDUMMY,OFF ONE TIME ONLY PER DSECT NAME 29800000 LR R10,R2 INCREMENT IN TWO REGISTERS 29900000 AH R2,HICESDID NEXT ESDID 30000000 STH R2,HICESDID SAVE ESDID 30100000 LH R3,SLNGQ ESD ASCENDSION NUMBER 30200000 AH R10,HIESDNR NEXT ESD NUMBER 30300000 STH R10,HIESDNR SAVE ESD NUMBER 30400000 GOTO GETESD GET ESD ENTRY 30500000 MVC ENAME-EITEM(D8,R10),XNAME NAME 30600000 STH R2,EESDI-EITEM(,R10) ESDID 30700000 OI ESWTS-EITEM(R10),QDSW2 INDICATE XD ENTRY 30750000 STH R3,EHILC-EITEM(,R10) ESD ASCENDSION NUMBER 30800000 MVI ETYPE-EITEM(R10),ETYPEDX TYPE 30900000 B EXIT EXIT 31000000 SUMESD BALR R14,R7 PUSH DOWN ONE MORE LEVEL 31100000 SUMGET LR R10,R4 PASS 31200000 BAL R2,GOTESD GET ESD ITEM 31300000 SR R2,R2 ZERO FUNCTION BYTE REGISTER 31400000 TRT ETYPE,SUMTBL GET ROUTINE ADDRESS 31500000 B SUMGET(R2) GO TO ROUTINE 31600000 SUMCST LM R14,R15,ELCTR GET CURRENT AND HIGH ADDRESS 31700000 CR R14,R15 SEE IF CURRENT IS ALSO HIGH 31800000 BNH SUMCST1 SKIP IF NOT 31900000 LR R15,R14 SAVE HIGH 32000000 SUMCST1 SR R14,R14 ASSUME NO OFFSET 32100000 GOIF (CSW2,DSW2),ANY=SUMCST3 NO OFFSET FOR DSECTS OR COMS 32200000 L R14,STARTLOC GET START ADDRESS 32300000 NR R14,R5 ROUND TO SECTION ALIGNMENT 32400000 LA R0,D7 INCREMENT 32500000 AR R0,R14 COMPUTE NEXT START ADDRESS 32600000 AR R0,R15 COMPUTE NEXT START ADDRESS 32700000 ST R0,STARTLOC SAVE 32800000 LTR R14,R14 SEE IF ADJUSTMENT REQUIRED 32900000 BZ SUMCST3 NOPE 33000000 ST R14,D4(,R4) ADJUSTMENT FACTOR 33100000 MVC D0(D2,R4),EESDI ARGUMENT ESDID 33200000 SUMCST2 MVC D2(D2,R4),EESDI TARGET ESDID 33300000 SR R4,R5 POINT TO NEXT ADJUSTMENT ENTRY 33400000 SUMCST3 STM R14,R15,ELCTR ADDRESS AND LENGTH 33500000 B SUMGET CONTINUE WITH NEXT ENTRY 33600000 SUMDXD LM R15,R0,ELCTR GET LENGTH AND ALIGNMENT FACTOR 33700000 LR R14,R0 REORDER 33800000 B SUMCST3 SKIP 33900000 SUMDSD MVI ETYPE,ETYPEXD CHANGE TYPE 34000000 LH R10,EHILC GET ESD ASCENDSION NUMBER 34100000 GOTO GETESD GET ESD ENTRY 34200000 LA R14,D7 ALIGNMENT FACTOR 34300000 L R15,EHILC-EITEM(,R10) LENGTH 34400000 XC D4(D4,R4),D4(R4) 34500000 MVC D0(D2,R4),EESDI-EITEM(R10) 34600000 B SUMCST2 34700000 GOTESD LA R3,D1(,R3) GET NEXT ESD NUMBER 34800000 CH R3,HIESDNR SEE IF ALL THROUGH 34900000 BH EXIT FINIS 35000000 LR R10,R3 PASS ESD NUMBER 35100000 GOTO GETESD GET ESD ENTRY 35200000 LR R6,R10 RETURN POINTER 35300000 BR R2 RETURN 35400000 MAKESD BALR R14,R7 SAVE REGISTERS IN STACK 35500000 LR R8,R12 SET UP BASE REGISTER 35600000 L R4,LATEND ESD ADJUSTMENT TABLE POINTER 35700000 LH R5,=H'-8' INCREMENT 35800000 MVI CARDADDR+D3,48 FLUSH CARD PUNCH BUFFER 35900000 SR R3,R3 ESD NUMBER INITIALIZED 36000000 BAL R9,SUMESD SUM CONTROL SECTIONS 36100000 S R10,LATEND LENGTH OF ESD ADJUSTMENT TABLE 36200000 LR R11,R5 INCREMENT 36300000 STM R10,R11,ADJINDEX SAVE FOR PASS TWO 36400000 MAKGET BAL R2,GOTESD GET NEXT SEQUENTIAL ESD ENTRY 36500000 SR R2,R2 ZERO FUNCTION BYTE REGISTER 36600000 LR R10,R2 CLEAR REGISTER 36650000 TRT ETYPE,MAKTBL GET ROUTINE ADDRESS 36700000 B MAKGET(R2) GO TO ROUTINE 36800000 MAKCST SET (QDSW2,DSW2,CSW2),OFF RESET XD DSECT OR COM BITS 36900000 CLI ENAME,J9 SEE IF NAMED 37000000 BH PRTESD SKIP IF NAMED 37100000 MAKPVT MVI ENAME,JBLANK FAKE THE BLANK 37200000 B PRTESD PRINT ESD ITEM 37300000 MAKTRY LM R14,R1,ADJINDEX ESD ADJUSTMENT INDEX 37400000 LH R10,EESDI GET ESDID 37500000 MAKTRY1 BXLE R14,R15,PRTESD SEE IF ADJUSTMENT REQUIRED 37600000 CH R10,D0(R1,R14) SEE IF THIS IS THE ENTRY 37700000 BNE MAKTRY1 NO, KEEP LOOKING 37800000 L R10,D4(R1,R14) GET ADJUSTMENT FACTOR 37900000 A R10,ELCTR ADD OFFSET 38000000 MAKEXT ST R10,ELCTR SAVE 38100000 EJECT 38200000 *TITLE- PRTESD * 38300000 * * 38400000 *FUNCTION/OPERATION- * 38500000 * PRINT AN ITEM IN THE EXTERNAL SYMBOL DICTIONARY * 38600000 * * 38700000 *INPUT- REGISTER R10 IS A POINTER TO AN ESD ENTRY * 38800000 * * 38900000 *OUTPUT- THE EXTERNAL SYMBOL DICTIONARY * 39000000 * * 39100000 SPACE 39200000 PRTESD EQU * 39300000 GOIF (JESD,JLIST),NOTALL=PCHESD SKIP IF NOT OPTIONED 39400000 LH R5,LINECNT GET LINE COUNT 39500000 GOIF (R5),POS=PRTESD2 SKIP IF NOT END OF PAGE 39600000 JPRINT GET PRINT BUFFER 39700000 SET EJECT CARRIAGE CONTROL FOR TITLE LINE 39800000 MVC DECKID,JDECKID DECK IDENTIFIER 39900000 MVC TITLE,ZTITLE SET TITLE 40000000 MVC PAGE,ZPAGEZ SET PAGE NUMBER DESIGNATOR 40100000 LH R14,JPAGENO GET OLD PAGE NUMBER 40200000 LA R14,1(,R14) INCREMENT BY 1 40300000 STH R14,JPAGENO SAVE PAGE NUMBER 40400000 CVD R14,JDWORD CONVERT PAGE NUMBER TO DECIMAL 40500000 UNPK PAGENO,JDWORD+6(2) UNPACK TO EBCDIC CODE 40600000 NC PAGENO,DIGMASK CONVERT TO INTERNAL CHARACTERS 40700000 GOIF PAGENO,J0,NOTEQ=PRTESD1 SKIP IF NOT A LEADING ZERO 40800000 MVI PAGENO,JBLANK FORCE TO A BLANK 40900000 GOIF PAGENO+1,J0,NOTEQ=PRTESD1 SKIP IF NOT A LEADING ZERO 41000000 MVI PAGENO+1,JBLANK FORCE TO A BLANK 41100000 PRTESD1 JPRINT GET PRINT BUFFER 41200000 MVC HEADING,ZHEADING SET SUBTITLE 41300000 MVC LVTMDT,JLVTMDT SET ASSEMBLER LEVEL, TIME, DATE 41400000 LH R5,JLNCT GET MAXIMUM LINE COUNT 41500000 PRTESD2 JPRINT GET PRINT BUFFER 41600000 SET SPACE1 CARRIAGE CONTROL FOR LINE 41700000 CH R5,JLNCT COMPARE TO MAXIMUM LINE COUNT 41800000 BL PRTESD3 SKIP IF NOT REACHED 41900000 SET SPACE2 CARRIAGE CONTROL FOR FIRST LINE 42000000 PRTESD3 BCTR R5,0 DECREMENT LINE COUNT 42100000 STH R5,LINECNT SAVE LINE COUNT 42200000 MVC ZSYMBOL,ENAME SET NAME 42300000 TRT ETYPE,ZTYPESZ TRANSLATE FIRST CHARACTER 42400000 STC R2,ZTYPE TO OUTPUT ITEM 42500000 TRT ETYPE,ZTYPESZ+D7 TRANSLATE SECOND CHARACTER 42600000 STC R2,ZTYPE+D1 TO OUTPUT ITEM 42700000 UNPK ZID(L'ZID+1),EESDI(L'EESDI+1) UNPACK WITH ROOM TO SPARE 42800000 NC ZID,DIGMASK CONVERT TO INTERNAL CHARACTERS 42900000 MVI ZID+L'ZID,JBLANK REPAIR DAMAGE 43000000 NI ZID+1,BITFF-ESW-EQUF @OY08064 43050005 GOIF ETYPEER,EQUAL=PCHESD FINIS FOR EXTERNAL REFERENCE 43100000 GOIF ETYPEWX,EQUAL=PCHESD FINIS FOR EXTERNAL REFERENCE 43200000 UNPK ZADDR(L'ZADDR+1),ELCTR(L'ELCTR+1) UNPACK WITH EXCESS 43300000 NC ZADDR,DIGMASK CONVERT TO INTERNAL CHARACTERS 43400000 MVI ZADDR+L'ZADDR,JBLANK REPAIR DAMAGE 43500000 GOIF ETYPELD,NOTEQ=PRTESD4 SKIP IF NOT LD TYPE 43600000 MVC ZLDID,ZID PUT IN PROPER PERSPECTIVE 43700000 MVC ZID,ZID-1 REPAIR 43800000 B PCHESD FINISHED IF LD TYPE 43900000 PRTESD4 UNPK ZLENGTH(L'ZLENGTH+1),EHILC(L'EHILC+1) UNPACK 44000000 NC ZLENGTH,DIGMASK CONVERT TO INTERNAL CHARACTERS 44100000 MVI ZLENGTH+L'ZLENGTH,JBLANK REPAIR 44200000 EJECT 44300000 *TITLE- PCHESD * 44400000 * * 44500000 *FUNCTION/OPERATION- * 44600000 * PUNCH ONE ITEM IN THE EXTERNAL SYMBOL DICTIONARY. * 44700000 * * 44800000 *INPUT- REGISTER R6 IS A POINTER TO ONE ITEM IN THE EXTERNAL SYMBOL * 44900000 * DICTIONARY. * 45000000 * * 45100000 *OUTPUT- THE EXTERNAL SYMBOL DICTIONARY ON THE PUNCH AND LINK FILES. * 45200000 * * 45300000 SPACE 45400000 PCHESD GOIF (JDECK,JLINK),NONE=MAKGET RETURN IF NOT OPTIONED 45500000 LM R10,R11,CARDADDR GET ADDRESS OF CARD 45600000 CLI CARDADDR+D3,48 SEE IF ANOTHER CARD NEEDED 45700000 BL PCHESD1 NOT NECESSARILY 45800000 JPUNCH SEQ=YES GET ANOTHER CARD BUFFER 45900000 SET JENDCHK,ON PUNCH END CARD WHEN TIME COMES 46000000 MVC CARDID,ZESDZ CARD IDENTIFIER 46100000 TR CARDID+D1(71),JTRTABLE TRANSLATE TO EXTERNAL CODE 46200000 MVI DATALN,D0 HIGH ORDER BYTE OF FIELD ZEROED 46300000 SR R10,R10 NEW CARD BUFFER INDICATION 46400000 PCHESD1 LA R10,NEXTITEM POINT TO NEXT ENTRY SPACE 46500000 STM R10,R11,CARDADDR SAVE ADDRESS OF CARD 46600000 STC R10,DATALN+1 LENGTH OF DATA 46700000 ALR R10,R11 POINTER TO ESD DATA ITEM IN R3 46800000 MVC ZZSYMBOL,ENAME SET NAME 46900000 TR ZZSYMBOL,JTRTABLE CONVERT TO EXTERNAL CHARACTERS 47000000 MVC ZZTYPE,ETYPE SET TYPE 47100000 MVC ZZADDR,ELCTR+L'ELCTR-L'ZZADDR SET ADDRESS 47200000 GOIF ETYPEXD,NOTEQ=PCHESD3 SKIP IF NOT XD TYPE 47300000 MVC ZZADDR(L'ZZADDR+L'ZZALGN),ELCTR SET ALIGNMENT FACTOR 47400000 PCHESD3 GOIF ETYPELD,NOTEQ=PCHESD4 SKIP IF NOT LD TYPE 47500000 MVC ZZLENGTH+L'ZZLENGTH-L'EESDI(L'EESDI),EESDI LDID 47600000 MVI ZZLENGTH,X'00' PAD WITH LEADING ZEROS 47700000 B MAKGET FINIS 47800000 PCHESD4 TM FIRSTID,X'F0' SEE IF ESDID SET 47900000 BZ PCHESD5 SKIP IF ALREADY SET 48000000 MVC FIRSTID,EESDI SET ESDID OF FIRST NON LD ITEM 48100000 NI FIRSTID,BITFF-BIT4-EQUF @OY08064 48150005 PCHESD5 GOIF ETYPEER,EQUAL=MAKGET FINIS FOR EXTERNAL REFERENCE 48200000 GOIF ETYPEWX,EQUAL=MAKGET FINIS FOR EXTERNAL REFERENCE 48300000 MVC ZZLENGTH,EHILC+L'EHILC-L'ZZLENGTH SET LENGTH 48400000 B MAKGET FINIS 48500000 EJECT 48600000 REFER BALR R14,R7 SAVE REGISTERS IN STACK 48700000 LR R8,R12 SET UP BASE REGISTER 48800000 MVC XWORK(D12),=AL1(0,24,JPSOP,0,JTSYMBL,0,0,0,0,0,0,0) 48900000 LA R10,XWORK SYMBOL POINTER 49000000 GOTO FIND LOOK UP IN SYMBOL TABLE 49100000 BZ REFER2 FIND IN SYMBOL TABLE 49200000 REFER1 GOIF MODE2,ON=EXIT DUMPING LITERALS ON OVERFLOW 49300000 B REFER4 UNDEFINED AS YET 49400000 REFER2 GOIF ENTRYSW,ON=REFER1 NOT A DEFINED SYMBOL 49500000 MVC XTYPE(D2),=AL1(JTADJII,DEFINED+PRIORDEF) 49600000 GOIF MODE2,OFF=REFER3 SKIP IF NOT OVERFLOW 49700000 MVI XTYPE,JTSYMII REHASH IN PASS TWO 49800000 REFER3 MVC XFLGB,SFLGS SYMBOL FLAGS 49900000 MVC XESDI(D6),SESDI ESDID AND VALUE 50000000 LH R15,SLNGQ LENGTH ATTRIBUTE 50100000 GOIF ESDNRSW,OFF=REFER5 EXTERNAL SYMBOL 50200000 REFER4 LA R15,D1 LENGTH ATTRIBUTE 50300000 REFER5 STH R15,XLNGQ SET LENGTH ATTRIBUTE 50400000 LR R11,R10 50500000 LH R10,JOUTFILE OUTPUT FILE ADDRESS 50600000 JPUTM FILE=(R10),ADDR=(R11) 50700000 B EXIT FINIS 50800000 EJECT 51100000 * CONSTANTS * 51200000 SPACE 51300000 OIINST OI D0(R15),D0 EXECUTED INSTRUCTION 51400000 DIGMASK JGENIN 'FFFFFF' DIGIT MASK 51500000 ZTYPESZ JGENIN 'SLEXPCXDDRWCMDXXXX' TYPES 51600000 SUMTBL DC AL1(SUMCST-SUMGET) 00 - (SD) CONTROL SECTION 51700000 DC AL1(SUMGET-SUMGET) 01 - (LD) LABEL DEFINITION 51800000 DC AL1(SUMGET-SUMGET) 02 - (ER) EXTERNAL REFERENCE 51900000 DC AL1(SUMGET-SUMGET) 03 OVERFLOW ENTRY 52000000 DC AL1(SUMCST-SUMGET) 04 - (PC) PRIVATE CODE 52100000 DC AL1(SUMCST-SUMGET) 05 - (CM) COMMON 52200000 DC AL1(SUMDXD-SUMGET) 06 - (XD) EXTERNAL DUMMY 52300000 DC AL1(SUMDSD-SUMGET) 07 - EXTERNAL DUMMY 52400000 DC AL1(SUMCST-SUMGET) 08 - DUMMY CONTROL SECTION 52500000 DC AL1(SUMGET-SUMGET) 09 UNDEFINED ENTRY 52600000 DC AL1(SUMGET-SUMGET) 0A - (WX) EXTERNAL REFERENCE 52700000 MAKTBL DC AL1(PRTESD-MAKGET) 00 - (SD) CONTROL SECTION 52800000 DC AL1(MAKTRY-MAKGET) 01 - (LD) LABEL DIFINITION 52900000 DC AL1(MAKEXT-MAKGET) 02 - (ER) EXTERNAL REFERENCE 53000000 DC AL1(MAKGET-MAKGET) 03 OVERFLOW ENTRY 53100000 DC AL1(MAKPVT-MAKGET) 04 - (PC) PRIVATE CODE 53200000 DC AL1(MAKCST-MAKGET) 05 - (CM) COMMON 53300000 DC AL1(MAKCST-MAKGET) 06 - (XD) EXTERNAL DUMMY 53400000 DC AL1(MAKGET-MAKGET) 07 - NOT USED 53500000 DC AL1(MAKGET-MAKGET) 08 - DSECT 53600000 DC AL1(MAKGET-MAKGET) 09 - UNDEFINED ENTRY 53700000 DC AL1(MAKEXT-MAKGET) 0A - (WX) EXTERNAL REFERENCE 53800000 ZESDZ DC B'00000010' 12-9-2 CARD IDENTIFIER 53900000 JGENIN 'ESD' ESD CARD IDENTIFIER 54000000 ZPAGEZ JGENIN 'PAGE' PAGE NUMBER DESIGNATOR 54100000 ZTITLE JGENIN 'EXTERNAL SYMBOL DICTIONARY' ESD TITLE 54200000 ZHEADING DC YL1(SPACE3) CARRIAGE CONTROL CHARACTER 54300000 JGENIN 'SYMBOL TYPE ID ADDR LENGTH LDID' SUBTITLE 54400000 EJECT 54500000 DSECT10 DSECT , 54600000 ORG DSECT10 54700000 SPACE 54800000 ZZSYMBOL DS C'XXXXXXXX' NAME, BLANK FOR PC OR BLANK CM 54900000 ZZTYPE DS C'X' TYPE 55000000 ZZADDR DS C'XXX' ADDRESS 55100000 ZZALGN DS C'X' ALIGNMENT FACTOR FOR SC TYPE 55200000 ZZLENGTH DS C'XXX' LENGTH 55300000 NEXTITEM EQU * NEXT ITEM FOLLOWS IMMEDIATELY 55400000 SPACE 55500000 SPACE 55600000 DSECT11 DSECT , 55700000 ORG DSECT11 55800000 SPACE 55900000 CARD DS 0CL72 56000000 CARDID DS C' ESD' CARD IDENTIFIER 56100000 DS C' ' BLANK 56200000 DATALN DS H NUMBER OF BYTES OF ESD DATA 56300000 DS C' ' BLANK 56400000 FIRSTID DS H ESDID OF FIRST NON LD TYPE ITEM 56500000 DATAITEM DS CL16 56600000 SPACE 56700000 SPACE 56800000 ORG DSECT11 56900000 SPACE 57000000 LINE DS 0CL121 57100000 CTLCHAR DBV EJECT(0),SPACE1(1),SPACE2(2),SPACE3(3) CARRIAGE CONTROL 57200000 DECKID DS CL8 DECK IDENTIFIER 57300000 ORG LINE+48 57400000 TITLE DS C'EXTERNAL SYMBOL DICTIONARY' ESD TITLE 57500000 ORG LINE+112 57600000 PAGE DS C'PAGE' PAGE NUMBER DESIGNATOR 57700000 ORG LINE+118 57800000 PAGENO DS C'000' PAGE NUMBER 57900000 ORG LINE 58000000 HEADING DS C'3SYMBOL TYPE ID ADDR LENGTH LDID' 58100000 ORG LINE+L'LINE-L'JLVTMDT 58200000 LVTMDT DS CL(L'JLVTMDT) ASSEMBLER LEVEL, TIME, DATE 58300000 ORG LINE+1 58400000 ZSYMBOL DS C'XXXXXXXX' NAME, BLANK FOR PC OR BLANK CM 58500000 DS C' ' SPACES 58600000 ZTYPE DS C'XX' ESD ITEM TYPE 58700000 DS C' ' SPACES 58800000 ZID DS C'XXXX' ESD IDENTIFIER, IF NON LD TYPE 58900000 DS C' ' SPACE 59000000 ZADDR DS C'XXXXXX' ADDRESS, IF TYPE SD, PC, LD 59100000 DS C' ' SPACE 59200000 ZLENGTH DS C'XXXXXX' LENGTH, IF TYPE SD, PC, CM, SC 59300000 DS C' ' SPACE 59400000 ZLDID DS C'XXXX' ESD IDENTIFIER OF SD ENTRY 59500000 MEND 59600000