PGM /*-------------------------------------------------------------------*/ /* TESTSPLL : QGYOLSPL: SPLF の一覧表 */ /* */ /* 2020/07/05 作成 REF. TESTSPL2 QCSRC2 */ /*-------------------------------------------------------------------*/ /*( QGYOLSPL に必要な変数 )*/ DCL VAR(&RCVVAR) TYPE(*CHAR) LEN(4800) DCL VAR(&RCVLEN) TYPE(*CHAR) LEN(4) + VALUE(X'000012C0') DCL VAR(&LISTINFO) TYPE(*CHAR) LEN(80) DCL VAR(&LISTSU) TYPE(*CHAR) LEN(4) + VALUE(X'00000001') DCL VAR(&NBRRCD) TYPE(*CHAR) LEN(4) + VALUE(X'00000003') DCL VAR(&SORT) TYPE(*CHAR) LEN(4) + VALUE(X'00000000') DCL VAR(&BIN1) TYPE(*CHAR) LEN(4) + VALUE(X'00000001') DCL VAR(&FILTER) TYPE(*CHAR) LEN(92) DCL VAR(&JOBINFO) TYPE(*CHAR) LEN(26) DCL VAR(&JOB) TYPE(*CHAR) LEN(10) DCL VAR(&USER) TYPE(*CHAR) LEN(10) DCL VAR(&NBR) TYPE(*CHAR) LEN(6) DCL VAR(&MSG) TYPE(*CHAR) LEN(132) DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) DCL VAR(&MSGF) TYPE(*CHAR) LEN(10) DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10) DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(132) DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) DCL VAR(&TOPGMQ) TYPE(*CHAR) LEN(10) DCL VAR(&MSGTYPE) TYPE(*CHAR) LEN(10) + VALUE('*ESCAPE ') DCL VAR(&APIERR) TYPE(*CHAR) LEN(116) + VALUE(X'000074') /* 2 進数 */ DCL VAR(&ERR) TYPE(*CHAR) LEN(1) DCL VAR(&NULL4) TYPE(*CHAR) LEN(4) + VALUE(X'00000000') DCL VAR(&SPC2) TYPE(*CHAR) LEN(2) DCL VAR(&BIN4) TYPE(*CHAR) LEN(4) DCL VAR(&RTNSU) TYPE(*DEC) LEN(5 0) DCL VAR(&RTNSUC) TYPE(*CHAR) LEN(5) MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) /*( 環境の取得 )*/ RTVJOBA JOB(&JOB) USER(&USER) NBR(&NBR) TYPE(&TYPE) IF COND(&TYPE *EQ '0') THEN(DO) /* バッチ */ CHGVAR VAR(&TOPGMQ) VALUE('*SYSOPR ') ENDDO /* バッチ */ ELSE CMD(DO) /* 対話式 */ CHGVAR VAR(&TOPGMQ) VALUE('*TOPGMQ ') ENDDO /* 対話式 */ /*( スプール・リストのオープン )*/ CHGVAR VAR(%SST(&LISTINFO 1 4)) VALUE(&LISTSU) CHGVAR VAR(&JOBINFO) VALUE(&JOB *CAT &USER *CAT + &NBR) CHGVAR VAR(&FILTER) + VALUE(&BIN1 *CAT &USER *CAT ' ' + *CAT &BIN1 *CAT '*ALL ' + *CAT '*ALL ' + *CAT '*ALL ' + *CAT &BIN1 *CAT '*READY ' + *CAT &BIN1 *CAT '*ALL ') CALL PGM(QGYOLSPL) PARM(&RCVVAR &RCVLEN &LISTINFO + &NBRRCD &SORT &FILTER &JOBINFO + 'OSPL0300' &APIERR) IF COND(%SST(&APIERR 5 4) *NE &NULL4) THEN(DO) SNDPGMMSG + MSG('API: QGYOLSPL の実行で次のエラーが発生 + しました。 ') MSGTYPE(*DIAG) GOTO APIERR ENDDO CHGVAR VAR(&BIN4) VALUE(%SST(&LISTINFO 1 4)) CHGVAR VAR(&RTNSU) VALUE(%BIN(&BIN4)) IF COND(&RTNSU *EQ 0) THEN(DO) /* + 戻り数がない */ CHGVAR VAR(&MSG) + VALUE(' 見つかったスプールはありません。 ') CHGVAR VAR(&MSGTYPE) VALUE('*DIAG ') GOTO ENDLIST ENDDO /* 戻り数がない */ IF COND(&RTNSU > 0) THEN(DO) /* 戻り数 >0 */ CHGVAR VAR(&RTNSUC) VALUE(&RTNSU) NXTDEC: IF COND(%SST(&RTNSUC 1 1) *EQ '0') THEN(DO) CHGVAR VAR(&RTNSUC) VALUE(%SST(&RTNSUC 2 4)) GOTO NXTDEC ENDDO ENDDO /* 戻り数 >0 */ CHGVAR VAR(&MSG) VALUE(&RTNSUC *TCAT + ' 個のスプールが見つかりました ') CHGVAR VAR(&MSGTYPE) VALUE('*DIAG ') ENDLIST: GOTO SNDMSG APIERR: CHGVAR VAR(&MSGID) VALUE(%SST(&APIERR 9 7)) CHGVAR VAR(&MSGDTA) VALUE(%SST(&APIERR 17 100)) IF COND(%SST(&MSGID 1 3) *EQ 'GUI') THEN(DO) CHGVAR VAR(&MSGF) VALUE('QGUIMSG ') ENDDO ELSE CMD(DO) CHGVAR VAR(&MSGF) VALUE('QCPFMSG ') ENDDO CHGVAR VAR(&MSGFLIB) VALUE('QSYS ') GOTO SNDMSG ERROR: RCVMSG MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) + MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) + MSGFLIB(&MSGFLIB) SNDMSG: IF COND(&MSGID *EQ ' ') THEN(DO) SNDPGMMSG MSGID(CPF9897) MSGF(QCPFMSG) MSGDTA(&MSG) + TOMSGQ(&TOPGMQ) MSGTYPE(&MSGTYPE) MONMSG MSGID(CPF2400) EXEC(RETURN) ENDDO ELSE CMD(DO) SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + MSGDTA(&MSGDTA) TOMSGQ(&TOPGMQ) + MSGTYPE(&MSGTYPE) MONMSG MSGID(CPF2400) EXEC(RETURN) ENDDO DSPJOBLOG JOB(*) OUTPUT(*PRINT) ENDPGM