REWRITE(書き換え)文は、ディスク ファイル中に存在するレコードを論理的に置き換える。
一般形式 
形式 1 (行順編成ファイル) 
形式 2 (レコード順編成ファイル) 
形式 3 (相対ファイルおよび索引ファイル) 
予約語リストにフラグを付けたり修正したりするコンパイラ指令に加えて、下記の指令によって、この項に記述した構文または意味が影響を受ける可能性がある。
WRITE-LOCK - 複数のレコード ロックを使用するときに、REWRITE文用のレコード ロックを取得する。 
 
 
下記のランタイム スイッチによって、この項に記述した意味が影響を受ける可能性がある。
N - 行順レコードを書くときに、制御文字の前の空文字の挿入を制御する。
 
  
T - 行順レコードを書くときに、タブ文字の挿入を制御する。 
   
 
構文規則 
すべての形式 (すべてのファイル) 
 レコード名と一意名が、同じ記憶領域を指してはならない。
 
レコード名は、データ部のファイル節の中の論理レコードの名前である。レコード名は修飾してもよい。
 
 
 
  
 
形式 3 (相対ファイルおよび索引ファイル) 
順呼び出し法でファイルを処理している場合には、REWRITE文にはINVALID KEYを指定できない。
 
 
乱呼び出し法または動的呼び出し法でファイルを処理しているが、そのファイルに適用できるUSE手続きを指定していない場合には、REWRITE文にINVALID KEYを指定する。  
 
一般規則 
すべての形式 (すべてのファイル) 
手続き部 OPEN(開く)文OPEN(開く)文  節を参照。)
 
ファイルを順呼び出し法で処理している場合、REWRITE文を実行する前に実行した直前の入出力文は、正常に終了したREAD文でなければならない。オペレーティング システムは、READ文によって呼び出されたレコードを論理的に置き換える。
 
FROM指定をしたREWRITE文を実行することは、
 MOVE 一意名 TO レコード名 
を実行し、それからFROM指定をしないREWRITE文を実行することと同じである。暗黙のMOVE文が実行される前のレコード領域の内容は、REWRITE文の実行に影響を及ぼさない。
 
ファイル位置指示子は、REWRITE文の実行の影響を受けない。
 
REWRITE文を実行すると、更新対象のファイルに対応するFILE STATUSデータ項目を指定してあれば、その値が更新される。 (手続き部 入出力状態 
 
 
 
  
 
形式 1 および 2 (順編成ファイル) 
レコード名のレコードの文字数は、新しい書き換え用のレコードの文字数と等しくする。 
  注:  圧縮された順編成ファイルにはREWRITE文を使用しないように勧める。その理由は、圧縮された新しいレコードの長さが圧縮された古いレコードの長さと同じでないと、REWRITE処理は正常に終了しないからである。
 
REWRITE文の実行が正常に終了すると、レコード領域中の論理レコードは解放され、利用できなくなる。ただし、対応するファイルを SAME RECORD AREA句に指定しておけば、利用できる。この場合、その論理レコードは 
 
形式 1 (行順編成ファイル)  
  
 
形式 3 (相対ファイルおよび索引ファイル) 
 REWRITE文の実行が正常に終了すると、レコード領域中の論理レコードは解放され、利用できなくなる。ただし、対応するファイルをSAME RECORD AREA句に指定しておけば、利用できる。この場合、その論理レコードは、 
 
形式 3 (相対ファイル) 
手続き部 無効キー条件  
 
形式 3 (索引ファイル) 
 
乱呼び出し法または動的呼び出し法で処理しているファイルに関しては、書き換える対象のレコードは主レコードキー データ項目の値によって指定する。
 
これから書き換えられるレコードの副レコードキー データ項目の内容は、置き換える側のものと違っていても構わない。オペレーティング システムは、更新後にどのレコードキーを使用してもレコードを呼び出すことができるように、REWRITE文の実行中にレコードキー データ項目の内容を使用する。
  
下記のいずれかの場合に、無効キー条件が発生する。
順呼び出し方式でファイルを処理しているときに、新しく置き換える側のレコードの主レコードキー データ項目の値が、ファイルから最後に読み込んだレコードの主レコードキーの値と等しくない。
 
  
主レコードキー データ項目の値と主レコードキーの値が一致するレコードが、ファイル中に存在しない。
 
  
 
 
上記の場合、更新処理は行われず、レコード領域中のデータは元のまま残る。(手続き部 無効キー条件