/* CALL PGM(MIWCBFND) PARM(DEVICE JOBNAME) */ /* INPUT: DEVICE CHAR(10) DEVICE NAME FOR TERMINAL */ /* OUTPUT: JOBNAME CHAR(26) ACTIVE JOB USING THE DEVICE */ /* IF NO JOB IS USING THE DEVICE, RETURNS SPACES */ DCL DD PCO CHAR(512) BASPCO; DCL SYSPTR @QWCBT00 DEF(PCO) POS(433); DCL SPCPTR .WCB-ROOT; DCL DD WCB-ROOT CHAR(2048) BAS(.WCB-ROOT); DCL SYSPTR .JOB-INDEX DEF(WCB-ROOT) POS(545); /* OFFSET 220 */ DCL SPCPTR .JOB-RECEIVER INIT(JOB-RECEIVER); DCL DD JOB-RECEIVER CHAR(48000) BDRY(16); DCL DD JOB-ENTRY(1000) CHAR(48) DEF(JOB-RECEIVER) POS(1); DCL DD THE-ENTRY CHAR(48) BDRY(16); DCL DD ENTRY-PREFIX CHAR( 1) DEF(THE-ENTRY) POS( 1); DCL DD ENTRY-JOB-NAME CHAR(26) DEF(THE-ENTRY) POS( 2); DCL DD * CHAR( 5) DEF(THE-ENTRY) POS(28); DCL SPCPTR .WCB-ENTRY DEF(THE-ENTRY) POS(33); DCL SPCPTR .ARGUMENT INIT(ARGUMENT); DCL DD ARGUMENT CHAR(32); DCL DD ARG-PREFIX CHAR( 1) DEF(ARGUMENT) POS( 1); DCL DD ARG-DEVICE CHAR(10) DEF(ARGUMENT) POS( 2); DCL DD * CHAR(21) DEF(ARGUMENT) POS(12); DCL DD WCB-ENTRY CHAR(1024) BAS(.WCB-ENTRY); DCL DD WCB-JOB CHAR(26) DEF(WCB-ENTRY) POS( 1); DCL DD WCB-DEVICE CHAR(10) DEF(WCB-JOB) POS( 1); DCL DD WCB-USER CHAR(10) DEF(WCB-JOB) POS( 11); DCL DD WCB-NUMBER CHAR( 6) DEF(WCB-JOB) POS( 21); DCL SYSPTR .WCB-PCS DEF(WCB-ENTRY) POS( 33); DCL DD WCB-TYPE CHAR( 1) DEF(WCB-ENTRY) POS( 97); DCL DD WCB-STATUS CHAR( 1) DEF(WCB-ENTRY) POS( 98); DCL DD WCB-GROUP CHAR( 1) DEF(WCB-ENTRY) POS(100); DCL SPCPTR .WCB-PCO; DCL DD WCB-PCO CHAR(992) BAS(.WCB-PCO); DCL DD WCB-PCO-GROUP-STATUS CHAR(1) DEF(WCB-PCO) POS(548); DCL DD WCB-PCO-SYSREQ-STATUS CHAR(1) DEF(WCB-PCO) POS(980); DCL DD ENTRY-NBR BIN(2); DCL SPCPTR .OPTIONS INIT(OPTIONS); DCL DD OPTIONS CHAR(4010); DCL DD OPT-RULE CHAR(2) DEF(OPTIONS) POS(1) INIT(X'0001'); DCL DD OPT-ARG-LENGTH BIN(2) DEF(OPTIONS) POS(3) INIT(11); DCL DD OPT-ARG-OFFSET BIN(2) DEF(OPTIONS) POS(5) INIT( 0); DCL DD OPT-MAX-COUNT BIN(2) DEF(OPTIONS) POS(7) INIT(1000); DCL DD OPT-RETURN-COUNT BIN(2) DEF(OPTIONS) POS(9); DCL DD OPT-ENTRY(1000) CHAR(4) DEF(OPTIONS) POS(11); DCL SPCPTR .PARM1 PARM; DCL DD PARM-DEVICE CHAR(10) BAS(.PARM1); DCL SPCPTR .PARM2 PARM; DCL DD PARM-JOB CHAR(26) BAS(.PARM2); DCL DD PARM-JOB-DEVICE CHAR(10) DEF(PARM-JOB) POS( 1); DCL DD PARM-JOB-USER CHAR(10) DEF(PARM-JOB) POS(11); DCL DD PARM-JOB-NBR CHAR( 6) DEF(PARM-JOB) POS(21); DCL OL PARAMETERS(.PARM1, .PARM2) EXT PARM MIN(2); /*******************************************************************/ ENTRY * (PARAMETERS) EXT; CPYBREP PARM-JOB, " "; GET-JOB-INDEX: SETSPPFP .WCB-ROOT, @QWCBT00; FIND-JOBS-WITH-GIVEN-DEVICE: CPYBLA ARG-PREFIX, "1"; CPYBLA ARG-DEVICE, PARM-DEVICE; FNDINXEN .JOB-RECEIVER, .JOB-INDEX, .OPTIONS, .ARGUMENT; CPYNV ENTRY-NBR, 0; CHECK-NEXT-ENTRY: ADDN(S) ENTRY-NBR, 1; CMPNV(B) ENTRY-NBR, OPT-RETURN-COUNT/HI(RETURN); CPYBWP THE-ENTRY, JOB-ENTRY (ENTRY-NBR); CHECK-JOB-STATUS: CMPBLA(B) WCB-STATUS, X'20'/NEQ (CHECK-NEXT-ENTRY); /*ACTIVE */ TSTBUM(B) WCB-GROUP , X'06'/ONES(CHECK-NEXT-ENTRY); /*SUSPGRP */ CMPBLA(B) WCB-TYPE , "I" /NEQ (CHECK-NEXT-ENTRY); /*INTERACT*/ CHECK-FOR-SYSTEM-REQUEST: CMPPTRT(B) .WCB-PCS, * /EQ(CHECK-NEXT-ENTRY); SETSPPFP .WCB-PCO, .WCB-PCS; TSTBUM(B) WCB-PCO-SYSREQ-STATUS, X'80'/NZER(CHECK-NEXT-ENTRY); HAVE-THE-ACTIVE-ENTRY: CPYBLA PARM-JOB, WCB-JOB; RETURN: RTX *;