星期一, 11月 06, 2023

2003-06-13 如何得知某個 Job 的狀態是 Active 或在 Jobq ?(API QWCRJBST)


如何得知某個 Job 的狀態是 Active 或在 Jobq ?(API QWCRJBST)

有時候,你所 submit 的 Job 有可能立刻執行或在 Jobq 中等待,你可以直接利用
API QWCRJBST 直接取得該 submit job 的狀態,即時通知使用者。

當執行 SBMJOB 後系統會傳回一個訊息代碼為 CPC1221 的訊息,其格式如下:

Job 'number/user/jobname' submitted to job queue 'jobq' in library 'library'.

所以可以利用 CLP 如下程式片段取得 sbmjob 的 job-name,user-name 及 job-number

DCL &SUBNAME *CHAR 10
DCL &SUBUSER *CHAR 10
DCL &SUBNUMB *CHAR 6
DCL &DATA *CHAR 80


SBMJOB /* something */


RCVMSG MSGTYPE(*COMP) RMV(*NO) +


MSGDTA(&DATA) /* receive CPC1221 */


CHGVAR &SUBNAME %SST(&DATA 1 10)
CHGVAR &SUBUSER %SST(&DATA 11 10)
CHGVAR &SUBNUMB %SST(&DATA 21 6)

當取得 sbmjob 的 jobname, username, jobnumber 後即可呼叫此範例程式取得該 sbmjob 的狀態。


File  : QCLSRC
Member: CHKJOBSTS
Type  : CLP
Usage : CRTCLPGM CHKJOBSTS
        CALL CHKJOBSTS ('job-name' 'job-user' 'job-number' ' ')

             PGM (&JOBNME &JOBUSR &JOBNBR &JOBSTS)

             DCL &JOBNME *CHAR   10
             DCL &JOBUSR *CHAR   10
             DCL &JOBNBR *CHAR    6
             DCL &JOBID  *CHAR   26
             DCL &JOBSTS *CHAR   10

             DCL &FORMAT *CHAR    8 'JOBS0300'
             DCL &JOBINF *CHAR   60
             DCL &JOBINFLEN *CHAR 4
             DCL &JOBINTID *CHAR   16
             DCL &FULLJOB  *CHAR   26

             CHGVAR &JOBID (&JOBNME *CAT &JOBUSR *CAT &JOBNBR)
             CHGVAR %BIN(&JOBINFLEN)  140

             CALL QWCRJBST (     +
                     &JOBINF     +
                     &JOBINFLEN  +
                     &JOBID      +
                     &FORMAT     +
                     X'00000000' +
                  )

             CHGVAR  &JOBSTS   %SST(&JOBINF  9 10)
             CHGVAR  &JOBINTID %SST(&JOBINF 19 16)
             CHGVAR  &FULLJOB  %SST(&JOBINF 35 26)

             SNDPGMMSG  MSG('Job'   *BCAT          +
                            &JOBNBR *TCAT '/' *CAT +
                            &JOBUSR *TCAT '/' *CAT +
                            &JOBNME *BCAT +
                            'status is' *BCAT +
                            &JOBSTS *TCAT '.')     +
                             MSGTYPE(*COMP)
             ENDPGM




沒有留言: