DCL SPCPTR .PARM1 PARM; DCL DD PARM-JOB CHAR(10) BAS(.PARM1); DCL SPCPTR .PARM2 PARM; DCL DD PARM-USER CHAR(10) BAS(.PARM2); DCL SPCPTR .PARM3 PARM; DCL DD PARM-NUMBER CHAR(06) BAS(.PARM3); DCL SPCPTR .PARM4 PARM; /* DCL DD PARM-STACK CHAR(6004) BAS(.PARM4); */ DCL DD PARM-STACK CHAR(6004); DCL DD PARM-NBR-PGMS BIN(4) DEF(PARM-STACK) POS( 1); DCL DD PARM-INFO(100) CHAR(60) DEF(PARM-STACK) POS( 5); DCL DD INFO CHAR(60); DCL DD INFO-LIB CHAR(30) DEF(INFO) POS( 1); DCL DD INFO-NAME CHAR(30) DEF(INFO) POS(31); DCL OL PARAMETERS(.PARM1, .PARM2, .PARM3, .PARM4) EXT PARM MIN(1); DCL DD RESOLVE CHAR(34); DCL DD RESOLVE-TYPE CHAR( 2) DEF(RESOLVE) POS( 1) INIT(X'0000'); 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 .JOB-INFO INIT(JOB-INFO); DCL DD JOB-INFO CHAR(32) BDRY(16); DCL SYSPTR .THE-JOB DEF(JOB-INFO) POS( 1); DCL SPCPTR .PCO-JOB DEF(JOB-INFO) POS(17); DCL OL GETAJOB(.PARM1, .PARM2, .PARM3, .JOB-INFO); DCL SYSPTR .GETAJOB; DCL SPCPTR .MPTR INIT(MPTR); DCL DD MPTR CHAR(16) BDRY(16); DCL SYSPTR .POINTER DEF(MPTR) POS(1); DCL DD MPTR-POINTER CHAR(16) DEF(MPTR) POS(1); DCL DD MPTR-OFFSET CHAR(3) DEF(MPTR) POS(14); DCL SPCPTR .LENGTH INIT(LENGTH); DCL DD LENGTH BIN(4); DCL SPCPTR .DPTR INIT(DPTR); DCL DD DPTR CHAR(16) BDRY(16); DCL SPCPTR .DATA DEF(DPTR) POS(1) INIT(DATA); DCL OL LSACCESS(.MPTR, .DPTR, .LENGTH) ARG; DCL SYSPTR .LSACCESS; DCL DD DATA CHAR(128) BDRY(16); DCL DD DATA-NAME CHAR(30) DEF(DATA) POS(37); DCL DD DATA-LIB-PTR CHAR(16) DEF(DATA) POS(97); 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 THE-ENTRY CHAR(128) BDRY(16); DCL SYSPTR .THE-ENTRY-PGM DEF(THE-ENTRY) POS(33); DCL DD PGM-NBR BIN(4); /*******************************************************************/ ENTRY * (PARAMETERS) EXT; CMPBLA(B) RESOLVE-TYPE, X'0000'/NEQ(GET-JOB); CPYBLA RESOLVE-TYPE, X'0201'; CPYBLAP RESOLVE-NAME, "GETAJOB", " "; RSLVSP .GETAJOB, RESOLVE, *, *; CPYBLAP RESOLVE-NAME, "LSACCESS", " "; RSLVSP .LSACCESS, RESOLVE, *, *; GET-JOB: CALLX .GETAJOB, GETAJOB, *; CMPBLAP(B) JOB-INFO, X'00', X'00'/EQ(RETURN); GET-STACK: CPYNV STK-BYTES-PRV, 8; /* MINIMUM */ SETSPP .THE-STACK, THE-STACK; MATINVS .THE-STACK, .THE-JOB; MODASA .THE-STACK, STK-BYTES-AVL; CPYNV STK-BYTES-PRV, STK-BYTES-AVL; SETSPP .THE-STACK, THE-STACK; MATINVS .THE-STACK, .THE-JOB; OVRPGATR 1, 2; /* DO NOT CONSTRAIN ARRAY REFS */ CPYNV PARM-NBR-PGMS, STK-NBR-OF-ENTRIES; CPYNV LENGTH, 128; CPYNV PGM-NBR, 0; NEXT-PGM: ADDN(S) PGM-NBR, 1; CMPNV(B) PGM-NBR, STK-NBR-OF-ENTRIES/HI(RETURN); CPYBWP THE-ENTRY, STK-ENTRY(PGM-NBR); CPYBWP .POINTER, .THE-ENTRY-PGM; CPYBLA MPTR-OFFSET, X'000000'; CALLX .LSACCESS, LSACCESS, *; CPYBLA INFO-NAME, DATA-NAME; CPYBWP MPTR-POINTER, DATA-LIB-PTR; CPYBLA MPTR-OFFSET, X'000000'; CALLX .LSACCESS, LSACCESS, *; CPYBLA INFO-LIB , DATA-NAME; CPYBLA PARM-INFO(PGM-NBR), INFO; B NEXT-PGM; RETURN: BRK "1"; RTX *; PEND;