「24. QPRTJOBのジョブ番号を調べるPRTJOBNO」を紹介したが
ここで紹介するのは、それより進んだAPI でPRTJOBNO
を調べる方法である。
OS : V5R2M0 以降であれば、このAPI : QSPRILSP
を使ったほうが
安全で簡単でパフォーマンスにも優れている。
この方法は弊社製品: EnterpriseServer や Spoolライターにも利用されている。
0001.00 PGM PARM(&USER &JOBNBR) 0002.00 /*---------------------------------------------------------*/ 0003.00 /* PRTJOBNO : QPRTJOB のジョブ番号を検索 */ 0004.00 /* */ 0005.00 /* 2011/03/28:API:QSPRILSP は V5R2M0 以降で有効である */ 0006.00 /*---------------------------------------------------------*/ 0007.00 DCL VAR(&MSG) TYPE(*CHAR) LEN(132) 0008.00 DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) 0009.00 DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) 0010.00 DCL VAR(&USER) TYPE(*CHAR) LEN(10) 0011.00 DCL VAR(&JOBNBR) TYPE(*CHAR) LEN(6) 0012.00 DCL VAR(&APIERR) TYPE(*CHAR) LEN(4) + 0013.00 VALUE(X'00000000') /* 2 進数 */ 0014.00 DCL VAR(&RCVDTA) TYPE(*CHAR) LEN(256) /* + 0015.00 受取データ */ 0016.00 DCL VAR(&RCVLEN) TYPE(*CHAR) LEN(4) 0017.00 MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) 0018.00 0019.00 RTVJOBA TYPE(&TYPE) 0020.00 CHGVAR VAR(%BIN(&RCVLEN)) VALUE(128) 0021.00 CALL PGM(QSPRILSP) PARM(&RCVDTA &RCVLEN + 0022.00 'SPRL0100' &APIERR) 0023.00 CHGVAR VAR(&JOBNBR) VALUE(%SST(&RCVDTA 39 6)) 0024.00 RETURN 0025.00 0026.00 ERROR: RCVMSG MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) MSGID(&MSGID) 0027.00 SNDMSG: 0028.00 IF COND(&TYPE *EQ '0') THEN(DO) 0029.00 SNDPGMMSG MSG(&MSGID *CAT ':' *CAT &MSG) + 0030.00 TOMSGQ(*SYSOPR) MSGTYPE(*COMP) 0031.00 ENDDO 0032.00 ELSE CMD(DO) 0033.00 SNDPGMMSG MSG(&MSG) TOMSGQ(*TOPGMQ) MSGTYPE(*DIAG) 0034.00 ENDDO 0035.00 ENDPGM
QSPRILSP
は最後に出力されたスプールの記述を取り出すAPI である。
QSPRILSP
によって取得したデータの 39桁目から 6桁のジョブ番号を取り出して戻す。
QSPRILSP
は OS V5R2M0 で紹介されたAPI であり、日本語の解説はなく英文のみの解説である。