Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

[ Image Removed |../../index.htm#lansa/valuecheck_e.htm]
現在地:

...

7.128.2 VALUECHECK の使用例

インライン妥当性検査を実行するようファンクションを構築する

妥当性検査サブルーチンを使用するようファンクションを構築する

VALUECHECKコマンドを使用してインライン妥当性検査を実行する

VALUECHECKコマンドを使用してサブルーチンによる妥当性検査を実行する

Anchor
VALUE_CHECK_EX1
VALUE_CHECK_EX1
インライン妥当性検査を実行するようファンクションを構築する

通常、インライン妥当性検査を実行する場合、妥当性検査コマンド(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    

     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)パラメータが指定されるためです。

Anchor
VALUE_CHECK_EX2
VALUE_CHECK_EX2
妥当性検査サブルーチンを使用するようファンクションを構築する

通常、サブルーチンによる妥当性検査を実行する場合、妥当性検査コマンド(CONDCHECK、DATECHECK、FILECHECK、RANGECHECK、VALUECHECKなど)を使用するファンクションを以下のように構築します。
DEFINE    FIELDを使用するファンクションを以下のように構築します。 

     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で制御が戻されます。 0で制御が戻されます。 

Anchor
VALUE_CHECK_EX3
VALUE_CHECK_EX3
VALUECHECKコマンドを使用してインライン妥当性検査を実行する

この例は、メイン・プログラム・ブロック内でVALUECHECKコマンドを使用して、部門コードが一連の値のいずれかであることを検査する方法を示しています。 この例は、メイン・プログラム・ブロック内でVALUECHECKコマンドを使用して、部門コードが一連の値のいずれかであることを検査する方法を示しています。 

     DEF_

...

LIST  NAME(#EMPBROWSE)

...

 FIELDS(#EMPNO #DEPTMENT)        

BEGIN_LOOP
REQUEST   FIELDS(#EMPNO #DEPTMENT) BROWSELIST(#EMPBROWSE)       

BEGINCHECK
VALUECHECK FIELD(#DEPTMENT) WITH_LIST(ADM AUD FLT GAC) MSGTXT('The department code entered is not valid')
ENDCHECK        

ADD_ENTRY TO_LIST(#EMPBROWSE)
END_LOOP

#DEPTMENTの値が、'WITH_LIST'パラメータで指定された値リストに含まれていない場合、VALUECHECKコマンドで定義されたメッセージが発行され、直前に表示されていた画面にプログラム制御が戻されます。この例では、直前に表示されていた画面はREQUEST画面です。 パラメータで指定された値リストに含まれていない場合、VALUECHECKコマンドで定義されたメッセージが発行され、直前に表示されていた画面にプログラム制御が戻されます。この例では、直前に表示されていた画面はREQUEST画面です。 

Anchor
VALUE_CHECK_EX4
VALUE_CHECK_EX4
VALUECHECKコマンドを使用してサブルーチンによる妥当性検査を実行する

この例は、サブルーチン内でVALUECHECKコマンドを使用して、部門コードが一連の値に含まれていることを検査する方法を示しています。 この例は、サブルーチン内でVALUECHECKコマンドを使用して、部門コードが一連の値に含まれていることを検査する方法を示しています。 

ユーザーが要求された詳細を入力すると、VALIDATEサブルーチンが呼び出されます。このサブルーチンでは、#DEPTMENTの値が、'WITH_LIST'パラメータで指定された一連の値に含まれているかどうかが検査されます。含まれていない場合、VALUECHECKコマンドで定義されたメッセージが発行され、DOUNTILループが再実行されます。入力された#DEPTMENT値が指定の一連の値に含まれている場合、DOUNTILループが終了し、検証済みの入力の処理が実行されます。
DEFINE    FIELDパラメータで指定された一連の値に含まれているかどうかが検査されます。含まれていない場合、VALUECHECKコマンドで定義されたメッセージが発行され、DOUNTILループが再実行されます。入力された#DEPTMENT値が指定の一連の値に含まれている場合、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 #DEPTMENT)        

BEGIN_LOOP
DOUNTIL   COND(*NOERRORS)

...


REQUEST   FIELDS(#EMPNO #DEPTMENT) 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)

...


VALUECHECK FIELD(#DEPTMENT)

...

 WITH_LIST(

...

ADM AUD FLT GAC) MSGTXT('The department code entered is not valid')
ENDCHECK  IF_ERROR(*NEXT)

...

        

ENDROUTINE