× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.



Sometime I need do some action to specified job , so I wrote a
CHKACTJOB. Source as following:

<pre>
<b>
File : QCLSRC
Member: CHKACTJOB
Type : CLP
Usage : CRTCLPGM CHKACTJOB

</b>
/* =============================================================== */
/* = Command ChkJob CPP = */
/* = ChkJob CLP = */
/* = Paramater notes: = */
/* = Jobname : Jobname to check = */
/* = Jobuser : Jobuser to check = */
/* = SBS : Specified jobname running under which sbs = */
/* = Action : Change, End, Hold or Release job = */
/* = Job command option: only for Change or End job = */
/* = Other command : Other command for job = */
/* =============================================================== */
/* = Date : 2007/06/04 = */
/* = Author: Vengoal Chang = */
/* =============================================================== */
/* = Date : 2007/06/21 = */
/* = Author: Vengoal Chang = */
/* = Added on ACTION *MSG to send status message to user = */
/* =============================================================== */
/* = Date : 2007/08/08 = */
/* = Author: Vengoal Chang = */
/* = Added on JOBSTS keyword to limit job processing = */
/* =============================================================== */
/* = Date : 2007/08/14 = */
/* = Author: Vengoal Chang = */
/* = Added on ACTION *DSP to display job information = */
/* = DSPJOB OPTION(*ALL) OUTPUT(*PRINT) = */
/* = DSPJOB OPTION(*JOBLOG) OUTPUT(*PTINT) = */
/* =============================================================== */

CHKJOB: PGM PARM(&MYJOBNAME &JOBUSER &SBSDANDLIB &JOBSTS +
&ACTION &JOBOPT &TOUSR &CMD)

DCL VAR(&MYJOBNAME) TYPE(*CHAR) LEN(10)
DCL VAR(&JOBUSER ) TYPE(*CHAR) LEN(10)
DCL VAR(&SBSDANDLIB) TYPE(*CHAR) LEN(20) /* SBSD +
AND LIBRARY */
DCL VAR(&SBSD) TYPE(*CHAR) LEN(10) /* SBS */
DCL VAR(&SBSDLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&RTNSBSDLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&JOBSTS) TYPE(*CHAR) LEN(5)
DCL VAR(&ACTION) TYPE(*CHAR) LEN(5)
DCL VAR(&JOBOPT) TYPE(*CHAR) LEN(3000)
DCL VAR(&TOUSR ) TYPE(*CHAR) LEN(10)
DCL VAR(&CMD ) TYPE(*CHAR) LEN(3000)

DCL VAR(&CMDSTR) TYPE(*CHAR) LEN(3000)
DCL VAR(&CMDLEN) TYPE(*DEC) LEN(15 5)

DCL VAR(&JOBNAME) TYPE(*CHAR) LEN(10)
DCL VAR(&USER) TYPE(*CHAR) LEN(10)
DCL VAR(&JOBNBR) TYPE(*CHAR) LEN(6)
DCL VAR(&STATUS) TYPE(*CHAR) LEN(10)
DCL VAR(&JOBTYPE) TYPE(*CHAR) LEN(1)
DCL VAR(&SUBTYPE) TYPE(*CHAR) LEN(1)

DCL VAR(&USP_NAME) TYPE(*CHAR) LEN(10)
DCL VAR(&USP_LIB) TYPE(*CHAR) LEN(10)
DCL VAR(&USP_QUAL) TYPE(*CHAR) LEN(20)
DCL VAR(&USP_TYPE) TYPE(*CHAR) LEN(10)
DCL VAR(&USP_SIZE) TYPE(*CHAR) LEN(4)
DCL VAR(&USP_FILL) TYPE(*CHAR) LEN(1)
DCL VAR(&USP_AUT) TYPE(*CHAR) LEN(10)
DCL VAR(&USP_TEXT) TYPE(*CHAR) LEN(50)

DCL VAR(&API_USQUAL) TYPE(*CHAR) LEN(20)
DCL VAR(&API_JBQUAL) TYPE(*CHAR) LEN(26)
DCL VAR(&API_JBNAM) TYPE(*CHAR) LEN(10)
DCL VAR(&API_USER) TYPE(*CHAR) LEN(10)
DCL VAR(&API_JOBNR) TYPE(*CHAR) LEN(6)
DCL VAR(&API_STATUS) TYPE(*CHAR) LEN(10)

