自動生成サブルーチン #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コードを異なる画面フィールドに使用しても、正しいフィールド名や標識に置換されます。

さらに共通メモに登録しておけば、短時間で間違いのないコーディングが可能になります。

 

今回は以上です。