7.45.2 ENDCHECK についてのコメント/警告

BEGINCHECK/ENDCHECKブロックはネスト可能です。ただし、「内側」ブロックでエラーが検出された場合は、関連付けられたすべての「外側」ブロックでもエラーがトリガーされます。
これは、以下のように表すことができます。
BEGINCHECK      BEGINCHECK          BEGINCHECK           A validation error in this block will "trigger" a           validation error at all levels (marked by <).          ENDCHECK <      ENDCHECK    <- ENDCHECK        <-  
BEGINCHECK/ENDCHECKコマンドのネスト機能は、データ入力用のブラウズ・リストが含まれる画面を処理する場合に特に役立ちます。以下のようなデータ入力画面について考えます。

         受注番号 : 99999999                                     顧客番号 : 999999                                       納期    : 99/99/99                                                                                                 行                                                        No   製品     数量     価格                                  99   9999999  99999  99999.99                               99   9999999  99999  99999.99                               99   9999999  99999  99999.99                               99   9999999  99999  99999.99                               99   9999999  99999  99999.99                               99   9999999  99999  99999.99                     

この方法で入力されたデータを処理するRDMLプログラムは、以下のようになります。
    GROUP_BY   NAME(#ORDERHEAD) FIELDS(#ORDNUM #CUSTNUM #DATEDUE)     DEF_LIST   NAME(#ORDERLINE) FIELDS(#ORDLIN #PRODUCT #QUANTITY #PRICE)       SET_MODE   TO(*ADD)     INZ_LIST   NAMED(#ORDERLINE) NUM_ENTRYS(20) L1: REQUEST    FIELDS(#ORDERHEAD) BROWSELIST(#ORDERLINE)   BEGINCHECK       << validate order header details >>   SELECTLIST NAMED(#ORDERLINE) GET_ENTRYS(*NOTNULL) <-     BEGINCHECK                                      |     << validate order line details >>               |          IF_ERROR                                   |          UPD_ENTRY  IN_LIST(#ORDERLINE)             |          ENDIF                                      |     ENDCHECK   IF_ERROR(*NEXT)                      |                                                     | ENDSELECT ------------------------------------------       ENDCHECK IF_ERROR(*LASTDIS)     << update database >>  
「内側」のBEGINCHECK/ENDCHECKループでは、ユーザーが入力した各ブラウズ・リスト項目が処理されます。また、IF_ERROR(*NEXT)パラメータにより、SELECTLISTループですべてのブラウズ・リスト項目の処理が継続され、エラーの初回検出時にこのループが停止しないことに注意してください。
「外側」のBEGINCHECK/ENDCHECKコマンドでは、IF_ERROR(*LASTDIS)パラメータが指定されているため、妥当性検査エラーが検出されると、REQUESTコマンドが再実行されます。妥当性検査エラーは、以下の場合に「検出」されます。

または