如何得知某個 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
A blog about IBM i (AS/400), MQ and other things developers or Admins need to know.
星期一, 11月 06, 2023
2003-06-13 如何得知某個 Job 的狀態是 Active 或在 Jobq ?(API QWCRJBST)
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言