PGM PARM(&PRM001 &PRM002) /*--------------------------------------------------------------------------*/ /* TESTPRM2 : パラメータのテスト */ /* */ /* 2021/10/13 作成 SRCTYPE: CLLE */ /* */ /* CRTBNDCL PGM(TEST.COM/TESTPRM2) SRCFILE(R610SRC/QCLSRC) DFTACTGRP(*NO) */ /* ACTGRP(*NEW) AUT(*ALL) DBGVIEW(*SOURCE) */ /* */ /*--------------------------------------------------------------------------*/ DCL VAR(&PRM001) TYPE(*CHAR) LEN(10) DCL VAR(&PRM002_P) TYPE(*PTR) DCL VAR(&PRM002) TYPE(*CHAR) STG(*BASED) LEN(10) + BASPTR(&PRM002_P) 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(&NULL4) TYPE(*CHAR) LEN(4) + VALUE(X'00000000') DCL VAR(&NULL) TYPE(*CHAR) LEN(10) + VALUE(X'00000000000000000000') /*( CEERSTA の変数 )*/ DCL VAR(&PARMS) TYPE(*INT) LEN(4) DCL VAR(&ARGNUM) TYPE(*INT) LEN(4) VALUE(1) 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 /* 対話式 */ /*( 入力パラメータの検査 )*/ CALLPRC PRC(CEETSTA) PARM((&PARMS) (&ARGNUM)) IF COND(&PARMS *EQ 1) THEN(DO) /* パラメータが存在する */ SNDPGMMSG MSG(' パラメータあり ') MSGTYPE(*DIAG) ENDDO ELSE CMD(DO) /* パラメータが存在しない = CGI である */ SNDPGMMSG MSG(' パラメータなし ') MSGTYPE(*DIAG) ENDDO 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(&MSGTYPE) ENDDO ELSE CMD(DO) SNDPGMMSG MSGID(&MSGID) MSGF(&MSGFLIB/&MSGF) + MSGDTA(&MSGDTA) TOMSGQ(&TOPGMQ) + MSGTYPE(&MSGTYPE) ENDDO ENDPGM