DCL SPCPTR .PARM1 PARM; DCL DD PARM-MODULE CHAR(10) BAS(.PARM1); DCL SPCPTR .PARM2 PARM; DCL DD PARM-OBJECT-LIBRARY CHAR(10) BAS(.PARM2); DCL SPCPTR .PARM3 PARM; DCL DD PARM-SOURCE-LIBRARY CHAR(10) BAS(.PARM3); DCL OL PARMS (.PARM1, .PARM2, .PARM3) PARM EXT MIN(3); DCL DD PCO CHAR(256) BASPCO; DCL SYSPTR .QTEMP DEF(PCO) POS(65); DCL SYSPTR .THE-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 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 MIMAKPTR (.MAKPTR) ARG; DCL SYSPTR .MIMAKPTR; DCL DD STORAGE CHAR(16384) BAS(.SPCPTR); DCL DD DESCRIPTOR CHAR(4096) BAS(.SPCPTR); DCL DD DESCR-EYE-CATCHER CHAR(16) DEF(DESCRIPTOR) POS( 1); DCL DD DESCR-TYPE CHAR(1) DEF(DESCRIPTOR) POS(17); DCL DD * CHAR(3) DEF(DESCRIPTOR) POS(18); DCL DD DESCR-SIZE BIN(4) DEF(DESCRIPTOR) POS(21); DCL DD * BIN(4) DEF(DESCRIPTOR) POS(25); DCL DD * BIN(4) DEF(DESCRIPTOR) POS(29); DCL DD DESCR-OFFSET BIN(4) DEF(DESCRIPTOR) POS(33); DCL DD DESCR-LAST BIN(4) DEF(DESCRIPTOR) POS(37); DCL DD FILE-DESCRIPTOR CHAR(4096) BAS(.SPCPTR); DCL DD FILE-EYE-CATCHER 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 SPCPTR .XPF; DCL DD OFFSET BIN(4); DCL DD END-OF-CHAIN BIN(4) INIT(-1); ENTRY * (PARMS) EXT; RESOLVE-TO-HELPER-PGM: CPYBLA RESOLVE-TYPE, X'0201'; CPYBLAP RESOLVE-NAME, "MIMAKPTR", " "; RSLVSP .MIMAKPTR, RESOLVE, *, *; DETERMINE-CONTEXT: CPYBWP .THE-CONTEXT, .QTEMP; CMPBLAP(B) PARM-OBJECT-LIBRARY, "QTEMP", " "/EQ(GET-MODULE); CPYBLA RESOLVE-TYPE, X'0401'; CPYBLAP RESOLVE-NAME, PARM-OBJECT-LIBRARY, " "; RSLVSP .THE-CONTEXT, RESOLVE, *, *; GET-MODULE: CPYBLA RESOLVE-TYPE, X'0301'; CPYBLAP RESOLVE-NAME, PARM-MODULE, " "; RSLVSP .SYSPTR, RESOLVE, .THE-CONTEXT, *; FIRST-UPDATE-OIR: CALLI CHANGE-OIR, *, .CHANGE-OIR; GET-ASSOCIATED-SPACE: SETSPPFP .SPCPTR, .SYSPTR; GET-FUNCTIONAL-SPACE: CPYBREP PTR-ADDRESS(6:3), X'00'; CALLX .MIMAKPTR, MIMAKPTR, *; POINT-TO-HLL-SYMBOL-TABLE: CPYBLA PTR-ADDRESS, STORAGE(33:8); /* 0020 */ CMPBLA(B) PTR-ADDRESS, X'00000000'/EQ(NOT-FOUND); CALLX .MIMAKPTR, MIMAKPTR, *; POINT-TO-XPF-PIECE: CPYBRA OFFSET, STORAGE(57:4); /* 0038 */ ADDN(S) OFFSET, 32; ADDSPP .XPF, .SPCPTR, OFFSET; POINT-TO-VIEW-SPACE-HDR: ADDSPP .SPCPTR, .XPF, 32; POINT-TO-FIRST-DESCRIPTOR: CPYBRA OFFSET, STORAGE(65:4); ADDSPP .SPCPTR, .XPF, OFFSET; CHECK-FOR-FILE-DESCRIPTOR: CMPBLA(B) DESCR-TYPE, X'03'/EQ(FOUND-FILE-DESCRIPTOR); NEXT-DESCRIPTOR: CMPNV(B) DESCR-OFFSET, END-OF-CHAIN/EQ(NOT-FOUND); ADDSPP .SPCPTR, .XPF, DESCR-OFFSET; B CHECK-FOR-FILE-DESCRIPTOR; FOUND-FILE-DESCRIPTOR: CMPNV(B) DESCR-LAST, END-OF-CHAIN/NEQ(NEXT-DESCRIPTOR); CPYBLA FILE-SOURCE-LIBRARY, PARM-SOURCE-LIBRARY; B RETURN; NOT-FOUND: RETURN: RTX *; DCL SPCPTR .SPC-OIR; DCL SPCPTR .OIR; DCL DD OIR CHAR(512) BAS(.OIR); DCL DD OIR-RECORD-ID BIN(4) DEF(OIR) POS( 1); DCL DD OIR-OBJ-TYPE CHAR(2) DEF(OIR) POS( 5); DCL DD OIR-OBJ-NAME CHAR(10) DEF(OIR) POS( 7); DCL DD OIR-NBR-OF-RECS BIN(4) DEF(OIR) POS( 17); DCL DD * BIN(2) DEF(OIR) POS( 21); DCL DD OIR-ATTRIBUTE CHAR(10) DEF(OIR) POS( 23); DCL DD * CHAR(4) DEF(OIR) POS( 33); DCL DD * BIN(4) DEF(OIR) POS( 37); DCL DD OIR-TEXT-SIZE BIN(2) DEF(OIR) POS( 43); DCL DD OIR-TEXT CHAR(50) DEF(OIR) POS( 45); DCL DD * BIN(2) DEF(OIR) POS( 95); DCL DD * BIN(2) DEF(OIR) POS( 97); DCL DD OIR-SAVE-TIME CHAR(8) DEF(OIR) POS( 99); DCL DD OIR-RESTORE-TIME CHAR(8) DEF(OIR) POS(107); DCL DD * CHAR(4) DEF(OIR) POS(115); DCL DD * BIN(2) DEF(OIR) POS(119); DCL DD * CHAR(78) DEF(OIR) POS(121); DCL DD OIR-SAVE-FILE CHAR(10) DEF(OIR) POS(199); DCL DD OIR-SAVE-LIBRARY CHAR(10) DEF(OIR) POS(209); DCL DD * CHAR(40) DEF(OIR) POS(219); DCL DD * BIN(2) DEF(OIR) POS(259); DCL DD OIR-LICENCED-PROGRAM CHAR(13) DEF(OIR) POS(261); DCL DD OIR-OBJ-CONTROL-LEVEL CHAR(8) DEF(OIR) POS(274); DCL DD * CHAR(1) DEF(OIR) POS(282); DCL DD * CHAR(8) DEF(OIR) POS(283); DCL DD OIR-REFERENCE-COMPILER CHAR(13) DEF(OIR) POS(291); DCL DD OIR-VERSION-RELEASE CHAR(6) DEF(OIR) POS(304); DCL DD OIR-CREATION-DATE CHAR(13) DEF(OIR) POS(310); DCL DD OIR-REF-SOURCE-CHANGED CHAR(13) DEF(OIR) POS(323); DCL DD OIR-REF-SOURCE-FILE CHAR(10) DEF(OIR) POS(336); DCL DD OIR-REF-SOURCE-MEMBER CHAR(10) DEF(OIR) POS(346); DCL DD OIR-REF-SOURCE-LIBRARY CHAR(10) DEF(OIR) POS(356); DCL DD OIR-APAR-CODE CHAR(6) DEF(OIR) POS(366); DCL DD OIR-PTF-LEVEL-2 CHAR(5) DEF(OIR) POS(372); DCL DD * CHAR(4) DEF(OIR) POS(377); DCL DD * CHAR(8) DEF(OIR) POS(381); DCL DD OIR-PROD-LANGUAGE-ID CHAR(4) DEF(OIR) POS(389); DCL DD OIR-PROD-OPTION-ID CHAR(4) DEF(OIR) POS(393); DCL DD * CHAR(16) DEF(OIR) POS(397); DCL DD OIR-PTF-LEVEL-1 CHAR(2) DEF(OIR) POS(413); DCL DD OIR-COMPONENT-ID CHAR(4) DEF(OIR) POS(415); DCL DD * CHAR(12) DEF(OIR) POS(419); DCL DD OIR-CREATING-USER CHAR(10) DEF(OIR) POS(431); DCL DD OIR-CREATING-SYSTEM CHAR(8) DEF(OIR) POS(441); DCL DD OIR-WHEN-CHANGED-BY-API CHAR(8) DEF(OIR) POS(449); DCL DD * BIN(2) DEF(OIR) POS(457); DCL DD OIR-ALLOW-USER-CHANGE CHAR(1) DEF(OIR) POS(459); DCL DD OIR-CHANGED-BY-PGM CHAR(1) DEF(OIR) POS(460); DCL DD OIR-USER-DEFINED-ATTR CHAR(10) DEF(OIR) POS(461); DCL DD OIR-SORT-SEQUENCE CHAR(10) DEF(OIR) POS(471); DCL DD OIR-SORT-LIBRARY CHAR(10) DEF(OIR) POS(481); DCL DD OIR-LANGUAGE-ID CHAR(10) DEF(OIR) POS(491); DCL DD * CHAR(12) DEF(OIR) POS(501); DCL SPCPTR .LIBSPC; DCL DD LIBSPC CHAR(512) BAS(.LIBSPC); DCL SYSPTR .SYS-IDX POS(33) DEF(LIBSPC); DCL SYSPTR .SYS-OIR POS(49) DEF(LIBSPC); DCL SPCPTR .INDEX-OPT INIT(INDEX-OPT); DCL DD INDEX-OPT CHAR(18) BDRY(16); DCL DD INDEX-RULE-OPTION BIN(2) DEF(INDEX-OPT) POS( 1) INIT(1); DCL DD INDEX-ARG-LENGTH BIN(2) DEF(INDEX-OPT) POS( 3) INIT(12); DCL DD INDEX-ARG-OFFSET BIN(2) DEF(INDEX-OPT) POS( 5) INIT(0); DCL DD INDEX-OCR-COUNT BIN(2) DEF(INDEX-OPT) POS( 7) INIT(1); DCL DD INDEX-RTN-COUNT BIN(2) DEF(INDEX-OPT) POS( 9) INIT(0); DCL DD INDEX-ENTRY(2) CHAR(4) DEF(INDEX-OPT) POS(11); DCL SPCPTR .INDEX-SEARCH-ARG INIT(INDEX-SEARCH-ARG); DCL DD INDEX-SEARCH-ARG CHAR(12) BDRY(16); DCL SPCPTR .INDEX-DATA INIT(INDEX-DATA); DCL DD INDEX-DATA CHAR(24) BDRY(16); DCL DD INDEX-KEY CHAR(12) DEF(INDEX-DATA) POS( 1); DCL DD INDEX-COUNT BIN( 4) DEF(INDEX-DATA) POS(13); DCL DD INDEX-OFFSET BIN( 4) DEF(INDEX-DATA) POS(17); DCL DD * CHAR( 4) DEF(INDEX-DATA) POS(21); DCL INSPTR .CHANGE-OIR; ENTRY CHANGE-OIR INT; SETSPPFP .LIBSPC, .THE-CONTEXT; SETSPPFP .SPC-OIR, .SYS-OIR; RETRIEVE-OIR-DATA: CPYBLA INDEX-SEARCH-ARG, X'0301'; /* MODULE */ CPYBLA INDEX-SEARCH-ARG(3:10), PARM-MODULE; FNDINXEN .INDEX-DATA, .SYS-IDX, .INDEX-OPT, .INDEX-SEARCH-ARG; CMPNV(B) INDEX-RTN-COUNT, 0/EQ(.CHANGE-OIR); FOUND-OIR: MULT OFFSET, INDEX-OFFSET, 512; SUBN(S) OFFSET, 256; ADDSPP .OIR, .SPC-OIR, OFFSET; CPYBLA OIR-REF-SOURCE-LIBRARY, PARM-SOURCE-LIBRARY; B .CHANGE-OIR;