[ |../../index.htm#lansa/filecheck_e.htm]
現在地:

7.61.3 FILECHECK の使用例

インライン妥当性検査を実行するようにファンクションを構築する
妥当性検査サブルーチンを使用するようにファンクションを構築する
FILECHECKコマンドを使用してインライン妥当性検査を実行する
FILECHECKコマンドを使用してサブルーチンによる妥当性検査を実行する
インライン妥当性検査を実行するようにファンクションを構築する
通常、インライン妥当性検査を実行する場合、妥当性検査コマンド(CONDCHECK、DATECHECK、FILECHECK、RANGECHECK、VALUECHECKなど)を使用するファンクションを以下のように構築します。
BEGIN_LOOP  REQUEST    << INPUT >> BEGINCHECK  * << USE CHECK COMMANDS TO VALIDATE INPUT HERE >> ENDCHECK    * << PROCESS THE VALIDATED INPUT HERE >> END_LOOP  
BEGINCHECK/ENDCHECKコマンド・ブロック内の妥当性検査コマンドが妥当性検査エラーを検出すると、REQUESTコマンドに制御が戻されます。これは、ENDCHECKコマンドでデフォルトのIF_ERROR(*LASTDIS)パラメータが指定されるためです。
妥当性検査サブルーチンを使用するようにファンクションを構築する
通常、サブルーチンによる妥当性検査を実行する場合、妥当性検査コマンド(CONDCHECK、DATECHECK、FILECHECK、RANGECHECK、VALUECHECKなど)を使用するファンクションを以下のように構築します。
DEFINE     FIELD(#ERRORCNT) REFFLD(#STD_NUM) DEF_COND   NAME(*NOERRORS) COND('#ERRORCNT = 0')             BEGIN_LOOP  DOUNTIL    COND(*NOERRORS) REQUEST    << INPUT >> EXECUTE    SUBROUTINE(VALIDATE) ENDUNTIL    * << PROCESS THE VALIDATED INPUT HERE >> END_LOOP                SUBROUTINE NAME(VALIDATE) CHANGE     FIELD(#ERRORCNT) TO(0) BEGINCHECK KEEP_COUNT(#ERRORCNT) * << USE CHECK COMMANDS TO VALIDATE INPUT HERE >> ENDCHECK   IF_ERROR(*NEXT) ENDROUTINE  
BEGINCHECK/ENDCHECKコマンド・ブロック内の妥当性検査コマンドが妥当性検査エラーを検出すると、メイン・ファンクション・ループに#ERRORCNT > 0で制御が戻されます。
FILECHECKコマンドを使用してインライン妥当性検査を実行する
この例は、メイン・プログラム・ブロック内でFILECHECKコマンドを使用して、従業員番号を人事ファイル内の項目と照合する方法を示しています。
DEF_LIST   NAME(#EMPBROWSE) FIELDS(#EMPNO #GIVENAME #SURNAME)             BEGIN_LOOP  REQUEST    FIELDS(#EMPNO #GIVENAME #SURNAME) BROWSELIST(#EMPBROWSE)             BEGINCHECK  FILECHECK  FIELD(#EMPNO) USING_FILE(PSLMST) FOUND(*ERROR) NOT_FOUND(*NEXT) MSGTXT('Employee number supplied already exists') ENDCHECK                ADD_ENTRY  TO_LIST(#EMPBROWSE) END_LOOP  
ファイルPSLMST内で値#EMPNOが見つかった場合、FILECHECKコマンドで定義されたメッセージが発行され、直前に表示されていた画面にプログラム制御が戻されます。この例では、直前に表示されていた画面はREQUEST画面です。
FILECHECKコマンドを使用してサブルーチンによる妥当性検査を実行する
この例は、サブルーチン内でFILECHECKコマンドを使用して、従業員番号を人事ファイル内の項目と照合する方法を示しています。
ユーザーが要求された詳細を入力すると、VALIDATEサブルーチンが呼び出されます。このサブルーチンは、値#EMPNOがPSLMSTファイル内にすでに存在しているかどうかを検査します。存在する場合、FILECHECKコマンドで定義されたメッセージが発行され、DOUNTILループが再実行されます。入力された#EMPNO値がファイル内で見つからない場合、DOUNTILループが終了し、検証済みの入力の処理が実行されます。
DEFINE     FIELD(#ERRORCNT) TYPE(*DEC) LENGTH(3) DECIMALS(0) DEFAULT(0) DEF_COND   NAME(*NOERRORS) COND('#ERRORCNT = 0') DEF_LIST   NAME(#EMPBROWSE) FIELDS(#EMPNO #GIVENAME #SURNAME)             BEGIN_LOOP  DOUNTIL    COND(*NOERRORS) REQUEST    FIELDS(#EMPNO #GIVENAME #SURNAME) BROWSELIST(#EMPBROWSE) EXECUTE    SUBROUTINE(VALIDATE) ENDUNTIL    ADD_ENTRY  TO_LIST(#EMPBROWSE) END_LOOP                SUBROUTINE NAME(VALIDATE) CHANGE     FIELD(#ERRORCNT) TO(0)             BEGINCHECK KEEP_COUNT(#ERRORCNT) FILECHECK  FIELD(#EMPNO) USING_FILE(PSLMST) FOUND(*ERROR) NOT_FOUND(*NEXT) MSGTXT('Employee number supplied already exists') ENDCHECK   IF_ERROR(*NEXT)             ENDROUTINE  
[ |../../index.htm#lansa/filecheck_e.htm]