ここで紹介するサンブルCLPはコマンドで使用される
「プロンプト一時変更プログラム」である。
「プロンプト一時変更プログラム」というのは
コマンドの実行直前に呼び出されてコマンドのパラメータの
初期値をプログラムで与える。
例えばどこかに保存されているデータを読み取って
初期値として表示したり今日の日付や時刻を
初期値として表示することができる。
帳票などの出力を指定する画面はDSPFで作成するよりも
コマンドを使うようにしたほうが
インターフェースや操作も社内で統一することができる。
[CLP: AA4_SAMPLE]
ソースはこちらから
0001.00 PGM PARM(&CMDNAME &STRING) 0002.00 /*------------------------------------------------------------------------*/ 0003.00 /* AA4_SAMPLE : プロンプト一時変更プログラム */ 0004.00 /* -- このプログラムはコマンドの初期値を設定します。 */ 0005.00 /* &STRING に長さとパラメータの初期値を戻します。 */ 0006.00 /* */ 0007.00 /* 2019/12/01 作成 */ 0008.00 /*------------------------------------------------------------------------*/ 0009.00 DCL VAR(&CMDNAME) TYPE(*CHAR) LEN(20) 0010.00 DCL VAR(&STRING) TYPE(*CHAR) LEN(5700) 0011.00 DCL VAR(&STRINGLEN) TYPE(*DEC) LEN(8 0) VALUE(1024) 0012.00 DCL VAR(&BIN2) TYPE(*CHAR) LEN(2) VALUE(X'0400') + 0013.00 /* 長さ 1024 バイト */ 0014.00 DCL VAR(&BIN4) TYPE(*CHAR) LEN(4) 0015.00 DCL VAR(&MSG) TYPE(*CHAR) LEN(132) 0016.00 DCL VAR(&MSGID) TYPE(*CHAR) LEN(7) 0017.00 DCL VAR(&MSGF) TYPE(*CHAR) LEN(10) 0018.00 DCL VAR(&MSGFLIB) TYPE(*CHAR) LEN(10) 0019.00 DCL VAR(&MSGDTA) TYPE(*CHAR) LEN(132) 0020.00 DCL VAR(&TYPE) TYPE(*CHAR) LEN(1) 0021.00 DCL VAR(&TOPGMQ) TYPE(*CHAR) LEN(10) 0022.00 DCL VAR(&MSGTYPE) TYPE(*CHAR) LEN(10) + 0023.00 VALUE('*ESCAPE ') 0024.00 DCL VAR(&APIERR) TYPE(*CHAR) LEN(116) + 0025.00 VALUE(X'000074') /* 2 進数 */ 0026.00 DCL VAR(&NULL4) TYPE(*CHAR) LEN(4) + 0027.00 VALUE(X'00000000') 0028.00 /*--------------------------------------------------*/ 0029.00 /* 以下は装置の初期値パラメータ */ 0030.00 /*--------------------------------------------------*/ 0031.00 DCL VAR(&DEV_) TYPE(*CHAR) LEN(10) 0032.00 /*--------------------------------------------------*/ 0033.00 /* 以下は返信パラメータ */ 0034.00 /*--------------------------------------------------*/ 0035.00 DCL VAR(&DEV) TYPE(*CHAR) LEN(40) + 0036.00 VALUE(' ??DEV(') 0037.00 MONMSG MSGID(CPF0000) EXEC(GOTO CMDLBL(ERROR)) 0038.00 0039.00 /*( 環境の取得 )*/ 0040.00 RTVJOBA TYPE(&TYPE) 0041.00 IF COND(&TYPE *EQ '0') THEN(DO) /* バッチ */ 0042.00 CHGVAR VAR(&TOPGMQ) VALUE('*SYSOPR ') 0043.00 ENDDO /* バッチ */ 0044.00 ELSE CMD(DO) /* 対話式 */ 0045.00 CHGVAR VAR(&TOPGMQ) VALUE('*TOPGMQ ') 0046.00 ENDDO /* 対話式 */ 0047.00 0048.00 /* ************************************************ */ 0049.00 /* 返信パラメータの作成 */ 0050.00 /* ************************************************ */ 0051.00 CHGVAR VAR(&DEV) VALUE(&DEV *TCAT &WTR *TCAT ')') 0052.00 /* ************************************************ */ 0053.00 /* 返信ストリングの作成 */ 0054.00 /* ************************************************ */ 0055.00 CHGVAR VAR(&STRING) VALUE(&BIN2) /* 長さ */ 0056.00 CHGVAR VAR(&STRING) VALUE(&STRING *TCAT &DEV) 0057.00 RETURN 0058.00 0059.00 ERROR: /*( エラーがあったときは CPF0011 を *ESCAPE で戻す )*/ 0060.00 RCVMSG RMV(*NO) MSG(&MSG) 0061.00 SNDPGMMSG MSG(&MSG) MSGTYPE(*DIAG) 0062.00 SNDPGMMSG MSGID(CPF0011) MSGF(QCPFMSG) MSGTYPE(*ESCAPE) 0063.00 ENDPGM
[解説]
返信するパラメータ &DEV を作成して &STRING に付加して戻している。
さらに他のパラメータがあれば &STRING に追加するようにする。