//FSUPP17F JOB (ACCT#),CLASS=F,MSGCLASS=0,NOTIFY=FSUPP17 //A EXEC PGM=IEV90,PARM=OBJECT,REGION=2000K //SYSIN DD * START DC C'<< Loadmodule Map >> _ KIMU _ &SYSDATE _ &SYSTIME *' DC C'< Loadmodule Configuration Report . ( MODMAP 0.0.1 ) >' PRINT NOGEN MODMAP CSECT SAVE (14,12),T,* BALR R03,0 USING *,R03,R04 BASE REG. R03 LA R04,2048(R03) 2'ND BASE REG LA R04,2048(R04) ST R13,SAVEAREA+4 SAVE A(OLD SAVEAREA) LR R12,R13 LA R13,SAVEAREA ST R13,8(R12) SAVE A(NEW SAVEAREA) * === Start Main Routine === XC TRN_CONT,TRN_CONT CSECT Identification Record * Processing Flag . XC WKTRANSL,WKTRANSL CSECT Identification Record * Translator Data Length . * --- CSECT Table Area Getmain --- L R01,D$CSTNUM CSECT Table Number STH R01,WKH LA R01,D$CSTL CSECT Table Length MH R01,WKH ST R01,GETM_L Save Getmain length GETMAIN RC,LV=(1) Getmain CSECT Table Area LTR R15,R15 If Error ? BNZ GETM_ERR goto Getmain Error #1 ST R01,GETM_A Store Getmain Address ST R15,WKF * --- Open File --- OPEN (PDSFD,,PDSF,,OUTDCB,(OUTPUT)) XC BSZ_FLG,BSZ_FLG Clear Block Size Flag * --- Dataset Information --- RDJFCB PDSF Get Dataset Information USING JFCBSECT,R02 LA R02,JFCB MVC O$DSNAME,DSN Copy Dataset Name MVC O$SERIAL,JFCBVOLS Copy Volume Serial Number LH R01,PDSF+X'3E' Copy Block Size PDSF+X'3E' CVD R01,PK_AREA MVC EDWORK,EDMASK ED EDWORK,PK_AREA MVC O$BLKSZ(5),EDWORK+11 DROP R02 Drop JFCB PUT OUTDCB,O$DSINT1 PUT OUTDCB,O$DSINT2 PUT OUTDCB,O$DSINFO PUT OUTDCB,BLANKL * --- Getmain Record Buffer Field --- LH R01,PDSF+X'3E' Load Block Size CL R01,=F'32740' BNH @BSZSKP OI BSZ_FLG,X'80' Flag Set * --- IEBCOPY BUG FIX --- LA R01,20(R01) If BLKSIZE > 32740 * --- IEBCOPY BUG FIX --- @BSZSKP EQU * ST R01,GETM_L2 GETMAIN RC,LV=(1) Getmain Read Boffer LTR R15,R15 If Error ? BNZ GETM_ER2 ST R01,GETM_A2 * --- Directory Process --- * R10:Member Routine Return Address * R12:Directory Pointer @D_READ EQU * READ DECB01,SF,PDSFD,DIR,'S' READ DIRECTORY CHECK DECB01 LH R12,DIR LOAD READ LENGTH LA R12,DIR(R12) ST R12,D_ENDP SAVE DIRECTORY END ADDR LA R12,DIR+2 MEMBER START POINT @D_LOP01 EQU * CL R12,D_ENDP IF DIRECTORY END ADDR BNL @D_READ CLI 0(R12),X'FF' IF MEMBER END NAME BE @BYE * MVI O$MEMBER,X'40' Member Area Clear * MVC O$MEMBER+1(132),O$MEMBER MVC O$MEM(8),0(R12) Copy Member Name MVC W_TTR(3),8(R12) Copy TTR CALL @OS#6HC,(W_TTR,O$MEMTTR,3) BAL R10,MEMBERS Branch Member Process IC R01,11(R12) LOAD 'C' N R01,=X'0000001F' USER DATA LENGTH SLL R01,1 * 2 LA R12,12(R12,R01) POINT MEXT MEMBER B @D_LOP01 * --- Member Process --- MEMBERS EQU * R10 <- Return Address XC R_FLG,R_FLG Read FLag Clear MVC GETM_P,GETM_A Clear CSECT Pointer POINT PDSF,W_TTR First Data Address @M_READ EQU * L R07,GETM_A2 R07 <- DataArea P TM BSZ_FLG,X'80' BO @M_READ2 @M_READ1 EQU * READ DECB11,SF,PDSF,(R07),'S' Data Area Read CHECK DECB11 L R01,DECB11+16 LH R01,14(R01) L R09,GETM_L2 SR R09,R01 R09 <- Read Length B @M_READX @M_READ2 EQU * Block Size = 32760 READ DECB12,SF,PDSF,(R07),30000 Data Area Read CHECK DECB12 L R01,DECB12+16 LH R01,14(R01) LH R09,DECB12+6 SR R09,R01 R09 <- Read Length @M_READX EQU * * TM R_FLG,X'80' If Already Control Record Read BO @M_NEXT * --- Check ID Column --- CLI 0(R07),X'20' CESD Record BE @M_CESD CLI 0(R07),X'80' CSECT Identification Record BE @M_CID goto Creation Line * @M_NEXT EQU * B @M_READ Goto Next Record @M_CID EQU * CSECT Identification Record TM 2(R07),X'80' BNO @M_CID2 OI R_FLG,X'80' Set Last Flag . @M_CID2 EQU * CSECT Identification Record XR R01,R01 IC R01,2(R07) N R01,=X'0000000F' CL R01,=XL4'00000008' User(System)-Supplied Data CL R01,=XL4'00000004' Translator-Supplies Data BE @M_TRANS goto Creation Line CL R01,=XL4'00000002' Linkage Editer Data BE @M_CREDT goto Creation Line CL R01,=XL4'00000001' HMASPZAP B @M_NEXT Goto Next Record * * ----------------------- * R07:Read Buffer Address * R09:Length of Read Record * R10:x * R11:DSECT Base * R12:x * --- CESD Record Process --- @M_CESD EQU * L R11,GETM_P Load CESD Table Pointer USING D$CSECT,R11 * MVC WKCESDFL,1(R07) Copy CESD Flag to Work Area * LH R08,6(R07) Load ESD Byte SRL R08,4 Num of ESD = ESD Byte / 16 LA R07,8(R07) Shift ESD Area @M_ESDLP EQU * MVC D$CESD(16),0(R07) Copy CESD Area XC D$TRNS,D$TRNS Clear Translator Area MVC D$CESDFL(1),WKCESDFL Copy CESD Flag Area * LA R07,16(R07) Shift Next CESD LA R11,D$CSTL(R11) BCT R08,@M_ESDLP ST R11,GETM_P B @M_NEXT Goto Next Record DROP R11 * ----------------------- * R07:Read Buffer Address * R09:Length of Read Record * R10:x * R11:DSECT Base * R12:x * --- CSECT Identification Data ( Translator-Supplied ) TRN_CONT DS XL1 * B'.... ....' * = : Translator Data Progress Flag * = : Translator Descroption Progress Flag * = : Translator Data Reserved . DS 0D @M_TRANS EQU * LA R09,0(R07,R09) LA R07,3(R07) Shift Trans Field . * TM TRN_CONT,X'C0' Translator Description Area BO @M_TRAN39 TM TRN_CONT,X'80' Translator Data Area BO @M_TRAN22 @M_TRAN1 EQU * LA R08,TRANSTBL XR R06,R06 * @M_TRAN2 EQU * CLR R07,R09 Record End ? BNL @M_TRANX goto Next Record OI TRN_CONT,X'80' Process Flag On LA R01,2(R07) CLR R01,R09 BNH @M_TRAN24 * MVC WKTRF(1),0(R07) OI TRN_CONT,X'20' Process Reserved Flag . B @M_TRANX goto Next Record @M_TRAN22 EQU * TM TRN_CONT,X'20' BO @M_TRAN23 MVC WKTRF(2),0(R07) LA R07,2(R07) B @M_TRAN25 @M_TRAN23 EQU * MVC WKTRF+1(1),0(R07) LA R07,1(R07) NI TRN_CONT,X'DF' Clear Process Reserved Flag B @M_TRAN25 @M_TRAN24 EQU * MVC WKTRF(2),0(R07) LA R07,2(R07) @M_TRAN25 EQU * LH R01,WKTRF Load CSECT Number N R01,=X'00007FFF' LA R02,D$CSTL STH R02,W_X02 BCTR R01,0 MH R01,W_X02 L R02,GETM_A LA R02,0(R01,R02) ST R02,0(R08) Store CSECT Table Address * LA R06,1(R06) LA R08,4(R08) TM WKTRF,X'80' BO @M_TRAN3 B @M_TRAN2 @M_TRAN3 EQU * OI TRN_CONT,X'40' End of ESD ID Field . * CLI 0(R07),X'01' BE @M_TRAN31 LA R01,16(R07) End of Translator Description B @M_TRAN32 @M_TRAN31 EQU * LA R01,31(R07) End of Translator Description @M_TRAN32 EQU * CLR R01,R09 If Not End of Record BNH @M_TRAN3909 goto Current Field Process * LR R01,R09 If Translator Data Incomplete SR R01,R07 XC WKTRANS,WKTRANS STC R01,*+5 MVC WKTRANS(0),0(R07) Copy First Translator Area STH R01,WKTRANSL B @M_TRANX * @M_TRAN39 EQU * LH R01,WKTRANSL If Old Translator Data is LTR R01,R01 Complete BZ @M_TRAN3909 goto @M_TRAN3909 * * If Old Translator Data is * Incomplete LA R02,WKTRANS(R01) Shift Latter Half CLI WKTRANS,X'01' BE @M_TRAN301 LA R01,16 End of Translator Description B @M_TRAN302 @M_TRAN301 EQU * LA R01,31 End of Translator Description @M_TRAN302 EQU * SH R01,WKTRANSL Remainder Length * STC R01,*+5 MVC 0(0,R02),0(R07) Copy First Translator Area LA R07,0(R07,R01) B @M_TRAN4 * @M_TRAN3909 EQU * All Translator Data is CLI 0(R07),X'01' Complete BE @M_TRAN391 MVC WKTRANS(16),0(R07) Copy Translator Description LA R07,16(R07) B @M_TRAN4 @M_TRAN391 EQU * MVC WKTRANS(31),0(R07) Copy Translator Description LA R07,31(R07) B @M_TRAN4 @M_TRAN4 EQU * LA R08,TRANSTBL USING D$CSECT,R01 @M_TRAN5 EQU * L R01,0(R08) MVC D$TRNS(16),WKTRANS LA R08,4(R08) BCT R06,@M_TRAN5 XC WKTRANSL,WKTRANSL Clear Work Area Length XC TRN_CONT,TRN_CONT Clear Continue Flag B @M_TRAN1 DROP R01 @M_TRANX EQU * B @M_NEXT Goto Next Record * ----------------------------------------------------------------- * ----------------------------------------------------------------- * ----------------------------------------------------------------- * @M_NEXTL EQU * B @M_READ Goto Next Line * --- Create Date --- @M_CREDT EQU * LA R08,LKEDTBLL SRDA R08,32 LA R01,L'LKEDTBL DR R08,R01 R09 <- Table Num LA R01,LKEDTBL @M_CRPS0 EQU * CLC 03(10,R07),0(R01) BE @M_CRPS1 LA R01,L'LKEDTBL(R01) BCT R09,@M_CRPS0 MVI O$MEMPRO,C' ' MVC O$MEMPRO+1(L'O$MEMPRO-1),O$MEMPRO MVC O$MEMPRO(10),03(R07) Copy LKED Product B @M_CRPSX @M_CRPS1 EQU * MVC O$MEMPRO(30),10(R01) Copy LKED Product B @M_CRPSX @M_CRPSX EQU * MVC W_LKEDDT(03),15(R07) LA R01,W_LKEDDT LA R02,O$MEMDT BAL R14,@DATECNV B @M_NEXTL * --- CSECT Create Date --- * @M_EOF EQU * PUT OUTDCB,BLANKL PUT OUTDCB,O$MEMBT1 PUT OUTDCB,O$MEMBT2 PUT OUTDCB,O$MEMBER PUT OUTDCB,BLANKL PUT OUTDCB,O$CSECTT L R07,GETM_A USING D$CSECT,R07 @M_ENDLP EQU * CL R07,GETM_P BNL @M_ENDSK MVI O$CSECT,C' ' MVC O$CSECT+1(132),O$CSECT * MVC O$SYMBOL(8),D$CESDSY * LA R08,PRODTBLL SRDA R08,32 LA R01,L'PRODTBL DR R08,R01 R09 <- Table Num LA R01,PRODTBL @M_CDS00 EQU * CLC D$TRNSPG,0(R01) BE @M_CDS01 LA R01,L'PRODTBL(R01) BCT R09,@M_CDS00 MVI O$PRODCT,C' ' MVC O$PRODCT+1(L'O$PRODCT-1),O$PRODCT MVC O$PRODCT(10),D$TRNSPG Copy LKED Product B @M_CDS0X @M_CDS01 EQU * MVC O$PRODCT(30),10(R01) Copy LKED Product B @M_CDS0X @M_CDS0X EQU * * CLI D$CESDTY,X'07' BE @M_E_NUL TM D$CESDTY,X'0A' BO @M_E_WX TM D$CESDTY,X'06' BO @M_E_PR TM D$CESDTY,X'05' BO @M_E_CM TM D$CESDTY,X'04' BO @M_E_PC TM D$CESDTY,X'03' BO @M_E_LR TM D$CESDTY,X'02' BO @M_E_ER @M_E_SD EQU * MVC O$TYPE(2),=CL2'SD' BAL R11,@M_ADR CLI D$CESDFL,X'80' BE @M_E_SD1 BAL R11,@M_SG B @M_E_SD2 @M_E_SD1 EQU * BAL R11,@M_ARR B @M_E_SD2 @M_E_SD2 EQU * BAL R11,@M_LEN B @M_E_X @M_E_NUL EQU * MVC O$TYPE(2),=CL2'NL' B @M_ENDW @M_E_WX EQU * MVC O$TYPE(2),=CL2'WX' B @M_ENDW @M_E_PR EQU * MVC O$TYPE(2),=CL2'PR' BAL R11,@M_ADR CLI D$CESDFL,X'80' BE @M_E_PR1 BAL R11,@M_SG B @M_E_PR2 @M_E_PR1 EQU * TM D$CESDSG,X'07' BNO @M_E_PR11 MVC O$ALIGN,=CL7'DOUBLEW' B @M_E_PR2 @M_E_PR11 EQU * TM D$CESDSG,X'03' BNO @M_E_PR12 MVC O$ALIGN,=CL7'FULLWD ' B @M_E_PR2 @M_E_PR12 EQU * TM D$CESDSG,X'01' BNO @M_E_PR13 MVC O$ALIGN,=CL7'HALFWD ' B @M_E_PR2 @M_E_PR13 EQU * MVC O$ALIGN,=CL7'BYTE ' B @M_E_PR2 @M_E_PR2 EQU * BAL R11,@M_LEN B @M_E_X @M_E_CM EQU * MVC O$TYPE(2),=CL2'CM' BAL R11,@M_ADR CLI D$CESDFL,X'80' BE @M_E_CM1 BAL R11,@M_SG B @M_E_CM2 @M_E_CM1 EQU * BAL R11,@M_ARR B @M_E_CM2 @M_E_CM2 EQU * BAL R11,@M_LEN B @M_E_X @M_E_PC EQU * MVC O$TYPE(2),=CL2'PC' CLI D$CESDFL,X'80' BE @M_E_PC1 BAL R11,@M_SG B @M_E_PC2 @M_E_PC1 EQU * BAL R11,@M_ARR B @M_E_PC2 @M_E_PC2 EQU * BAL R11,@M_LEN B @M_E_X @M_E_LR EQU * MVC O$TYPE(2),=CL2'LR' CLI D$CESDFL,X'80' BE @M_E_LR1 BAL R11,@M_SG B @M_E_LR2 @M_E_LR1 EQU * BAL R11,@M_ARR B @M_E_LR2 @M_E_LR2 EQU * BAL R11,@M_ID B @M_E_X @M_E_ER EQU * MVC O$TYPE(2),=CL2'ER' B @M_ENDW * --- Address --- @M_ADR EQU * MVC W_CADR(3),D$CESDAD CALL @OS#6HC,(W_CADR,O$CADR,3) BR R11 * --- Segments Number --- @M_SG EQU * MVC W_SG(1),D$CESDSG CALL @OS#6HC,(W_SG,O$SGNM,1) BR R11 * --- AMODE / RMODE / RSECT data --- @M_ARR EQU * TM D$CESDSG,X'04' BO @M_AMODE MVC O$AMODE(3),=CL3' 24' B @M_AMODX @M_AMODE EQU * MVC O$AMODE(3),=CL3'ANY' B @M_AMODX @M_AMODX EQU * MVI O$ARPAR,C'/' TM D$CESDSG,X'03' BO @M_RMOD1 TM D$CESDSG,X'02' BO @M_RMOD2 MVC O$RMODE(3),=CL3' 24' B @M_RMODX @M_RMOD1 EQU * MVC O$RMODE(3),=CL3'ANY' B @M_RMODX @M_RMOD2 EQU * MVC O$RMODE(3),=CL3' 31' B @M_RMODX @M_RMODX EQU * BR R11 * * --- Length --- @M_LEN EQU * MVC W_CLEN(3),D$CESDLN CALL @OS#6HC,(W_CLEN,O$CLEN,3) BR R11 * --- ID --- @M_ID EQU * MVC W_CLEN(2),D$CESDLN CALL @OS#6HC,(W_CLEN,O$CLEN,2) BR R11 * --- Linkage Editer Data --- @M_E_X EQU * MVC W_CSTDT(3),D$TRNSDT CLC W_CSTDT(3),=XL3'000000' BE @M_DTX LA R01,W_CSTDT LA R02,O$CSTDT BAL R14,@DATECNV MVC W_VER(2),D$TRNSVE CALL @OS#6HC,(W_VER,O$VVMM,2) @M_DTX EQU * @M_ENDW EQU * PUT OUTDCB,O$CSECT LA R07,D$CSTL(R07) B @M_ENDLP @M_ENDSK EQU * XC WKTRANSL,WKTRANSL Clear Work Area Length XC TRN_CONT,TRN_CONT Clear Continue Flag DROP R07 BR R10 * @BYE EQU * CLOSE (PDSFD,,PDSF,,OUTDCB) FREEMAIN RC,LV=GETM_L2,A=GETM_A2 FREEMAIN RC,LV=GETM_L,A=GETM_A L R13,SAVEAREA+4 RETURN (14,12),RC=0 GETM_ERR EQU * GETMAIN ERROR CLOSE (PDSFD,,PDSF,,OUTDCB) WTO '* ERR * CSECT TABLE AREA GETMAIN FAIL .' L R13,SAVEAREA+4 RETURN (14,12),RC=8 * GETM_ER2 EQU * GETMAIN ERROR CLOSE (PDSFD,,PDSF,,OUTDCB) FREEMAIN RC,LV=GETM_L,A=GETM_A WTO '* ERR * BLKSIZE BUFFER GETMAIN FAIL .' L R13,SAVEAREA+4 RETURN (14,12),RC=8 * IOERR_S EQU * SYNADAF ACSMETH=BPAM LA R01,91(R01) * B @IOERR MVC ERRMSG04+23(15),0(R01) LA R07,W_TTR LA R08,ERRMSG04+16 LA R09,3 * BAL R14,@CO_HEX CALL CONVERT HEX-CHAR PUT OUTDCB,ERRMSG04 B @IOERR @IOERR EQU * SYNADRLS CLOSE (PDSFD,,PDSF,,OUTDCB) FREEMAIN RC,LV=GETM_L2,A=GETM_A2 FREEMAIN RC,LV=GETM_L,A=GETM_A WTO '* ERR * I/O ERROR HAPPEND .' L R13,SAVEAREA+4 RETURN (14,12),RC=8 * @DATECNV EQU * STM R00,R15,@DATEREG LR R06,R01 Binary Date X'yydddF' LR R07,R02 Character Date 'YY.MM.DD' XR R01,R01 XC WK_PKA,WK_PKA MVC WK_PKA+5(3),0(R06) * NI WK_PKA+7,X'FC' CVB R01,WK_PKA LR R06,R01 LR R10,R01 SRDA R10,32 D R10,=F'1000' LR R06,R10 Day * R11 CL R11,=F'50' If Year is Less Than 50 BL @DC_SKIP1 LA R01,1900(R11) B @DC_SKIP2 @DC_SKIP1 EQU * LA R01,2000(R11) B @DC_SKIP2 @DC_SKIP2 EQU * STH R01,WK_YEAR LR R10,R01 SRDA R10,32 D R10,=F'4' LTR R11,R11 BNZ @DC_SKIP3 LR R10,R01 SRDA R10,32 D R10,=F'100' LTR R11,R11 BZ @DC_SKIP3 LR R10,R01 SRDA R10,32 D R10,=F'400' LTR R11,R11 BNZ @DC_SKIP3 LA R01,WK_MON1 B @DC_SKIP4 @DC_SKIP3 EQU * LA R01,WK_MON2 B @DC_SKIP4 @DC_SKIP4 EQU * LA R02,12 @DC_SKIP5 EQU * XR R15,R15 IC R15,0(R01) CLR R06,R15 BNH @DC_SKIP6 SR R06,R15 LA R01,1(R01) BCT R02,@DC_SKIP5 @DC_SKIP6 EQU * LA R01,13 SR R01,R02 STH R01,WK_MON STH R06,WK_DAY * LH R01,WK_YEAR CVD R01,PK_AREA MVC EDWORK,EDMASKZ ED EDWORK,PK_AREA MVC 0(4,R07),EDWORK+12 MVI 4(R07),C'/' * LH R01,WK_MON CVD R01,PK_AREA MVC EDWORK,EDMASKZ ED EDWORK,PK_AREA MVC 5(2,R07),EDWORK+14 * MVI 7(R07),C'/' LH R01,WK_DAY CVD R01,PK_AREA MVC EDWORK,EDMASKZ ED EDWORK,PK_AREA MVC 8(2,R07),EDWORK+14 LM R00,R15,@DATEREG BR R14 * DS 0D @DATEREG DS 18F WK_PKA DS XL8 WK_YEAR DS H WK_MON DS H WK_DAY DS H * 1 2 3 4 5 6 7 * 8 9 10 11 12 WK_MON1 DC FL1'31',FL1'28',FL1'31',FL1'30',FL1'31',FL1'30',FL1'31',* FL1'31',FL1'30',FL1'31',FL1'30',FL1'31' * 1 2 3 4 5 6 7 * 8 9 10 11 12 WK_MON2 DC FL1'31',FL1'29',FL1'31',FL1'30',FL1'31',FL1'30',FL1'31',* FL1'31',FL1'30',FL1'31',FL1'30',FL1'31' * PDSFD DCB DSORG=PS,MACRF=(RP),DDNAME=INDD,NCP=1,BLKSIZE=256, * SYNAD=IOERR_S,EODAD=@BYE,RECFM=F PDSF DCB DSORG=PO,MACRF=(R),DDNAME=INDD,NCP=1,EXLST=EXLST, * SYNAD=IOERR_S,EODAD=@M_EOF,RECFM=U EXLST DC X'87',AL3(JFCB) OUTDCB DCB DSORG=PS,MACRF=(PM),DDNAME=OUTDD,RECFM=FA,LRECL=133, * BLKSIZE=133 DSCBFMT1 CAMLST SEARCH,JFCB,VOLSER,DSCB DS 0F JFCB DS 0CL176 JOB FILE CONTROL BLOCK DSN DS CL44 DATASET NAME DSCB DC CL140' ' DATASET CONTROL BLOCK VOLSER DS CL6 VOLUME SELIAL * DS 0F SAVEAREA DS 18F SAVEAREA REGS DS 18F WORK SAVEAREA WKCESDFL DS XL1 DS 0F WKF DS F WKH DS H DS 0F WKTRANS DS CL31 WKTRANSL DS H WKTRF DS XL2 WKDATE DS XL3 @DEBUGL DC CL133' ' BLANKL DC CL133' ' DS 0D * DS 0F ERRMSG04 DC CL133'------------------------------' * 0....+....1....+....2....+....3....+....4....+... ************************************************************** DS 0F R_FLG DS BL1 TTR Save Area DS 0F BSZ_FLG DS BL1 TTR Save Area DS 0F PATT DC XL16'40202020202020202020202020202020' EDAREA DS XL16 DS 0F PK_AREA DS PL8 DS 0F UPK_AREA DS XL8 DS 0F W_TTR DS XL4 TTR Save Area DS 0F W_LKEDDT DS XL3 DS 0F W_X02 DS XL2 DS 0F W_CADR DS XL3 DS 0F W_CLEN DS XL3 DS 0F W_CSTDT DC XL3'98123F' DS 0F W_SG DS XL1 DS 0F W_VER DS XL2 DS 0F DIR DS CL256 Directory Save Area DS 0F D_ENDP DS F Directory End Point GETM_A DS F CSECT Table Adr GETM_L DS F CSECT Table Len GETM_P DS F CSECT Table Pos GETM_A2 DS F Block Read Adr GETM_L2 DS F Block Read Len DS 0D * 1 * 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 EDMASK DC XL16'40202020202020202020202020202120' EDMASKZ DC XL16'40212020202020202020202020202020' EDWORK DS XL16 PRODTBL DS 0XL40 * 0....+....1 0....+....1....+....2....+....3 DC CL10'360SAS037 ',CL30'S/360 OS ASSEMBLER (F) ' DC CL10'5734AS100 ',CL30'OS ASSEMBLER H ' DC CL10'5741SC103 ',CL30'OS/VS ASSEMBLER (XF) ' DC CL10'566896201 ',CL30'ASSEMBLER H V2 ' DC CL10'569623400 ',CL30'HIGH-LEVEL ASSEMBLER ' DC CL10'40CB1 ',CL30'OS/VS COBOL R2M2 (VSR2) ' DC CL10'5740CB103 ',CL30'OS/VS COBOL R2M3 R2M4 (VSR1) ' DC CL10'566895801 ',CL30'VS COBOL II ' DC CL10'566895807 ',CL30'COBOL/370 , COBOL for MVS , VM' DC CL10'5668-806 ',CL30'VS FORTRAN V2 (COMP/LIB/DEBUG)' DC CL10'5796-PKR ',CL30'Ext. Exponent Range for FORT ' DC CL10'5734-PL1 ',CL30'OS PL/I OPTIMIZING COMPILER V1' DC CL10'5668-910 ',CL30'OS PL/I V2 (COMP/LIB) ' DC CL10'5688040 ',CL30'C/370 COMPILER V1 ' DC CL10'5688187 ',CL30'C/370 COMPILER V2 ' DC CL10'5688216 ',CL30'SAA AD/Cycle C/370 ' DC CL10'5645001 ',CL30'C/C++ OS/390 R2 ' DC CL10'5647A01 ',CL30'C/C++ OS/390 R4 ' DC CL10'5688-899 ',CL30'APL2 VERSION 1 ' DC CL10'5688-228 ',CL30'APL2 VERSION 2 ' DC CL10'566876701 ',CL30'VS PASCAL ' DC CL10'569501301 ',CL30'REXX/370 ' DC CL10'5744AN101 ',CL30'ACF/NCP ' DC CL10'566893801 ',CL30'ACF/NCP ' DC CL10'COBTRAN ',CL30'IGYCSCAN(IGYSMETA) ' DC CL10'516896201 ',CL30'ASSEMBLER H V2 (bizarre) ' DC CL10'ASMG21FEB ',CL30'ASSEMBLER G (U of Waterloo) ' DC CL10'CA-PLNK 0 ',CL30'CA PL/S CLONE ? ' DC CL10'GREXX-00 ',CL30'LEGENT REXX ' DC CL10'LATTICE_C ',CL30'LATTICE C ' DC CL10'RXTCOMP ',CL30'REXXTOOLS ' DC CL10'SAS/C ',CL30'SAS/C ' DC CL10'SAS/C/ ',CL30'SAS/C ' DC CL10'SDS080888 ',CL30'SAS/C ' DC CL10'BLD121988 ',CL30'SAS/C ' DC CL10'TMCOMPIL ',CL30'XPEDITER ' DC CL10'52ASM31686',CL30'Russian Assembler ' * DC CL10' ',CL30' ' PRODTBLX EQU * PRODTBLL EQU PRODTBLX-PRODTBL * LKEDTBL DS 0XL40 * 0....+....1 0....+....1....+....2....+....3 DC CL10'360SED521 ',CL30'S/360 OS LINKAGE EDITOR (F) ' DC CL10'5752SC104 ',CL30'OS/VS LINKAGE EDITOR ' DC CL10'566528408 ',CL30'DFP/XA LINKAGE EDITOR ' DC CL10'566529508 ',CL30'DFP/370 LINKAGE EDITOR ' DC CL10'5695DF108 ',CL30'DFSMS/MVS BINDER ' * DC CL10' ',CL30' ' LKEDTBLX EQU * LKEDTBLL EQU *-LKEDTBL DS 0D * --- Dataset Information --- O$DSINT1 DS 0CL133 DC CL02' ' T$DSNAME DC CL44'DATASET NAME' DC CL01' ' T$SERIAL DC CL06'SERIAL' DC CL01' ' T$BLKSZ DC CL05'BLKSZ' DC CL01' ' DC CL133' ' O$DSINT2 DS 0CL133 DC CL02' ' DC CL44'-------------------------------------------' DC CL01' ' DC CL06'------' DC CL01' ' DC CL05'-----' DC CL01' ' DC CL133' ' * --- Dataset Information --- O$DSINFO DS 0CL133 DC CL02' ' O$DSNAME DC CL44' ' DC CL01' ' O$SERIAL DC CL06' ' DC CL01' ' O$BLKSZ DC CL05' ' DC CL01' ' DC CL133' ' * ------------------- O$MEMBER DS 0CL133 DC CL02' ' O$MEM DS CL08 DC CL01' ' O$MEMTTR DS CL06'T T R ' DC CL01' ' O$MEMPRO DS CL30' ' DC CL01' ' O$MEMDT DS CL10'YYYY.MM.DD' DC CL133' ' DS 0D O$MEMBT1 DS 0CL133 DC CL02' ' DC CL08' MEMBER' DC CL01' ' DC CL06'T T R ' DC CL01' ' DC CL30'COMPILED PRODUCT' DC CL01' ' DC CL10' CREATED ' DC CL133' ' DS 0D O$MEMBT2 DS 0CL133 DC CL02' ' DC CL08'--------' DC CL01' ' DC CL06'------' DC CL01' ' DC CL30'------------------------------' DC CL01' ' DC CL10'----------' DC CL133' ' DS 0D * ------------------- O$CSECTT DS 0CL133 DC CL03' ' DC CL08'SYMBOL' DC CL01'T' DC CL02'YP' DC CL01' ' DC CL30'PRODUCT' DC CL01' ' DC CL04'VVMM' DC CL01' ' DC CL06'ADDR.' DC CL01' ' DC CL06'LENG.' DC CL01' ' DC CL07'A/R,SG' DC CL01' ' DC CL10'COMP DATE' DC CL133' ' * O$CSECT DS 0CL133 DC CL03' ' O$SYMBOL DS CL08 DC CL01' ' O$TYPE DS CL02 DC CL01' ' O$PRODCT DS CL30 DC CL01' ' O$VVMM DS CL04 DC CL01' ' O$CADR DS CL06 DC CL01' ' O$CLEN DS CL06 DC CL01' ' O$SGNM DS 0CL02 O$ALIGN DS 0CL07 O$AMODE DS CL03 O$ARPAR DC CL01' ' O$RMODE DS CL03 DC CL01' ' O$CSTDT DS CL10'YYYY.MM.DD' DC CL133' ' D$CSTNUM DC F'32767' DS 0F LTORG TRANSTBL DS 1024F Trans Table D$CSECT DSECT D$CESDFL DS XL1 CESD Flag Byte * X'00' : Segment Number * X'80' : AMODE/RMODE/RSECT D$CESD DS 0CL16 CESD Area D$CESDSY DS CL8 CESD Symbol D$CESDTY DS XL1 CESD Type ?0 : SD * ?2 : ER * ?3 : LR * ?4 : PC * ?5 : CM * ?6 : PR * 07 : Null * ?A : WX D$CESDAD DS XL3 CESD Address D$CESDSG DS XL1 CESD Segment Number * AMODE/RMODE/RSECT * ???? xraa * .... =... : 1 RESCT Read * .... .=.. : 1 RMODE Any * 0 24 * .... ..== : 00 AMODE 24 * 01 24 * 10 31 * 11 Any * D$CESDLN DS XL3 CESD Length/ID * Length : SD,PC,CM,PR * ID : LR * Zero : WX,Null,ER D$TRNS DS 0XL16 Translator Indicator D$TRNSID DS XL1 Translator Indicator D$TRNSPG DS CL10 Program Name D$TRNSVE DS CL2 Version and Modification Level D$TRNSDT DS 0CL3 Date D$TRNSDY DS CL1 Date D$TRNSDD DS CL2 Date *$TRNSPR DS CL15 if Indicator is X'01' * D$CSTL EQU *-D$CSECT PRINT GEN JFCBSECT DSECT IEFJFCBN LIST=YES DSCBSECT DSECT IECSDSL1 (1) DCBD DSORG=PO R00 EQU 00 R01 EQU 01 R02 EQU 02 R03 EQU 03 R04 EQU 04 R05 EQU 05 R06 EQU 06 R07 EQU 07 R08 EQU 08 R09 EQU 09 R10 EQU 10 R11 EQU 11 R12 EQU 12 R13 EQU 13 R14 EQU 14 R15 EQU 15 END MODMAP /* //SYSLIB DD DSN=SYS1.MACLIB,DISP=SHR // DD DSN=SYS1.AMODGEN,DISP=SHR //* DD DSN=SYS1.MODGEN,DISP=SHR //SYSUT1 DD UNIT=(SYSDA,SEP=SYSLIB),SPACE=(CYL,(10,5)),DSN=&SYSUT1 //SYSPUNCH DD DUMMY //*YSPUNCH DD SYSOUT=*,DCB=(BLKSIZE=800),SPACE=(CYL,(5,5,0)) //SYSPRINT DD SYSOUT=*,DCB=(BLKSIZE=3509), // UNIT=(,SEP=(SYSUT1,SYSPUNCH)) //SYSLIN DD DISP=(,PASS),UNIT=SYSDA,SPACE=(CYL,(5,5,0)), // DCB=(BLKSIZE=400),DSN=&&LOADSET //L EXEC PGM=IEWL,PARM='MAP,LET,LIST', // REGION=1M,COND=(8,LT,A) //SYSLIB DD DSN=DDMS.V1R2M1.OBJLIB,DISP=SHR //SYSLIN DD DSN=&&LOADSET,DISP=(OLD,DELETE) // DD DDNAME=SYSIN //*YSLMOD DD DISP=SHR,UNIT=SYSDA, //* DSN=FSUPP17.TEST.LOADLIB(@8011) //SYSLMOD DD DISP=(,PASS),UNIT=SYSDA, // SPACE=(CYL,(2,1,2)),DSN=&GOSET(GO) //SYSUT1 DD UNIT=SYSDA,SPACE=(CYL,(3,2)),DSN=&SYSUT1 //SYSPRINT DD SYSOUT=*,DCB=(RECFM=FB,BLKSIZE=3509) //SYSIN DD DUMMY //G EXEC PGM=*.L.SYSLMOD,COND=((9,LT,A),(9,LT,L)), // REGION=8M //STEPCAT DD DSN=TSOCAT,DISP=SHR //*NDD DD DSN=SYS1.LPALIB,DISP=SHR //INDD DD DSN=SYS1.LINKLIB,DISP=SHR //*NDD DD DSN=DDMSL.V1R2M1.LOADLIB,DISP=SHR //OUTDD DD SYSOUT=* //