/* SLTJOB: This program controls selection of a specific job from */ /* a list of jobs based on selection criteria. A list is */ /* built into a *usrspc and a program is called to display */ /* the list and return the selected job name... */ SLTJOB: PGM PARM(&PQJOB &PSTS &PTYP &PSLTJOB) DCL VAR(&PQJOB) TYPE(*CHAR) LEN(26) DCL VAR(&PSTS) TYPE(*CHAR) LEN(10) DCL VAR(&PTYP) TYPE(*CHAR) LEN(1) DCL VAR(&PSLTJOB) TYPE(*CHAR) LEN(26) /* */ /* Qualified job name work area... */ /* */ DCL VAR(&JOB) TYPE(*CHAR) LEN(10) DCL VAR(&USER) TYPE(*CHAR) LEN(10) DCL VAR(&NBR) TYPE(*CHAR) LEN(6) /* */ /* Qualified *usrspc name work area... */ /* */ DCL VAR(&USRSPC) TYPE(*CHAR) LEN(10) VALUE(SLTJOB) DCL VAR(&USRSPCLIB) TYPE(*CHAR) LEN(10) VALUE(QTEMP) DCL VAR(&QUSRSPC) TYPE(*CHAR) LEN(20) /********************************************************************/ MONMSG MSGID(CPF0000 MCH0000) EXEC(GOTO CMDLBL(STDERR)) /* */ /* Break out the job name pieces... */ /* */ CHGVAR VAR(&JOB) VALUE(%SST(&PQJOB 1 10)) CHGVAR VAR(&USER) VALUE(%SST(&PQJOB 11 10)) CHGVAR VAR(&NBR) VALUE(%SST(&PQJOB 21 6)) /* Create a *usrspc to store our list in... */ CRTUSRSPC USRSPC(&USRSPCLIB/&USRSPC) DELETE(*YES) TEXT('List + jobs to select from') /* */ /* When *CURUSR comes in as the complete job name, we force the */ /* job name pieces to *ALL/current_user/*ALL... */ /* */ IF COND(&PQJOB *EQ '*CURUSR') THEN(DO) RTVJOBA CURUSER(&USER) CHGVAR VAR(&JOB) VALUE('*ALL') CHGVAR VAR(&NBR) VALUE('*ALL') ENDDO /* */ /* List the desired jobs into the *usrspc... */ /* */ LUSJOB JOB(&NBR/&USER/&JOB) USRSPC(&USRSPCLIB/&USRSPC) + STATUS(&PSTS) JOBTYP(&PTYP) /* */ /* Prepare the *usrspc name for JOBCHSR... */ /* */ CHGVAR VAR(&QUSRSPC) VALUE(&USRSPC *CAT &USRSPCLIB) /* */ /* Call the job chooser program. &PSLTJOB is returned to the */ /* calling program... */ /* */ CALL PGM(JOBCHSR) PARM(&QUSRSPC &PSLTJOB) RCLACTGRP ACTGRP(QILE) MONMSG MSGID(CPF0000) /* */ /* Use a message to signal aborted selection... */ /* */ IF COND(&PSLTJOB *EQ '*NONE') THEN(DO) SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Job selection + returned with no selected job') MSGTYPE(*ESCAPE) /* + If we get none, send a message... */ ENDDO /* And return to calling program... */ RETURN STDERR: MOVDIAGMSG MONMSG MSGID(CPF0000 MCH0000) RSNESCMSG MONMSG MSGID(CPF0000 MCH0000) RETURN ENDPGM