制約違反の処理

制約には、検査保留の状況を持たせることができます。 検査保留の状況とは、レコード (行) 内のデータが制約に違反したことを意味します。 COBOL の入出力ステートメントの実行時は、システムが、制約違反の原因になる、レコードの挿入もしくは更新ができないようにします。 挿入もしくは更新が試みられるとファイル状況 9W (検査制約障害) かファイル状況 9R (参照制約障害) になります。 しかし、データがすでに存在しているところに制約を追加したり、古いデータを復元すると、制約違反を起こし、したがって、検査保留の状況になる可能性があります。

設定検査制約と使用可能検査制約の違反が生じると (状況は検査保留)、そのファイルからデータを読み取ることはできません。 更新のための読み取りが必要な、これらの挿入、更新、または削除操作の場合は、入出力操作は行われません。 それ以外では、挿入、更新、および削除操作が行われます。 検査制約違反が起きた後で再度ファイルから読み取るには、PF 制約変更 (CHGPFCST) コマンドを用いて、検査制約を使用不可にしなければなりません。

設定参照制約および使用可能参照制約の状況が検査保留になると、次のようになります。

制約が使用不可になった後で制約違反の原因を見つけるには、以下のいずれかの方法を使用することができます。