PGM PARM(&DEV &IPADDR &PDT &SMBLOGIN &PRINTER + &LPRLOGIN &OUTQQLIB &MSGQQLIB &OPTION + &OUTIFS &PAGESIZEP &FONTINFOP &DRAWER + &DUPLEX &COPIES &CODEPAGE &TEXT &AUT + &ERRMSG) /*-------------------------------------------------------------------*/ /* AA5_SAMPLE: コマンドの妥当性検査プログラム VLDCKR */ /* */ /* 2019/12/13 作成 */ /*-------------------------------------------------------------------*/ DCL VAR(&DEV) TYPE(*CHAR) LEN(10) DCL VAR(&IPADDR) TYPE(*CHAR) LEN(15) DCL VAR(&PDT) TYPE(*CHAR) LEN(32) DCL VAR(&SMBLOGIN) TYPE(*CHAR) LEN(128) DCL VAR(&PRINTER) TYPE(*CHAR) LEN(32) DCL VAR(&LPRLOGIN) TYPE(*CHAR) LEN(64) DCL VAR(&OUTQQLIB) TYPE(*CHAR) LEN(20) DCL VAR(&OUTQ) TYPE(*CHAR) LEN(10) DCL VAR(&OUTLIB) TYPE(*CHAR) LEN(10) DCL VAR(&MSGQWLIB) TYPE(*CHAR) LEN(20) DCL VAR(&MSGQQLIB) TYPE(*CHAR) LEN(20) DCL VAR(&MSGQ) TYPE(*CHAR) LEN(10) DCL VAR(&MSGQLIB) TYPE(*CHAR) LEN(10) DCL VAR(&OPTION) TYPE(*CHAR) LEN(6) DCL VAR(&OUTIFS) TYPE(*CHAR) LEN(128) DCL VAR(&PAGESIZEP) TYPE(*CHAR) LEN(19) DCL VAR(&PAGESIZE) TYPE(*CHAR) LEN(17) DCL VAR(&FONTINFOP) TYPE(*CHAR) LEN(18) DCL VAR(&FONTINFO) TYPE(*CHAR) LEN(16) DCL VAR(&DRAWER) TYPE(*CHAR) LEN(2) DCL VAR(&DUPLEX) TYPE(*CHAR) LEN(1) DCL VAR(&COPIES) TYPE(*CHAR) LEN(2) DCL VAR(&CODEPAGE) TYPE(*CHAR) LEN(5) DCL VAR(&TEXT) TYPE(*CHAR) LEN(50) DCL VAR(&AUT) TYPE(*CHAR) LEN(10) DCL VAR(&ERRMSG) TYPE(*CHAR) LEN(4) 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(&ERR) TYPE(*CHAR) LEN(1) DCL VAR(&NULL4) TYPE(*CHAR) LEN(4) + VALUE(X'00000000') MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) /*( 環境の取得 )*/ RTVJOBA TYPE(&TYPE) IF COND(&TYPE *EQ '0') THEN(DO) /* バッチ */ CHGVAR VAR(&TOPGMQ) VALUE('*SYSOPR ') ENDDO /* バッチ */ ELSE CMD(DO) /* 対話式 */ CHGVAR VAR(&TOPGMQ) VALUE('*TOPGMQ ') ENDDO /* 対話式 */ /*( 入力パラメータの検査 )*/ IF COND(&PRINTER *EQ ' ') THEN(DO) CHGVAR VAR(&MSG) + VALUE(' プリンター名が入力されていません。 ') GOTO SNDMSG ENDDO /*( プログラムの実行 )*/ CALL PGM(MYPGM) PARM(&ERR &MSG) IF COND(&ERR *EQ ' ') THEN(DO) CHGVAR VAR(&MSGTYPE) VALUE('*DIAG ') ENDDO IF COND(&MSG *NE ' ') THEN(DO) GOTO SNDMSG ENDDO ERROR: RCVMSG MSGTYPE(*LAST) RMV(*NO) MSG(&MSG) + MSGDTA(&MSGDTA) MSGID(&MSGID) MSGF(&MSGF) + SNDMSGFLIB(&MSGFLIB) SNDMSG: CHGVAR VAR(&MSGDTA) VALUE('0000' *CAT &MSG) /*( 妥当性検査のエラーは最初に CPD0006 を戻します )*/ SNDPGMMSG MSGID(CPD0006) MSGF(QCPFMSG) MSGDTA(&MSGDTA) + MSGTYPE(*DIAG) MONMSG MSGID(CPF2400) EXEC(RETURN) /*( 妥当性検査のエラーは CPF0002 を戻します )*/ SNDPGMMSG MSGID(CPF0002) MSGF(QCPFMSG) MSGTYPE(*ESCAPE) ENDPGM