自動生成サブルーチン #disp_record_SEARCHについて

#disp_record_SEARCHは検索のサブルーチンです。

画面設計の[検索]のオウンコードをサブルーチンにします。

一例として検索のオウンコードと、生成後のRPGコードを紹介します。

[検索のオウンコード]

=======================================

CALLP SRCTOK
(SRCTOK_TCD:SRCTOK_TNM:SRCTOK_RTN);
IF SRCTOK_RTN = *BLANK; //リターンコード A 1
 %FIELD = SRCTOK_TCD; //得意先コード A 4
 %FIELDN = SRCTOK_TNM; //得意先名 A 32
 %PCN = *ON;
ELSE;
 %PC = *ON;
ENDIF; 

=======================================

[生成後のRPGコード]

=======================================

0215 //--------------------------------------------------------------------
0216 // #DSP04_SEARCH 検索
0217 //--------------------------------------------------------------------
0218 BEGSR #DSP04_SEARCH;
0219  EXSR #DSP04_INITATR;
0220  //
0221  //カーソル位置
0222  WLIN = WSLIN / 256;
0223  WCOL = %REM(WSLIN:256);
0224  //得意先コード検索----------------------------
0225  IF WLIN= 3 AND WCOL >= 21 AND WCOL <= 24;
0226   CALLP SRCTOK
0227   (SRCTOK_TCD:SRCTOK_TNM:SRCTOK_RTN);
0228   IF SRCTOK_RTN = *BLANK; //リターンコード A 1
0229    D4CDTK = SRCTOK_TCD; //得意先コード A 4
0230    D4NMTK = SRCTOK_TNM; //得意先名 A 32
0231    *IN32 = *ON;
0232   ELSE;
0233    *IN31 = *ON;
0234   ENDIF;
0235   LEAVESR;
0236  ENDIF;
0237 ENDSR;

=======================================

置換式については#disp_record_CHECKと同様です。

 自動生成では、カーソル位置の判定が組み込まれます。

0222-0223で検索キーを押したときのカーソル位置を取得します。

0225でフィールド位置を判定し、該当した場合に検索コードを実行します。

 

フィールドの位置を移動して検索ができなくなった、というミスを防ぐことができます。

今回は以上です。