自動生成サブルーチン #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でフィールド位置を判定し、該当した場合に検索コードを実行します。
フィールドの位置を移動して検索ができなくなった、というミスを防ぐことができます。
今回は以上です。