PGM PARM(&DTAQQLIB) /*---------------------------------------------------------*/ /* MONOUTQCL : OUTQ 監視プログラム */ /*---------------------------------------------------------*/ DCL VAR(&MSG) TYPE(*CHAR) LEN(132) DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) DCL VAR(&DTAQQLIB) TYPE(*CHAR) LEN(20) DCL VAR(&DTAQ) TYPE(*CHAR) LEN(10) DCL VAR(&DTALIB) TYPE(*CHAR) LEN(10) DCL VAR(&JOBINFO) TYPE(*CHAR) LEN(26) DCL VAR(&WAIT) TYPE(*DEC) LEN(5 0) VALUE(99999) + /* 永続待機 */ DCL VAR(&RCVDTA) TYPE(*CHAR) LEN(128) DCL VAR(&SPLF) TYPE(*CHAR) LEN(128) DCL VAR(&JOB) TYPE(*CHAR) LEN(10) DCL VAR(&USER) TYPE(*CHAR) LEN(10) DCL VAR(&JOBNBR) TYPE(*CHAR) LEN(6) DCL VAR(&OUTQQLIB) TYPE(*CHAR) LEN(20) DCL VAR(&OUTQ) TYPE(*CHAR) LEN(10) DCL VAR(&OUTLIB) TYPE(*CHAR) LEN(10) DCL VAR(&SPLNBR) TYPE(*CHAR) LEN(4) DCL VAR(&SPLNO) TYPE(*DEC) LEN(4 0) DCL VAR(&PDF) TYPE(*CHAR) LEN(32) /* + PDF ファイル名 */ MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) RTVJOBA TYPE(&TYPE) CHGVAR VAR(&DTAQ) VALUE(%SST(&DTAQQLIB 01 10)) CHGVAR VAR(&DTALIB) VALUE(%SST(&DTAQQLIB 11 10)) /*( 1 ) データ待ち行列から情報を取得 */ READ: CALL PGM(QRCVDTAQ) PARM(&DTAQ &DTALIB 128 + &RCVDTA &WAIT) CHGVAR VAR(&JOBINFO) VALUE(%SST(&RCVDTA 13 26)) CHGVAR VAR(&SPLF) VALUE(%SST(&RCVDTA 39 10)) CHGVAR VAR(&SPLNBR) VALUE(%SST(&RCVDTA 49 4)) CHGVAR VAR(&OUTQQLIB) VALUE(%SST(&RCVDTA 53 20)) CHGVAR VAR(&JOB) VALUE(%SST(&JOBINFO 01 10)) CHGVAR VAR(&USER) VALUE(%SST(&JOBINFO 11 10)) CHGVAR VAR(&JOBNBR) VALUE(%SST(&JOBINFO 21 6)) CHGVAR VAR(&SPLNO) VALUE(%BIN(&SPLNBR)) CHGVAR VAR(&OUTQ) VALUE(%SST(&OUTQQLIB 01 10)) CHGVAR VAR(&OUTLIB) VALUE(%SST(&OUTQQLIB 11 10)) /*( 2 ) 印刷スプールを SPOOL ライターによって PDF 化する */ /* ( SPLNO は *LAST を指定してもよい ) */ /* ( 印刷スプールは別の PC サーバーへ転送することもできる )*/ CHGVAR VAR(&PDF) VALUE(&SPLF *TCAT '.PDF') SPOOLWTR/CVTSPLF SPLF(&SPLF) JOB(&JOBNBR/&USER/&JOB) + SPLNO(&SPLNO) OUTPUT(*PDF) OPTION(*IFS) + TOSTMF(&PDF) TODIR('/A001') /*( 3 ) PDF 化した印刷スプールを削除する */ /* ( スプール・ファイルは削除しなくても処理は重複しない )*/ DLTSPLF FILE(&SPLF) JOB(&JOBNBR/&USER/&JOB) + SPLNBR(&SPLNO) GOTO READ ERROR: RCVMSG MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) SNDMSG: IF COND(&TYPE *EQ '0') THEN(DO) SNDPGMMSG MSG(&MSG) TOMSGQ(*SYSOPR) MSGTYPE(*COMP) ENDDO ELSE CMD(DO) SNDPGMMSG MSG(&MSG) TOMSGQ(*TOPGMQ) MSGTYPE(*DIAG) ENDDO ENDPGM