/* CALL PGM(MIWCBSCN) 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 SPCPTRS CHAR(48) BDRY(16); DCL SPCPTR .WCBSPC DEF(SPCPTRS) POS( 1); DCL SPCPTR .WCB-ROOT DEF(SPCPTRS) POS(17); DCL SPCPTR .WCB-ENTRY DEF(SPCPTRS) POS(33); DCL DD OWN-PCO CHAR(512) BASPCO; DCL SYSPTR @WCBT00 DEF(OWN-PCO) POS(433); DCL DD WCB-ROOT CHAR(2048) BAS(.WCB-ROOT); DCL SYSPTR .WCB-TABLES(30) DEF(WCB-ROOT) POS(577); DCL DD THE-TABLE BIN(4); DCL DD THE-OFFSET BIN(4); DCL DD WCBTBL-SPACE CHAR(256) BAS(.WCBSPC); DCL DD WCBTBL-SIZE BIN(4) DEF(WCBTBL-SPACE) POS(21); DCL DD WCB-ENTRY CHAR(1024) BAS(.WCB-ENTRY); DCL DD WCB-DEVICE CHAR(10) DEF(WCB-ENTRY) POS( 1); DCL DD WCB-USER CHAR(10) DEF(WCB-ENTRY) POS( 11); DCL DD WCB-NUMBER CHAR( 6) DEF(WCB-ENTRY) 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( 2) 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 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-WCB-ROOT: SETSPPFP .WCB-ROOT, @WCBT00; CPYNV THE-TABLE, 0; SEARCH-NEXT-TABLE: ADDN(S) THE-TABLE, 1; CMPPTRT(B) .WCB-TABLES(THE-TABLE), */EQ(RETURN); SETSPPFP .WCBSPC, .WCB-TABLES(THE-TABLE); CALLI SEARCH-WCB-TABLE, *, .SEARCH-WCB-TABLE; CMPNV(B) THE-TABLE, 30/NHI(SEARCH-NEXT-TABLE); RETURN: CPYBLAP MSG-TEXT, PARM-JOB, " "; CALLI SHOW-MESSAGE, *, .SHOW-MESSAGE; RTX *; DCL INSPTR .SEARCH-WCB-TABLE; ENTRY SEARCH-WCB-TABLE INT; PREPARE-TO-SEARCH-WCB-TABLE: SETSPPFP .WCB-ENTRY, .WCBSPC; CPYNV(B) THE-OFFSET, H'0300'/POS(=+2); NEXT-WCBTBL-ENTRY: ADDN(S) THE-OFFSET, H'0400';: CMPNV(B) THE-OFFSET, WCBTBL-SIZE/NLO(.SEARCH-WCB-TABLE); SETSPPO .WCB-ENTRY, THE-OFFSET; CHECK-WCBTBL-ENTRY: CMPBLA(B) PARM-DEVICE, WCB-DEVICE/NEQ(NEXT-WCBTBL-ENTRY); HAVE-DEVICE-MATCH: CMPBLA(B) WCB-STATUS, X'20'/NEQ (NEXT-WCBTBL-ENTRY);/*ACTIVE */ TSTBUM(B) WCB-GROUP , X'06'/ONES(NEXT-WCBTBL-ENTRY);/*SUSPGRP */ CMPBLA(B) WCB-TYPE , "I" /NEQ (NEXT-WCBTBL-ENTRY);/*INTERACT*/ SETSPPFP .WCB-PCO, .WCB-PCS; TSTBUM(B) WCB-PCO-SYSREQ-STATUS, X'80'/NZER(NEXT-WCBTBL-ENTRY); HAVE-ACTIVE-ENTRY: CPYBLA PARM-JOB-DEVICE, WCB-DEVICE; CPYBLA PARM-JOB-USER, WCB-USER; CPYBLA PARM-JOB-NBR, WCB-NUMBER; B RETURN; %INCLUDE SHOWMSG