自動生成サブルーチン #disp_record_CHECKについて
#disp_record_CHECKは入力チェックのサブルーチンです。
画面設計の[入力チェック]のオウンコードをサブルーチンにします。
一例として入力チェックのオウンコードと、生成後のRPGコードを紹介します。
[入力チェックのオウンコード]
=======================================
//必須チェック
IF %FIELD = *BLANK;
MSG = '%ITEMを入力してください';
EXSR #MSG;
*IN90 = *ON;
%PC = *ON;
%ATR = X'35';
ENDIF;
//マスタチェック
%FIELDN = *BLANK;
IF %FIELD <> *BLANK;
EXEC SQL SELECT * INTO DS_TKMP FROM TKMP
WHERE TKCDTK = :%FIELD;
IF SQLCODE = *ZERO;
%FIELDN = TKNMTK; //得意先名 文字 32
ELSE;
MSG = '%ITEMが得意先マスタに見つかりません';
EXSR #MSG;
*IN90 = *ON;
%PC = *ON;
%ATR = X'35';
ENDIF;
ENDIF;
=======================================
[生成後のRPGコード]
=======================================
0182 //--------------------------------------------------------------------
0183 // #DSP04_CHECK 入力チェック
0184 //--------------------------------------------------------------------
0185 BEGSR #DSP04_CHECK;
0186 //表示属性初期化
0187 EXSR #DSP04_INITATR;
0188 //
0189 *IN90 = *OFF;
0190 // 得意先コード 入力チェック----------------------------
0191 //必須チェック
0192 IF D4CDTK = *BLANK;
0193 MSG = '得意先コードを入力してください';
0194 EXSR #MSG;
0195 *IN90 = *ON;
0196 *IN31 = *ON;
0197 D4P31 = X'35';
0198 ENDIF;
0199 //マスタチェック
0200 D4NMTK = *BLANK;
0201 IF D4CDTK <> *BLANK;
0202 EXEC SQL SELECT * INTO DS_TKMP FROM TKMP
0203 WHERE TKCDTK = :D4CDTK;
0204 IF SQLCODE = *ZERO;
0205 D4NMTK = TKNMTK; //得意先名 文字 32
0206 ELSE;
0207 MSG = '得意先コードが得意先マスタに見つかりません';
0208 EXSR #MSG;
0209 *IN90 = *ON;
0210 *IN31 = *ON;
0211 D4P31 = X'35';
0212 ENDIF;
0213 ENDIF;
0214 ENDSR;
=======================================
ASSGコードの[%]で始まる置換式が、RPGコードでフィールド名や標識に置換されていることを確認してください。
上記のASSGコードで使用している置換式
%FIELD:フィールド名
%FIELDN:次のフィールド名
%ITEM:項目名称
%PC:カーソル標識
%ATR:Pフィールド
同一のASSGコードを異なる画面フィールドに使用しても、正しいフィールド名や標識に置換されます。
さらに共通メモに登録しておけば、短時間で間違いのないコーディングが可能になります。
今回は以上です。