DCL VAR(&STARTPOS) TYPE(*CHAR) LEN(4)
DCL VAR(&DATALEN) TYPE(*CHAR) LEN(4)
DCL VAR(&HEADER) TYPE(*CHAR) LEN(150)
DCL VAR(&LST_OFFSET) TYPE(*DEC) LEN(5 0)
DCL VAR(&LST_SIZE) TYPE(*DEC) LEN(5 0)
DCL VAR(&LST_DATA) TYPE(*CHAR) LEN(4096)
DCL VAR(&LST_NBR) TYPE(*DEC) LEN(5 0)
DCL VAR(&LST_LEN) TYPE(*DEC) LEN(5 0)
DCL VAR(&LST_LENBIN) TYPE(*CHAR) LEN(4)
DCL VAR(&LST_POSBIN) TYPE(*CHAR) LEN(4)
DCL VAR(&LST_COUNT) TYPE(*DEC) LEN(5) VALUE(0)
DCL VAR(&EXC_COUNT) TYPE(*DEC) LEN(5) VALUE(0)
DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) VALUE('*')
DCL VAR(&NBRTORTN) TYPE(*CHAR) LEN(4)
DCL VAR(&KEYSTORTN) TYPE(*CHAR) LEN(8)
DCL VAR(&KEY1 ) TYPE(*CHAR) LEN(4)
DCL VAR(&KEY2 ) TYPE(*CHAR) LEN(4)
DCL VAR(&SBSSYS ) TYPE(*CHAR) LEN(20)
DCL VAR(&WRKSTS ) TYPE(*CHAR) LEN(4)
DCL VAR(&JOBWRKSTS) TYPE(*CHAR) LEN(4)

DCL VAR(&MSGID) TYPE(*CHAR) LEN(7)
DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(256)
DCL VAR(&MSGF) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10)
DCL VAR(&MSGTXT) TYPE(*CHAR) LEN(256)

MONMSG MSGID(CPF0000 MCH0000) EXEC(GOTO CMDLBL(ERROR))

/*- DIVISION OF COMMAND PARAMETER ----------------------------------*/
CHGVAR VAR(&SBSD) VALUE(%SST(&SBSDANDLIB 1 10))
CHGVAR VAR(&SBSDLIB) VALUE(%SST(&SBSDANDLIB 11 10))

IF (&SBSD *NE '*ALL') DO

CHKOBJ OBJ(&SBSDLIB/&SBSD) OBJTYPE(*SBSD)
MONMSG MSGID(CPF9801) EXEC(DO)
RCVMSG MSGQ(*PGMQ) RMV(*NO)
/* MSG: SBSD IN LIBRARY NOT FOUND */
SNDPGMMSG MSGID(CPF9801) MSGF(QCPFMSG) +
MSGDTA(&SBSDANDLIB) MSGTYPE(*ESCAPE)
ENDDO

RTVOBJD OBJ(&SBSDLIB/&SBSD) OBJTYPE(*SBSD) +
RTNLIB(&RTNSBSDLIB)
CHGVAR VAR(%SST(&SBSDANDLIB 11 10)) VALUE(&RTNSBSDLIB)

ENDDO

CHGVAR VAR(%BIN(&NBRTORTN)) VALUE(2)
/* 0101 -- Ststus as WRKACTJOB */
CHGVAR VAR(%BIN(&KEY1 )) VALUE(0101)
/* 1906 -- Subsystem */
CHGVAR VAR(%BIN(&KEY2 )) VALUE(1906)
CHGVAR VAR(&KEYSTORTN) VALUE(&KEY1 *CAT &KEY2)

CHGVAR VAR(&USP_NAME) VALUE('CHKJOBNAME')
CHGVAR VAR(&USP_LIB) VALUE('QTEMP')
CHGVAR VAR(&USP_QUAL) VALUE(&USP_NAME *CAT +
&USP_LIB)
CHGVAR VAR(&USP_TYPE) VALUE('MYTYPE')
CHGVAR VAR(%BIN(&USP_SIZE)) VALUE(128000)
CHGVAR VAR(&USP_FILL) VALUE(' ')
CHGVAR VAR(&USP_AUT) VALUE('*USE')
CHGVAR VAR(&USP_TEXT) VALUE('my user space')

DLTUSRSPC USRSPC(&USP_LIB/&USP_NAME)
MONMSG CPF0000

CALL PGM(QUSCRTUS) PARM(&USP_QUAL &USP_TYPE +
&USP_SIZE &USP_FILL &USP_AUT &USP_TEXT)

