DELETE ステートメントは、索引付きファイルまたは相対ファイルからレコードを削除します。 索引付きファイルの場合、削除されたそのレコードのキーは、 新たに追加されるレコードで再使用することができます。相対ファイルの場合、削除されたそのレコードのスペースは、 同じ RELATIVE KEY 値を持つ新しいレコードで使用可能です。
DELETE ステートメントを実行するときには、その対象となるファイルは、 I-O モードでオープンされている必要があります。
DELETE ステートメントが正しく実行された後は、 そのレコードはファイルから削除され、以降そのレコードにアクセスすることはできません。
DELETE ステートメントの実行は、ファイル名-1 に関連するレコード域の内容には影響しません。 また、ファイル名-1 に関連する RECORD 文節の DEPENDING ON 句に指定されたデータ名によって参照されるデータ項目の内容にも影響しません。
ファイル制御項目内に FILE STATUS 文節が指定されている場合は、 関連するファイル状況キーが、DELETE ステートメントの実行時に更新されます。
ファイル位置標識は、DELETE ステートメントの実行によって影響を受けることはありません。
順次アクセス・モードのファイルの場合、前回の入出力ステートメントは、正しく実行された READ ステートメントである必要があります。DELETE ステートメントが実行されると、システムは READ ステートメントによって取り出されたレコードを削除します。
順次アクセス・モードのファイルの場合、INVALID KEY 句や NOT INVALID KEY 句は、指定することはできません。 EXCEPTION/ERROR プロシージャーを指定することはできます。
ランダム・アクセス・モードまたは動的アクセス・モードでは、 DELETE ステートメント実行の結果は、ファイル編成 (索引付きファイルであるか相対ファイルであるか) によって異なります。
DELETE ステートメントが実行されると、システムは、 索引ファイルの基本 RECORD KEY データ項目の内容によって示されるレコード、または相対ファイルの RELATIVE KEY データ項目によって示されるレコードを除去します。 ファイルにその種のレコードがない場合は、無効キー条件が存在しています (共通の処理機能にある「無効キー条件」を参照)。
INVALID KEY 句および利用可能な EXCEPTION/ERROR プロシージャーは、両方とも省略することができます。
NOT INVALID KEY 句の指定がある DELETE ステートメントが正しく実行された後、制御は、その句と関連付けられた命令ステートメントに移動します。
この明示的範囲終了符号は、DELETE ステートメントの範囲を区切るために使用されます。 END-DELETE 句を使用することによって条件的な DELETE ステートメントを他の条件的なステートメントの中にネストすることができます。 END-DELETE 句は、命令の DELETE ステートメントと共に使用することもできます。
詳しくは、範囲区切りステートメントを参照してください。