如何取得 JOBD 中的 Library list ?(Command RTVJDLIBL -- API QWDRJOBD)
於前期中有提及如何檢查某 Library 中的 JobD 的 INLLIBL 參數是否含有指定的 Library,
本期直接將擷取 JOBD 的 INLLIBL 部分直接寫成指令便於使用, 此 RTVJDLIBL 指令傳回
Library list 字串及 Library list 中含有 library 的個數便於擷取, Library list
字串中的每一 library 長度為 10, library 間有一個空白, 所以當擷取每一個 library 時, 需要以 11 為長度單位, 如
1 2 3 4
1234567890123456789012345678901234567890
Library1 Library2 Library3
第一個位置 1, 第二個位置 12, 第三個位置 23,...
File : QCLSRC
Member: RTVJDLIBLC
Type : CLP
Usage : CRTCLPGM RTVJDLIBLC
Version: ALL
/* After you executed RTVJDLIBL you can use QCMDEXC to adjust */
/* your library list. */
/* CHGVAR VAR(&CHGLIBL) VALUE('CHGLIBL LIBL(' *CAT +
&INLLIBB *CAT ')') */
/* CALL PGM(*LIBL/QCMDEXC) PARM(&CHGLIBL 500) */
PGM PARM(&JOBD &INLLIBL &INLLIBLCNT)
DCL VAR(&JOBD) TYPE(*CHAR) LEN(20) +
/* Qualified name of jobdescription */
DCL VAR(&RCVVAR) TYPE(*CHAR) LEN(2750) +
/* Receiver Variable */
DCL VAR(&RCVLEN) TYPE(*DEC) LEN(9 0) VALUE(2750) +
/* Length of receiver variable */
DCL VAR(&RCVLBIN) TYPE(*CHAR) LEN(4) +
/* Receiver length in binary */
DCL VAR(&FORMAT) TYPE(*CHAR) LEN(8) +
VALUE(JOBD0100) /* Format name */
DCL VAR(&ERROR) TYPE(*CHAR) LEN(8)
DCL VAR(&ZERODEC) TYPE(*DEC) LEN(9 0)
DCL VAR(&ZEROBIN) TYPE(*CHAR) LEN(4)
DCL VAR(&OFFSET) TYPE(*CHAR) LEN(4)
DCL VAR(&NBRLIB) TYPE(*CHAR) LEN(4)
DCL VAR(&OFFSETDEC) TYPE(*DEC) LEN(9 0)
DCL VAR(&NBRLIBDEC) TYPE(*DEC) LEN(9 0)
DCL VAR(&INLLIBL) TYPE(*CHAR) LEN(275)
DCL VAR(&INLLIBLCNT) TYPE(*CHAR) LEN(9)
CHGVAR VAR(%BIN(&RCVLBIN)) VALUE(&RCVLEN)
CHGVAR VAR(%BIN(&ZEROBIN)) VALUE(&ZERODEC)
CHGVAR VAR(&ERROR) VALUE(&ZEROBIN *CAT &ZEROBIN +
*CAT ' ')
CALL PGM(QWDRJOBD) PARM(&RCVVAR &RCVLBIN &FORMAT +
&JOBD &ERROR)
CHGVAR VAR(&OFFSET) VALUE(%SST(&RCVVAR 361 4))
CHGVAR VAR(&NBRLIB) VALUE(%SST(&RCVVAR 365 4))
CHGVAR VAR(&OFFSETDEC) VALUE(%BIN(&OFFSET))
CHGVAR VAR(&NBRLIBDEC) VALUE(%BIN(&NBRLIB))
CHGVAR VAR(&INLLIBLCNT) VALUE(&NBRLIBDEC)
CHGVAR VAR(&OFFSETDEC) VALUE(&OFFSETDEC + 1)
CHGVAR VAR(&NBRLIBDEC) VALUE(&NBRLIBDEC * 11)
CHGVAR VAR(&INLLIBL) VALUE(%SST(&RCVVAR &OFFSETDEC +
&NBRLIBDEC))
ENDPGM
File : QCMDSRC
Member: RTVJDLIBL
Type : CMD
Usage : RTVCMD CMD(RTVJDLIBL) PGM(RTVJDLIBLC) ALLOW(*IPGM *BPGM)
Version: ALL
CMD PROMPT('Retrieve library-list of jobd')
/*********************************************************/
/* Compile met ALLOW(*IPGM *BPGM) !!!!! */
/* *******************************************************/
PARM KWD(JOBD) TYPE(Q1) PROMPT('Job description:')
PARM KWD(INLLIBL) TYPE(*CHAR) LEN(275) +
RTNVAL(*YES) PROMPT('Initial library list:')
PARM KWD(INLLIBLCNT) TYPE(*CHAR) LEN(9) +
RTNVAL(*YES) PROMPT('Initial library list count:')
Q1: QUAL TYPE(*NAME) LEN(10) MIN(1)
QUAL TYPE(*NAME) LEN(10) DFT(*LIBL) +
SPCVAL((*LIBL)) PROMPT('Library name:')
File : QCLSRC
Member: RTVJDLIBLT
Type : CLP
Usage : CRTCLPGM RTVJDLIBLT
CALL RTVJDLIBLT 'your jobd'
Version : ALL
PGM &JOBD
DCL &JOBD *CHAR 10
DCL &INLLIBL *CHAR 275
DCL &INLLIBLCNT *CHAR 9
DCL &MSG *CHAR 256
RTVJDLIBL JOBD(&JOBD) INLLIBL(&INLLIBL) +
INLLIBLCNT(&INLLIBLCNT)
CHGVAR &MSG (&INLLIBLCNT *BCAT &INLLIBL)
SNDPGMMSG MSGID(CPF9898) MSGF(QCPFMSG) MSGDTA(&MSG) +
MSGTYPE(*COMP)
/* SNDPGMMSG MSG(&MSG) */
ENDPGM
A blog about IBM i (AS/400), MQ and other things developers or Admins need to know.
星期四, 11月 02, 2023
2002-11-25 如何取得 JOBD 中的 Library list ?(Command RTVJDLIBL -- API QWDRJOBD)
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言