PGM /*-------------------------------------------------------------------*/ /* TESTDEVDE : 装置ジョブの取得 CLP */ /* */ /* 2016/03/10 作成 */ /*-------------------------------------------------------------------*/ 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(&APIERR) TYPE(*CHAR) LEN(116) + VALUE(X'000074') /* 2 進数 */ DCL VAR(&NULL4) TYPE(*CHAR) LEN(4) + VALUE(X'00000000') DCL VAR(&DEVD) TYPE(*CHAR) LEN(10) DCL VAR(&RCVVAR) TYPE(*CHAR) LEN(1024) DCL VAR(&RCVLEN) TYPE(*CHAR) LEN(4) + VALUE(X'00000400') DCL VAR(&JOB) TYPE(*CHAR) LEN(10) DCL VAR(&USER) TYPE(*CHAR) LEN(10) DCL VAR(&JOBNBR) TYPE(*CHAR) LEN(6) DCL VAR(&IPADDR) TYPE(*CHAR) LEN(15) MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) RTVJOBA JOB(&DEVD) TYPE(&TYPE) IF COND(&TYPE *EQ '0') THEN(DO) /* バッチ */ CHGVAR VAR(&TOPGMQ) VALUE('*SYSOPR ') ENDDO /* バッチ */ ELSE CMD(DO) /* 対話式 */ CHGVAR VAR(&TOPGMQ) VALUE('*TOPGMQ ') ENDDO /* 対話式 */ CALL PGM(QDCRDEVD) PARM(&RCVVAR &RCVLEN + 'DEVD0600' &DEVD &APIERR) IF COND(%SST(&APIERR 5 4) *NE &NULL4) THEN(DO) SNDPGMMSG + MSG('API: QDCRDEVD の実行で次のエラーが発生 + しました。 ') MSGTYPE(*DIAG) GOTO APIERR ENDDO CHGVAR VAR(&IPADDR) VALUE(%SST(&RCVVAR 877 15)) CHGVAR VAR(&JOB) VALUE(%SST(&RCVVAR 893 10)) CHGVAR VAR(&USER) VALUE(%SST(&RCVVAR 903 10)) CHGVAR VAR(&JOBNBR) VALUE(%SST(&RCVVAR 913 6)) SNDPGMMSG MSG('JOB=' *CAT &JOB) MSGTYPE(*DIAG) SNDPGMMSG MSG('USER=' *CAT &USER) MSGTYPE(*DIAG) SNDPGMMSG MSG('JOBNBR=' *CAT &JOBNBR) MSGTYPE(*DIAG) SNDPGMMSG MSG('IPADDR=' *CAT &IPADDR) MSGTYPE(*DIAG) RETURN APIERR: CHGVAR VAR(&MSGID) VALUE(%SST(&APIERR 9 7)) CHGVAR VAR(&MSGDTA) VALUE(%SST(&APIERR 17 100)) CHGVAR VAR(&MSGF) VALUE('QCPFMSG ') 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(*ESCAPE) ENDDO ELSE CMD(DO) SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + MSGDTA(&MSGDTA) TOMSGQ(&TOPGMQ) + MSGTYPE(*ESCAPE) ENDDO ENDPGM