CHGVAR VAR(&API_USQUAL) VALUE(&USP_QUAL)
CHGVAR VAR(&API_JBNAM) VALUE(&MYJOBNAME)
/* CHGVAR VAR(&API_USER) VALUE('*ALL') */
CHGVAR VAR(&API_USER) VALUE(&JOBUSER)
CHGVAR VAR(&API_JOBNR) VALUE('*ALL')
CHGVAR VAR(&API_STATUS) VALUE('*ACTIVE')
CHGVAR VAR(&API_JBQUAL) VALUE(&API_JBNAM *CAT +
&API_USER *CAT &API_JOBNR)

CALL PGM(QUSLJOB) PARM(&API_USQUAL 'JOBL0200' +
&API_JBQUAL &API_STATUS X'00000000' +
&TYPE &NBRTORTN &KEYSTORTN)

CHGVAR VAR(%BIN(&STARTPOS)) VALUE(1)
CHGVAR VAR(%BIN(&DATALEN)) VALUE(140)

CALL PGM(QUSRTVUS) PARM(&API_USQUAL &STARTPOS +
&DATALEN &HEADER)

CHGVAR VAR(&LST_OFFSET) VALUE(%BIN(&HEADER 125 4))
CHGVAR VAR(&LST_SIZE) VALUE(%BIN(&HEADER 129 4))
CHGVAR VAR(&LST_NBR) VALUE(%BIN(&HEADER 133 4))
CHGVAR VAR(&LST_LEN) VALUE(%BIN(&HEADER 137 4))

CHGVAR VAR(%BIN(&LST_POSBIN)) VALUE(&LST_OFFSET + 1)
CHGVAR VAR(&LST_LENBIN) VALUE(%SST(&HEADER 137 4))

CHGVAR VAR(&LST_COUNT) VALUE(0)
CHGVAR VAR(&EXC_COUNT) VALUE(0)

IF (&LST_NBR *EQ 0) DO

IF (&JOBUSER *EQ '*ALL') DO
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA('Job' +
*BCAT &MYJOBNAME *BCAT 'was not found!') +
MSGTYPE(*ESCAPE)
ENDDO
ELSE DO
ENDDO
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
MSGDTA('User' *BCAT &JOBUSER *BCAT +
'run job' *BCAT &MYJOBNAME *BCAT +
'was not found!') +
MSGTYPE(*ESCAPE)

ENDDO

LST_LOOP: IF COND(&LST_COUNT *EQ &LST_NBR) THEN(GOTO +
CMDLBL(LST_END))

CALL PGM(QUSRTVUS) PARM(&API_USQUAL &LST_POSBIN +
&LST_LENBIN &LST_DATA)

CHGVAR VAR(&JOBNAME) VALUE(%SST(&LST_DATA 1 10))
CHGVAR VAR(&USER) VALUE(%SST(&LST_DATA 11 10))
CHGVAR VAR(&JOBNBR) VALUE(%SST(&LST_DATA 21 6))
CHGVAR VAR(&STATUS) VALUE(%SST(&LST_DATA 43 10))
CHGVAR VAR(&JOBTYPE) VALUE(%SST(&LST_DATA 53 1))
CHGVAR VAR(&SUBTYPE) VALUE(%SST(&LST_DATA 54 1))
/* for status */
CHGVAR VAR(&WRKSTS ) VALUE(%SST(&LST_DATA 81 4))
/* for subsystem */
CHGVAR VAR(&SBSSYS ) VALUE(%SST(&LST_DATA 101 20))

IF COND(&MYJOBNAME *EQ '*ALL' *OR +
&JOBNAME *EQ &MYJOBNAME) THEN(DO)

IF ((&SBSD *EQ '*ALL') *OR +
(&SBSDANDLIB *EQ &SBSSYS)) DO

CHGVAR &JOBWRKSTS %SST(&JOBSTS 2 4)

IF ((&JOBSTS *EQ '*ALL') *OR +
(&JOBWRKSTS *EQ &WRKSTS)) DO

IF (&ACTION *NE '*CMD') DO
IF (&ACTION *EQ '*CHG') +
CHGVAR &CMDSTR 'CHGJOB'
IF (&ACTION *EQ '*END') +
CHGVAR &CMDSTR 'ENDJOB'
IF (&ACTION *EQ '*HLD') +
CHGVAR &CMDSTR 'HLDJOB'
IF (&ACTION *EQ '*RLS') +
CHGVAR &CMDSTR 'RLSJOB'
IF (&ACTION *EQ '*DSP') DO
CHGVAR &CMDSTR 'DSPJOB'
CHGVAR &JOBOPT 'OPTION(*ALL) OUTPUT(*PRINT)'
ENDDO

