DCL SPCPTR .P1 PARM; DCL DD SAVE-FILE CHAR(10) BAS(.P1); DCL SPCPTR .P2 PARM; DCL DD SAVE-LIBRARY CHAR(10) BAS(.P2); DCL SPCPTR .P3 PARM; DCL DD PROGRAM-NAME CHAR(10) BAS(.P3); DCL SPCPTR .P4 PARM; DCL DD PROGRAM-LIBRARY CHAR(10) BAS(.P4); DCL SPCPTR .P5 PARM; DCL DD PROGRAM-TYPE CHAR(10) BAS(.P5); DCL SPCPTR .P6 PARM; DCL DD MODULE-NAME CHAR(10) BAS(.P6); DCL SPCPTR .P7 PARM; DCL DD MODULE-LIBRARY CHAR(10) BAS(.P7); DCL SPCPTR .P8 PARM; DCL DD MODULE-NEW-LIBRARY CHAR(10) BAS(.P8); DCL SPCPTR .P9 PARM; DCL DD MODULE-NEW-SRC-FILE CHAR(10) BAS(.P9); DCL SPCPTR .PA PARM; DCL DD MODULE-NEW-SRC-LIBRARY CHAR(10) BAS(.PA); DCL SPCPTR .PB PARM; DCL DD RETURN-VALUE CHAR(10) BAS(.PB); DCL OL PARMS(.P1, .P2, .P3, .P4, .P5, .P6, .P7, .P8, .P9, .PA, .PB) PARM EXT MIN(11); DCL DD HEX-TYPE CHAR(2); DCL SYSPTR .SEPT(6440) BAS(@SEPT); DCL DD PCO CHAR(256) BASPCO; DCL SPCPTR @SEPT DEF(PCO) POS( 1); DCL SYSPTR .QTEMP DEF(PCO) POS( 65); DCL SYSPTR .USRPRF DEF(PCO) POS(113); DCL SPCPTR .THE-STACK; DCL DD THE-STACK CHAR(8) AUTO BDRY(16); DCL DD STK-BYTES-PRV BIN(4) DEF(THE-STACK) POS( 1); DCL DD STK-BYTES-AVL BIN(4) DEF(THE-STACK) POS( 5); DCL DD STK-NBR-OF-ENTRIES BIN(4) DEF(THE-STACK) POS( 9); DCL DD STK-ENTRY(1) CHAR(128) DEF(THE-STACK) POS(17); DCL DD STACK-ENTRY CHAR(128) BDRY(16); DCL SYSPTR .STACK-ENTRY-PGM DEF(STACK-ENTRY) POS(33); DCL SPCPTR .SYSOBJ INIT(SYSOBJ); DCL DD SYSOBJ CHAR(42); /* PARTIAL */ DCL DD SOB-BYTES-PROVIDED BIN(4) DEF(SYSOBJ) POS( 1) INIT(42); DCL DD SOB-CONTEXT CHAR(32) DEF(SYSOBJ) POS(11); DCL SYSPTR .OWN-CONTEXT; DCL DD RESOLVE CHAR(34); DCL DD RESOLVE-TYPE CHAR( 2) DEF(RESOLVE) POS( 1); DCL DD RESOLVE-NAME CHAR(30) DEF(RESOLVE) POS( 3); DCL DD RESOLVE-AUTH CHAR( 2) DEF(RESOLVE) POS(33) INIT(X'0000'); DCL SYSPTR .SAV-CONTEXT; DCL DD SAVE-POINTER CHAR(16) BDRY(16); DCL SYSPTR .SAV-FILE DEF(SAVE-POINTER) POS(1); DCL SPCPTR .MAKPTR INIT(MAKPTR); DCL DD MAKPTR CHAR(16) BDRY(16); DCL SPCPTR .SPCPTR DEF(MAKPTR) POS(1); DCL SYSPTR .SYSPTR DEF(MAKPTR) POS(1); DCL DD PTR-ADDRESS CHAR(8) DEF(MAKPTR) POS(9); DCL OL MKSMP (.MAKPTR) ARG; DCL SYSPTR .MKSMP; DCL DD STORAGE CHAR(16000000) BAS(.SPCPTR); DCL SPCPTR .DESCR; DCL DD DESCR-SIZE BIN(4); DCL DD DUMP-DESCRIPTOR CHAR(4096) BAS(.DESCR); DCL DD FFFFFFFF CHAR(4) DEF(DUMP-DESCRIPTOR) POS( 1); DCL DD DUMP-ID CHAR(10) DEF(DUMP-DESCRIPTOR) POS( 5); DCL DD DESCR-UNITS BIN(4) DEF(DUMP-DESCRIPTOR) POS(205); DCL DD CUR-ENTRY BIN(4); DCL DD CATALOG CHAR(16000000) BAS(.SPCPTR); DCL DD DUMP-TYPE CHAR(2) DEF(CATALOG) POS( 35); DCL DD DUMP-CONTEXT CHAR(30) DEF(CATALOG) POS(259); DCL DD DUMP-CTX-TYPE CHAR(2) DEF(CATALOG) POS(289); DCL DD DUMP-SERIAL-NBR CHAR(7) DEF(CATALOG) POS(310); DCL DD DUMP-NBR-ENTRIES BIN(4) DEF(CATALOG) POS(329); DCL DD DUMP-OBJ-NAME(512) CHAR(30) DEF(CATALOG) POS(337) AEO(151); DCL DD DUMP-OBJ-TYPE(512) CHAR(2) DEF(CATALOG) POS(367) AEO(151); DCL DD DUMP-OBJ-USER(512) CHAR(30) DEF(CATALOG) POS(369) AEO(151); DCL DD SECOND-PAGE CHAR(4096) BAS(.SPCPTR); DCL DD TIMESTAMP CHAR(8) DEF(SECOND-PAGE) POS( 1); DCL DD MODEL-INFO CHAR(32) DEF(SECOND-PAGE) POS(17); DCL SPCPTR .PGM; DCL DD OFFSET BIN(4); DCL DD EPA-HDR CHAR(224) BAS(.SPCPTR); DCL DD PROGRAM-EPA-NAME CHAR(30) DEF(EPA-HDR) POS( 5); DCL DD PROGRAM-HDR-ADDR CHAR(8) DEF(EPA-HDR) POS(81); DCL DD PGM-HDR CHAR(256) BAS(.SPCPTR); DCL DD MODULE-TBL-ADDR CHAR(8) DEF(PGM-HDR) POS(225); DCL SPCPTR .MOD-TBL; DCL DD THE-MODULE-NBR BIN(4); DCL DD CUR-MODULE-NBR BIN(4); DCL DD MOD-TBL CHAR(16000000) BAS(.MOD-TBL); DCL DD NBR-OF-MODULES BIN(4) DEF(MOD-TBL) POS( 5); DCL DD MOD-HDR-OFFSET(4096) CHAR(3) DEF(MOD-TBL) POS(22) AEO(48); DCL SPCPTR .MOD-HDR; DCL DD MOD-HDR CHAR(256) BAS(.MOD-HDR); DCL DD MOD-VERSION-ADDRESS CHAR(8) DEF(MOD-HDR) POS(33); DCL DD MOD-VER CHAR(128) BAS(.SPCPTR); DCL DD MOD-NAME CHAR(30) DEF(MOD-VER) POS(21); DCL DD MOD-CONTEXT CHAR(30) DEF(MOD-VER) POS(51); DCL DD PGM-DESCRIPTOR CHAR(16000000) BAS(.SPCPTR); DCL DD BNAS-SIGNATURE CHAR(8) DEF(PGM-DESCRIPTOR) POS( 1); DCL DD BNAS-MODULES-OFFSET BIN(4) DEF(PGM-DESCRIPTOR) POS(13); DCL DD BNAS-MODULE(4096) CHAR(272) DEF(PGM-DESCRIPTOR) POS(81); DCL SPCPTR .MODULE; DCL DD MODULE CHAR(272) BAS(.MODULE); DCL DD BNAS-NAME CHAR(10) DEF(MODULE) POS( 1); DCL DD BNAS-LIBRARY CHAR(10) DEF(MODULE) POS( 11); DCL DD BNAS-BACKSLASH CHAR( 1) DEF(MODULE) POS( 21); DCL DD BNAS-ATTRIBUTE CHAR(10) DEF(MODULE) POS( 22); DCL DD * CHAR( 1) DEF(MODULE) POS( 32); DCL DD * CHAR(10) DEF(MODULE) POS( 33); DCL DD * CHAR( 1) DEF(MODULE) POS( 43); DCL DD BNAS-SORT-SEQUENCE CHAR(10) DEF(MODULE) POS( 44); DCL DD BNAS-SORT-LIBRARY CHAR(10) DEF(MODULE) POS( 54); DCL DD BNAS-LANGUAGE-ID CHAR(10) DEF(MODULE) POS( 64); DCL DD * CHAR( 7) DEF(MODULE) POS( 74); DCL DD BNAS-MODULE-NUMBER BIN( 2) DEF(MODULE) POS( 81); DCL DD * CHAR( 1) DEF(MODULE) POS( 83); DCL DD BNAS-STATE? CHAR( 1) DEF(MODULE) POS( 84); DCL DD * CHAR(10) DEF(MODULE) POS( 85); DCL DD * CHAR(20) DEF(MODULE) POS( 95); DCL DD * CHAR(10) DEF(MODULE) POS(115); DCL DD * CHAR(10) DEF(MODULE) POS(125); DCL DD BNAS-COMPILER CHAR( 7) DEF(MODULE) POS(135); DCL DD BNAS-VMR-1 CHAR( 6) DEF(MODULE) POS(142); DCL DD BNAS-VMR-2 CHAR( 6) DEF(MODULE) POS(158); DCL DD BNAS-COMPILED CHAR(13) DEF(MODULE) POS(154); DCL DD BNAS-SOURCE-CHANGED CHAR(13) DEF(MODULE) POS(167); DCL DD BNAS-SOURCE-FILE CHAR(10) DEF(MODULE) POS(180); DCL DD BNAS-SOURCE-MEMBER CHAR(10) DEF(MODULE) POS(190); DCL DD BNAS-SOURCE-LIBRARY CHAR(10) DEF(MODULE) POS(200); DCL DD * CHAR(15) DEF(MODULE) POS(210); DCL DD HLL-DESCRIPTOR CHAR(16000000) BAS(.SPCPTR); DCL DD HLL-SIGNATURE CHAR(16) DEF(HLL-DESCRIPTOR) POS(33); DCL DD FILE-DESCRIPTOR CHAR(16000000) BAS(.SPCPTR); DCL DD FILE-SIGNATURE CHAR(16) DEF(FILE-DESCRIPTOR) POS( 1); DCL DD * CHAR(32) DEF(FILE-DESCRIPTOR) POS(17); DCL DD FILE-SOURCE-FILE CHAR(10) DEF(FILE-DESCRIPTOR) POS(49); DCL DD FILE-SOURCE-LIBRARY CHAR(10) DEF(FILE-DESCRIPTOR) POS(59); DCL DD FILE-SOURCE-MEMBER CHAR(10) DEF(FILE-DESCRIPTOR) POS(69); DCL DD FILE-SIGNATURE2 CHAR(16) DEF(FILE-DESCRIPTOR) POS(81); /*******************************************************************/ ENTRY * (PARMS) EXT; CHECK-PROGRAM-TYPE: CPYBLAP RETURN-VALUE, "PGMWT", " "; CPYBLA HEX-TYPE, X'0000'; CMPBLAP(B) PROGRAM-TYPE, "*PGM", " "/NEQ(=+2); CPYBLA HEX-TYPE, X'0201';: CMPBLAP(B) PROGRAM-TYPE, "*SRVPGM", " "/NEQ(=+2); CPYBLA HEX-TYPE, X'0203';: CMPBLA(B) HEX-TYPE, X'0000'/EQ(DONE); GET-OWN-INVOCATION-STACK: CPYBLAP RETURN-VALUE, "STACK", " "; CPYNV STK-BYTES-PRV, 8; /* MINIMUM */ SETSPP .THE-STACK, THE-STACK; MATINVS .THE-STACK, *; MODASA .THE-STACK, STK-BYTES-AVL; CPYNV STK-BYTES-PRV, STK-BYTES-AVL; SETSPP .THE-STACK, THE-STACK; MATINVS .THE-STACK, *; OVRPGATR 1, 2; /* DO NOT CONSTRAIN ARRAY REFS */ CPYBWP STACK-ENTRY, STK-ENTRY(STK-NBR-OF-ENTRIES); OVRPGATR 1, 4; /* RESUME CONSTRAIN ARRAY REFS */ GET-OWN-OBJECT-INFO: CPYBLAP RETURN-VALUE, "OWNCTX", " "; MATSOBJ .SYSOBJ, .STACK-ENTRY-PGM; CMPBLA(B) SOB-CONTEXT, X'04C1D8E3C5D4D740' /* QTEMP */ /NEQ(RESOLVE-TO-CONTEXT); USE-QTEMP-FROM-PCO: CPYBWP .OWN-CONTEXT, .QTEMP; B RESOLVE-TO-PROGRAMS; RESOLVE-TO-CONTEXT: CPYBLA RESOLVE, SOB-CONTEXT; RSLVSP .OWN-CONTEXT, RESOLVE, *, *; RESOLVE-TO-PROGRAMS: CPYBLAP RETURN-VALUE, "OWNPGM", " "; CPYBLA RESOLVE-TYPE, X'0201'; CPYBLAP RESOLVE-NAME, "MKSMP", " "; RSLVSP .MKSMP, RESOLVE, .OWN-CONTEXT, *; RESOLVE-TO-SAVE-LIBRARY: CPYBLAP RETURN-VALUE, "SAVFLNF", " "; CMPBLA(B) SAVE-LIBRARY, "*"/EQ(RESOLVE-TO-SAVE-FILE); CMPBLAP(B) SAVE-LIBRARY, "QTEMP", " "/NEQ(=+3); CPYBWP .SAV-CONTEXT, .QTEMP; B RESOLVE-TO-SAVE-FILE;: CPYBLA RESOLVE-TYPE, X'0401'; CPYBLAP RESOLVE-NAME, SAVE-LIBRARY, " "; RSLVSP .SAV-CONTEXT, RESOLVE, *, *; RESOLVE-TO-SAVE-FILE: CPYBLAP RETURN-VALUE, "SAVFNF", " "; CPYBLA RESOLVE-TYPE, X'1901'; CPYBLAP RESOLVE-NAME, SAVE-FILE, " "; CMPBLA(B) SAVE-LIBRARY, "*"/ EQ(=+2); RSLVSP .SAV-FILE, RESOLVE, .SAV-CONTEXT, *;: CMPBLA(B) SAVE-LIBRARY, "*"/NEQ(=+2); RSLVSP .SAV-FILE, RESOLVE, *, *;: GET-ASSOCIATED-SPACE: CPYBWP .SYSPTR, .SAV-FILE; CALLX .MKSMP, MKSMP, *; SETSPPFP .SPCPTR, .SAV-FILE; GET-DUMP-SPACE: ADDSPP .SPCPTR, .SPCPTR, H'0280'; /* DUMP SPACE */ CPYBLAP PTR-ADDRESS, STORAGE(9:5), X'00'; CALLX .MKSMP, MKSMP, *; GET-DATA-ADDRESS: ADDSPP .SPCPTR, .SPCPTR, H'1000'; CPYBLA PTR-ADDRESS, STORAGE(1:8); CALLX .MKSMP, MKSMP, *; POINT-TO-SECOND-PAGE: ADDSPP .SPCPTR, .SPCPTR, H'1000'; POINT-TO-DUMP-DESCRIPTOR: ADDSPP .DESCR, .SPCPTR, H'1000'; CPYBLAP RETURN-VALUE, "SAVFERR", " "; CMPBLA(B) DUMP-ID, "QSRDSSPC.1"/NEQ(DONE); MULT DESCR-SIZE, DESCR-UNITS, 512; POINT-TO-DUMP-CATALOG: ADDSPP .SPCPTR, .DESCR, H'1000'; CMPBLA(B) DUMP-TYPE, X'19DB'/NEQ(DONE); CPYBLAP RETURN-VALUE, "PGMLNF", " "; CMPBLA(B) DUMP-CONTEXT, PROGRAM-LIBRARY/NEQ(DONE); CPYBLAP RETURN-VALUE, "PGMNF", " "; CPYNV CUR-ENTRY, 0; FIND-PGM: ADDN(S) CUR-ENTRY, 1; CMPNV(B) CUR-ENTRY, DUMP-NBR-ENTRIES/HI(DONE); CMPBLA(B) DUMP-OBJ-NAME(CUR-ENTRY), PROGRAM-NAME/NEQ(FIND-PGM); CHECK-TYPE: CMPBLA(B) DUMP-OBJ-TYPE(CUR-ENTRY), HEX-TYPE /NEQ(FIND-PGM); FIND-PROGRAM-DESCRIPTOR: MULT DESCR-SIZE, DESCR-UNITS, 512; ADDSPP .DESCR, .DESCR, DESCR-SIZE; SUBN(SB) CUR-ENTRY, 1/POS(FIND-PROGRAM-DESCRIPTOR); POINT-TO-PROGRAM-OBJECT: MULT DESCR-SIZE, DESCR-UNITS, 512; CPYNV OFFSET, 0; FIND-EPA-HDR: ADDN(S) OFFSET, H'1000'; ADDSPP .PGM, .DESCR, OFFSET; POINT-TO-EPA-HEADER: ADDSPP .SPCPTR, .PGM, 32; CMPBLAP(B) PROGRAM-EPA-NAME, PROGRAM-NAME, " "/NEQ(FIND-EPA-HDR); POINT-TO-PROGRAM-HEADER: CPYBRAP OFFSET, PROGRAM-HDR-ADDR(6:3), X'00'; ADDSPP .SPCPTR, .PGM, OFFSET; POINT-TO-MODULE-TABLE: CPYBRAP OFFSET, MODULE-TBL-ADDR(6:3), X'00'; ADDSPP .MOD-TBL, .PGM, OFFSET; CPYBLAP RETURN-VALUE, "MODNF", " "; CPYNV CUR-MODULE-NBR, 0; LOOK-AT-MODULES: ADDN(S) CUR-MODULE-NBR, 1; CMPNV(B) CUR-MODULE-NBR, NBR-OF-MODULES/HI(DONE); CPYBRAP OFFSET, MOD-HDR-OFFSET(CUR-MODULE-NBR), X'00'; ADDSPP .MOD-HDR, .PGM, OFFSET; LOOK-AT-MODULE-VERSION: CPYBRAP OFFSET, MOD-VERSION-ADDRESS(6:3), X'00'; ADDSPP .SPCPTR, .PGM, OFFSET; CMPBLAP(B) MOD-NAME, MODULE-NAME, " "/NEQ(LOOK-AT-MODULES); HAVE-THE-MODULE: CMPBLAP(B) MODULE-NEW-LIBRARY, "*SAME", " "/EQ(=+2); CPYBLAP MOD-CONTEXT, MODULE-NEW-LIBRARY, " ";: CPYBLAP RETURN-VALUE, "BNASNF", " "; CPYNV OFFSET, 0; CMPBLAP(B) MODULE-NEW-SRC-FILE, "*SAME", " "/NEQ(FIND-BNAS); CMPBLAP(B) MODULE-NEW-SRC-LIBRARY, "*SAME", " "/NEQ(FIND-BNAS); B OK; FIND-BNAS: /* BOUND PROGRAM ASSOCIATED SPACE */ ADDSPP .SPCPTR, .DESCR, OFFSET; CMPBLA(B) BNAS-SIGNATURE, X'02039301C2D5C1E2'/EQ(HAVE-BNAS); ADDN(S) OFFSET, 16; CMPNV(B) OFFSET, DESCR-SIZE/LO(FIND-BNAS), NLO(DONE); HAVE-BNAS: ADDSPP .SPCPTR, .SPCPTR, BNAS-MODULES-OFFSET; CMPBLA(B) BNAS-SIGNATURE, X'0100000000010002'/EQ(HAVE-MODULES); CMPNV(B) OFFSET, DESCR-SIZE/LO(HAVE-BNAS), NLO(DONE); HAVE-MODULES: SETSPP .MODULE, BNAS-MODULE(CUR-MODULE-NBR); CMPBLAP(B) MODULE-NEW-SRC-FILE, "*SAME", " "/EQ(=+2); CPYBLA BNAS-SOURCE-FILE, MODULE-NEW-SRC-FILE;: CMPBLAP(B) MODULE-NEW-SRC-LIBRARY, "*SAME", " "/EQ(=+2); CPYBLA BNAS-SOURCE-LIBRARY, MODULE-NEW-SRC-LIBRARY;: CPYNV THE-MODULE-NBR, 0; FIND-HLL: /* HLL SYMBOL TABLE */ CMPNV(B) OFFSET, DESCR-SIZE/NLO(OK); ADDN(S) OFFSET, 16; ADDSPP .SPCPTR, .DESCR, OFFSET; CMPBLA(B) HLL-SIGNATURE, "HLL Symbol Table"/NEQ(FIND-HLL); ADDN(S) THE-MODULE-NBR, 1; CMPNV(B) THE-MODULE-NBR, CUR-MODULE-NBR /LO (FIND-HLL); FIND-FILE: ADDSPP .SPCPTR, .DESCR, OFFSET; CMPBLA(B) FILE-SIGNATURE, "FILE DESCRIPTOR"/EQ(HAVE-FILE); ADDN(S) OFFSET, 16; CMPNV(B) OFFSET, DESCR-SIZE/LO(FIND-FILE), NLO(OK); HAVE-FILE: CMPBLAP(B) MODULE-NEW-SRC-FILE, "*SAME", " "/EQ(=+2); CPYBLA FILE-SOURCE-FILE, MODULE-NEW-SRC-FILE;: CMPBLAP(B) MODULE-NEW-SRC-LIBRARY, "*SAME", " "/EQ(=+2); CPYBLA FILE-SOURCE-LIBRARY, MODULE-NEW-SRC-LIBRARY;: ADDN(S) OFFSET, 80; CMPBLA(B) FILE-SIGNATURE2, "FILE DESCRIPTOR"/EQ(FIND-FILE); OK: CPYBLAP RETURN-VALUE, " ", " "; DONE: RTX *;