REWRITE ステートメントは、直接アクセス・ファイル内にある既存のレコードを論理的に置き換えます。 REWRITE ステートメントを実行するときは、関連する直接アクセス・ファイルは 入出力モードでオープンされていなければなりません。
REWRITE ステートメントは、行順次ファイルについてはサポートされていません。
MOVE identifier-1 TO record-name-1. REWRITE record-name-1
MOVE は、CORRESPONDING 句を指定しない MOVE ステートメントの規則に従って行われます。
ID-1 は、受け取り項目としてレコード名-1 が指定された、 MOVE ステートメントの規則に従う有効な送り出し項目でなければなりません。
ID-1 およびレコード名-1 は、同じストレージ域を参照することはできません。
REWRITE ステートメントの実行後も、ID-1 の中の情報は使用可能です (『共通の処理機能』にある INTO 句および FROM 句を参照)。
(『共通の処理機能』にある 無効キー条件を参照。)
INVALID KEY 条件は、次のいずれか場合に起こります。
この明示的範囲終了符号は、REWRITE ステートメントの範囲を区切るために使用されます。 END-REWRITE 句を使用することによって、 条件的な REWRITE ステートメントを他の条件ステートメントの中にネストすることができます。 END-REWRITE 句は、命令の REWRITE ステートメントと共に使用することもできます。
詳しくは、範囲区切りステートメントを参照してください。
REWRITE ステートメントが正常に実行されると、関連付けられたファイルが SAME RECORD AREA 文節の中で指定されていない限り、レコード名-1 の中の論理レコードはもはや使用可能ではありません (SAME RECORD AREA 文節で指定されている場合、レコードは、その SAME RECORD AREA 文節で指定されている他のファイルのレコードとしても使用可能です)。
ファイル位置標識は、REWRITE ステートメントの実行によって影響を受けることはありません。
ファイル制御項目内に FILE STATUS 文節が指定されている場合は、 関連するファイル状況キーが、REWRITE ステートメントの実行時に更新されます。
ファイルが順次アクセス・モードの場合、このファイルに対して最後に実行された前回の入出力ステートメントは、 正常に実行された READ ステートメントでなければなりません。 REWRITE ステートメントを実行すると、 READ ステートメントによって取り出されたレコードが論理的に置き換えられます。
レコード名-1 の中の文字位置の数は、置き換えられるレコードの中の文字位置の数と等しくなければなりません。
順次編成のファイルに対しては、INVALID KEY 句を指定することはできません。 EXCEPTION/ERROR プロシージャーを指定することはできます。
レコード名-1 の中の文字位置の数は、 置き換えられるレコードの中の文字位置の数と異なる数にすることができます。
順次アクセス・モードの場合、置き換えられるレコードは基本 RECORD KEY の中にある値によって指定されます。 REWRITE ステートメントを実行するときには、この値は、 このファイルから読み込まれた最後のレコードの中の基本 RECORD KEY データ項目の値と等しくなければなりません。
INVALID KEY 句および利用可能な EXCEPTION/ERROR プロシージャーは、両方とも省略することができます。
アクセス・モードがランダムかまたは動的であるとき、置き換えられるレコードは、 基本 RECORD KEY の中にある値によって指定されます。
書き直されるレコードの中の ALTERNATE RECORD KEY データ項目の値は、 置き換えられるレコードの中の値と異なるものにすることができます。システムは、 後でそのレコードにアクセスする際に、どのレコード・キーでも可能にします。
無効なキー条件が生じると、REWRITE ステートメントの実行は失敗し、 更新処理は行われません。この場合、レコード名-1 の中のデータは影響を受けません (『共通の処理機能』にある 無効キー条件を参照。)
レコード名-1 の中の文字位置の数は、 置き換えられるレコードの中の文字位置の数と異なる数にすることができます。
順次アクセス・モードの相対ファイルの場合、 INVALID KEY 句を指定することはできません。 EXCEPTION/ERROR プロシージャーを指定することはできます。
ランダム・アクセス・モードまたは動的アクセス・モードの相対ファイルの場合、 INVALID KEY 句または利用可能な EXCEPTION/ERROR プロシージャーは指定できません。 これらは、両方とも省略することができます。
アクセス・モードがランダムまたは動的である場合、置き換えられるレコードは、 RELATIVE KEY データ項目の中で指定します。ファイルに指定したレコードがない場合、無効なキー条件が生じ、 INVALID KEY 命令ステートメントが指定されていれば、それが実行されます。 (『共通の処理機能』にある 無効キー条件を参照。)この場合、更新処理は行われず、レコード名の中のデータは影響を受けません。