ファイルからレコードを検索し、表示するファンクションを作成します。

処理対象ファイル

物理ファイル「CUSMST」(顧客マスター)

RDMLプログラム - その1

         GROUP_BY   NAME(#CUSTOMER) FIELDS(#CUSTNO #NAME #ADDL1 
               #ADDL2 #ADDL3)
    BEGIN_LOOP
L10 REQUEST    FIELD(#CUSTNO)
    FETCH      FIELDS(#CUSTOMER) FROM_FILE(CUSMST)
               WITH_KEY(#CUSTNO) NOT_FOUND(L10)
               ISSUE_MSG(*YES)
    DISPLAY    FIELDS(#CUSTOMER)
    END_LOOP

RDMLプログラム - その2

         GROUP_BY   NAME(#CUSTOMER) FIELDS(#CUSTNO #NAME #ADDL1 
               #ADDL2 #ADDL3)
    BEGIN_LOOP
    REQUEST    FIELD(#CUSTNO)
    FETCH      FIELDS(#CUSTOMER) FROM_FILE(CUSMST)
               WITH_KEY(#CUSTNO)
       IF_STATUS  IS(*OKAY)
       DISPLAY    FIELDS(#CUSTOMER)
       ELSE
       MESSAGE    MSGTXT('No customer exists with this number')
       ENDIF
    END_LOOP

着目点:

  • その1、その2とも、BEGIN_LOOP~END_LOOPのブロック内で、ファンクション・キーEXITまたはMENUが押されるまでの間、問い合わせに応じて検索結果を表示する、という処理を繰り返します。

  • ファンクション・キーEXITとMENUは、デフォルトでREQUEST/DISPLAY画面に表示されます。いずれかのキーを押すとファンクションは終了します。

  • プログラムその1では、FETCHコマンドのNOT_FOUNDパラメータ、ISSUE_MSGパラメータを使って、レコードが見つからない場合自動的にその旨のメッセージを表示した後、REQUESTコマンドに制御を戻すようにしています。

  • プログラムその2では、レコードが見つかったかどうかをIF_STATUSコマンドで判断しています。見つかった場合はその内容を表示し、見つからなかった場合はREQUEST画面の22/24行目にその旨のメッセージを表示します。

  • No labels