Page History
[ |../../index.htm#lansa/endcheck_e.htm]
現在地:
...
7.45.3 ENDCHECK の使用例
...
例1:ユーザーに、製品番号、受注番号、および数量を入力するよう要求し、次にフィールドに対して妥当性検査を実行します。
| Code Block |
|---|
REQUEST FIELDS(#PRODNO #ORDNUM #QUANTITY) BEGINCHECK FILECHECK FIELD(#PRODNO) |
...
USING_FILE(PRODUCT) |
...
MSGTXT(' |
...
Product number not found in product master') RANGECHECK FIELD(#ORDNUM) |
...
RANGE(A000000 Z999999) MSGTXT('Order number is not in range A000000 - Z999999')
RANGECHECK FIELD(#QUANTITY) RANGE(1 9999) MSGTXT('Quantity ordered must be in range 1 - 9999')
ENDCHECK |
ENDCHECKコマンドではデフォルト値IF_ERROR(*LASTDIS)が指定されているため、以下のように指定しても同じ結果が得られます。 REQUEST FIELDS(#PRODNO #ORDNUM #QUANTITY)
| Code Block |
|---|
REQUEST FIELDS(#PRODNO #ORDNUM #QUANTITY) L1: BEGINCHECK |
...
FILECHECK FIELD(#PRODNO) |
...
USING_FILE(PRODUCT) |
...
MSGTXT(' |
...
Product number not found in product master') RANGECHECK FIELD(#ORDNUM) |
...
RANGE(A000000 Z999999) MSGTXT('Order number is not in range A000000 - Z999999') RANGECHECK FIELD(#QUANTITY) RANGE(1 9999) MSGTXT('Quantity ordered must be in range 1 - 9999') ENDCHECK IF_ERROR(L1) |
例2:デフォルト値例2:デフォルト値*LASTDISを指定すると、以下の例に示すように、実際には「このネスト・レベル(またはそれ以上のレベル)で直前に表示された画面」が使用されます。
| Code Block |
|---|
...
REQUEST FIELDS(#FIELD01) |
...
<----------------------------- |
...
IF COND(' |
...
#FIELD01 *LT 10') |
...
| REQUEST FIELDS(#FIELD02) |
...
<------------ |
...
| BEGINCHECK | | RANGECHECK FIELD(#FIELD01) |
...
RANGE(5 9) | | RANGECHECK FIELD(#FIELD02) |
...
RANGE(10 20) | | ENDCHECK --------------------------------- |
...
| ELSE | BEGINCHECK | RANGECHECK FIELD(#FIELD01) |
...
RANGE(15 19) | ENDCHECK -------------------------------------- |
...
ENDIF |
矢印は、いずれかのENDCHECKコマンドの妥当性検査ブロック内で妥当性検査エラーが検出された場合に制御が渡される先を示しています。
この例をそのままコーディングすると、ユーザーがFIELD01に指定した値が10未満であっても、5~9の範囲内にない場合、ユーザーにFIELD01のエラーを修正する機会が与えられないため、実用性に欠けます。この場合、エラー・メッセージが画面の22/24行目に表示されますが、FIELD01は表示されないため、修正することができません。
この例は、以下のようにコーディングすることにより改善できます。 REQUEST FIELDS
| Code Block |
|---|
REQUEST FIELDS(#FIELD01) |
...
<---------------- |
...
BEGINCHECK | IF COND(' |
...
#FIELD01 *LT 10') |
...
| RANGECHECK FIELD(#FIELD01) |
...
RANGE(5 9) | ELSE | RANGECHECK FIELD(#FIELD01) |
...
RANGE(15 19) | ENDIF | ENDCHECK -------------------------------------- |
...
IF COND(' |
...
#FIELD01 *LT 10') REQUEST FIELDS(#FIELD02) |
...
<------------- |
...
BEGINCHECK | RANGECHECK FIELD(#FIELD02) |
...
RANGE(10 20) | ENDCHECK ---------------------------------- ELSE |
...
ENDIF |