CHGVAR &CMDSTR (&CMDSTR *BCAT 'JOB(' *TCAT +
&JOBNBR *TCAT '/' *CAT +
&USER *TCAT '/' *CAT +
&JOBNAME *TCAT ')' *BCAT &JOBOPT)


ENDDO
ELSE DO
CHGVAR &CMDSTR &CMD
ENDDO

CHGVAR VAR(&EXC_COUNT) VALUE(&EXC_COUNT + 1)

IF (&ACTION *EQ '*MSG') DO
SNDPGMMSG MSG('Job' *BCAT +
&JOBNBR *TCAT '/' *CAT +
&USER *TCAT '/' *CAT +
&JOBNAME *BCAT 'status is' *BCAT +
&WRKSTS *TCAT '.') +
TOUSR(&TOUSR)
ENDDO
ELSE DO
CHGVAR VAR(&CMDLEN) VALUE(3000)
CALL PGM(QCMDEXC) PARM(&CMDSTR &CMDLEN)
MONMSG MSGID(CPF1346 CPF1349)
IF (&ACTION *EQ '*DSP') DO
CHGVAR &CMDSTR ('DSPJOB' *BCAT 'JOB(' *TCAT +
&JOBNBR *TCAT '/' *CAT +
&USER *TCAT '/' *CAT +
&JOBNAME *TCAT ')' *BCAT +
'OPTION(*JOBLOG) OUTPUT(*PRINT)')
CHGVAR VAR(&CMDLEN) VALUE(3000)
CALL PGM(QCMDEXC) PARM(&CMDSTR &CMDLEN)
MONMSG MSGID(CPF1346 CPF1349)
ENDDO

ENDDO

ENDDO /* ENDDO JOBSTS */

ENDDO /* ENDDO SBSD */

ENDDO /* ENDDO JOBNAME */

CHGVAR VAR(&LST_COUNT) VALUE(&LST_COUNT + 1)
CHGVAR VAR(%BIN(&LST_POSBIN)) +
VALUE(%BIN(&LST_POSBIN) + &LST_LEN)
GOTO CMDLBL(LST_LOOP)

LST_END:
IF (&EXC_COUNT *EQ 0) DO
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) +
MSGDTA('User' *BCAT &JOBUSER *BCAT +
'run job' *BCAT &MYJOBNAME *BCAT +
'under subsystem' *BCAT +
&RTNSBSDLIB *TCAT '/' *CAT &SBSD *BCAT +
'was not found!') +
MSGTYPE(*ESCAPE)
ENDDO

DLTUSRSPC USRSPC(&USP_LIB/&USP_NAME)

Return

/* =============================================================== */
/* = Error routine = */
/* =============================================================== */

Error:

RcvMsg MsgType( *Excp ) +
MsgDta( &MsgDta ) +
MsgID( &MsgID ) +
MsgF( &MsgF ) +
MsgFLib( &MsgFLib )
MonMsg ( CPF0000 MCH0000 )

SndMsg:

SndPgmMsg MsgID( &MsgID ) +
MsgF( &MsgFLib/&MsgF ) +
MsgDta( &MsgDta ) +
MsgType( *Escape )
MonMsg ( CPF0000 MCH0000 )

/* =============================================================== */
/* = End of program = */
/* =============================================================== */

ENDPGM


<b>
File : QCMDSRC
Member: CHKACTJOB
Type : CMD
Usage : CRTCMD CMD(lib/CHKACTJOB) PGM(lib/CHKACTJOB)

</b>
/* =============================================================== */
/* = Command....... ChkJob = */
/* = CPP........... ChkJob = */
/* = Description... Check Job by job name and subsystem = */
/* = = */
/* = CrtCmd Cmd( ChkJob ) = */
/* = Pgm( ChkJob ) = */
/* = SrcFile( YourSourceFile ) = */
/* =============================================================== */
/* = Date : 2007/06/04 = */
/* = Author: Vengoal Chang = */
/* =============================================================== */
/* = Date : 2007/06/21 = */
/* = Author: Vengoal Chang = */
/* = Added on ACTION *MSG to send status message to user= */
/* =============================================================== */
/* = Date : 2007/08/08 = */
/* = Author: Vengoal Chang = */
/* = Added on JOBSTS keyword to limit job processing = */
/* =============================================================== */
/* = Date : 2007/08/14 = */
/* = Author: Vengoal Chang = */
/* = Added on ACTION *DSP to display job information = */
/* = DSPJOB OPTION(*ALL) OUTPUT(*PRINT) = */
/* = DSPJOB OPTION(*JOBLOG) OUTPUT(*PTINT) = */
/* =============================================================== */
CMD PROMPT('Check Job')

