索引付きファイル

順次アクセス・モードの場合には、ファイルに対して実行された最後の入出力ステートメントが、正常に実行された READ ステートメントでなければなりません。 置き換えられるレコードは、そのステートメントによって検索されたレコードです。RECORD KEY データ項目の値は、レコードが読み取られてから変更されていてはなりません。 値が変更されていると、INVALID KEY 条件が発生します。

ランダムまたは動的アクセス・モードの場合には、置き換えられるレコードは、RECORD KEY データ項目内の値によって指定されます。 ファイルに当該レコードがない場合には、INVALID KEY 条件が発生します。

EXCEPTION/ERROR プロシージャーがファイルに定義されていない場合は、INVALID KEY 句を指定しなければなりません。

索引付き編成のファイルについては、レコード名-1 の文字桁数は、置き換えられるレコードの文字桁数と異なっていても構いません。

IBM Extension

ファイルに対して EXTERNALLY-DESCRIBED-KEY が指定されているときには、FORMAT 句によって指定されている形式 (あるいは、FORMAT 句が使用されていない場合には、 最初の形式) に対応するレコード域内にあるキー・データが、RECORD KEY データ項目の現行値を決定するために使用されます。

WITH DUPLICATES 句がファイルに指定されている場合には、 すべてのアクセス・モード (順次、ランダム、動的) において、ファイルに対して実行された最後の入出力ステートメントが、 正常に実行された READ ステートメントでなければなりません。 置き換えられるレコードは、そのステートメントによって検索されたレコードです。RECORD KEY データ項目の値は、レコードが読み取られてから変更されていてはなりません。 値が変更されていると、INVALID KEY 条件が発生します。

注: 重複キーがファイル内にあるような場合に正しいレコードが置き換えられるようにするには、READ ステートメントが必要です。 重複キーを持つ一連のレコードのうちの特定の 1 つのレコードを再書き込みする唯一の方法は、 各レコードを順次に読み取り、識別したあとで、該当するレコードを再書き込みすることです。
End of IBM Extension