PARM KWD(JOBNAME) TYPE(*NAME) SPCVAL((*ALL)) +
MIN(1) PROMPT('Job name')

PARM KWD(JOBUSER) TYPE(*NAME) SPCVAL((*ALL)) +
MIN(1) PROMPT('Job user')

PARM KWD(SBS) TYPE(SBSD) MIN(1) PROMPT('Job +
running under subsystem')

PARM KWD(JOBSTS) TYPE(*CHAR) LEN(5) RSTD(*YES) +
DFT(*ALL) VALUES(*ALL *MSGW) PROMPT('Job +
selection by ACTJOB status')

PARM KWD(ACTION) TYPE(*CHAR) LEN(5) RSTD(*YES) +
DFT(*MSG) VALUES(*DSP *CHG *END *HLD *RLS +
*MSG *CMD) EXPR(*YES) PROMPT('Action')

PARM KWD(JOBOPT) TYPE(*CHAR) LEN(3000) +
PMTCTL(IFPGM) PROMPT('Job command option +
DSP,CHG,END')

PARM KWD(TOUSR) TYPE(*NAME) LEN(10) +
SPCVAL((*SYSOPR)) PMTCTL(IFTOUSR) +
PROMPT('Send status message to user')

PARM KWD(CMD) TYPE(*CMDSTR) LEN(3000) +
PMTCTL(IFCMD) PROMPT('Command to run')

SBSD: QUAL TYPE(*NAME) LEN(10) SPCVAL((*ALL)) EXPR(*YES)
QUAL TYPE(*NAME) LEN(10) DFT(*LIBL) +
SPCVAL((*LIBL) (*CURLIB)) EXPR(*YES) +
PROMPT('Library')

IFPGM: PMTCTL CTL(ACTION) COND((*EQ *CHG))
PMTCTL CTL(ACTION) COND((*EQ *END)) LGLREL(*OR)

IFTOUSR: PMTCTL CTL(ACTION) COND((*EQ *MSG))

IFCMD: PMTCTL CTL(ACTION) COND((*EQ *CMD))

DEP CTL(&ACTION *EQ *CHG) PARM((JOBOPT))
DEP CTL(&ACTION *EQ *END) PARM((JOBOPT))
DEP CTL(&ACTION *EQ *MSG) PARM((TOUSR))
DEP CTL(&ACTION *EQ *CMD) PARM((CMD))

<b>
File : QCLSRC
Member: CHKACTJOBT
Type : CLP
Usage : CRTCLPGM PGM(lib/CHKACTJOBT)
CALL CHKACTJOBT
</b>
PGM

DCL &MSGTXT *CHAR 256

CHKACTJOB JOBNAME(QSYSSCD) JOBUSER(QPGMR) SBS(QINTER) +
ACTION(*CHG) JOBOPT('RUNPTY(10)')
MONMSG CPF9898 EXEC(DO)
RCVMSG MSGTYPE(*EXCP) MSG(&MSGTXT)
DMPCLPGM
ENDDO

CHKACTJOB JOBNAME(QSYSSCD) JOBUSER(QPGMR) SBS(QCTL) +
ACTION(*MSG) TOUSR(*SYSOPR)
MONMSG CPF9898 EXEC(DO)
RCVMSG MSGTYPE(*EXCP) MSG(&MSGTXT)
DMPCLPGM
ENDDO

CHKACTJOB JOBNAME(QSYSSCD) JOBUSER(QPGMR) SBS(QCTL) +
JOBSTS(*MSGW) ACTION(*MSG) TOUSR(*SYSOPR)
MONMSG CPF9898 EXEC(DO)
RCVMSG MSGTYPE(*EXCP) MSG(&MSGTXT)
DMPCLPGM
ENDDO

CHKACTJOB JOBNAME(QSYSSCD) JOBUSER(QPGMR) SBS(QCTL) +
JOBSTS(*MSGW) ACTION(*MSG) TOUSR(*SYSOPR)
MONMSG CPF9898

ENDPGM


</pre>


As an Amazon Associate we earn from qualifying purchases.

This thread ...


Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].

Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.