図6-36-CLOSE構文
CLOSE文は、指定されたファイルまたは現在実装されているリール/ユニットへのプログラムアクセスを終了する。
CLOSE文は、正常にOPENされたファイルに対してのみ実行できCLOSE文は、正常に開かれたファイルに対してのみ実行できる。
REEL、UNIT、およびNO REWIND句は、ORGANIZATION SEQUENTIAL(LINEまたはRECORD BINARY)SEQUENTIALファイルでのみ使うことができる。REELとUNITという言葉は同意義で使われる場合があり、複数のリムーバブルテープ/ディスクに保存されている、または書き込まれるファイルを反映している。すべてのシステムがそのようなデバイスをサポートしているわけではないため、複数ユニットのファイルを操作できるといったopensource COBOLの特性がシステムでは機能しない場合がある。
REELおよびUNIT句は、SELECT句でMULTIPLE REELまたはMULTIPLE UNITが指定されているファイルでの使用を目的としている。ランタイムシステムが複数ユニットのファイルを認識しない場合、CLOSE REELおよびCLOSE UNIT文は機能しない。
ファイルが閉じられると、再び正常にOPENされるまで、ファイルに再度アクセスすることはできない。
OUTPUTモードまたはEXTENDモードのいずれかでOPENされたファイルに対して、REELまたはUNITを使うことなくCLOSEが正常に実行されると、残りの未書込レコードバッファーがファイルに書き込まれ、OPENモードに関係なく、閉じたファイルに対して保持されていたレコードロックも解放される。閉じられたファイルは、再度OPENされるまで、後続のREAD、WRITE、REWRITE、START、またはDELETE文で使用できなくなる。
CLOSE WITH LOCKは、プログラムが同じプログラム実行内でファイルを再度開いてしまうことを防いでくれる。
REELまたはUNITを使ってCLOSEを正常に実行すると、残りの未書込レコードバッファーが閉じられたファイルに書き込まれ、それらのファイルに対して保持されていたレコードロックも解放される。現在実装されているリール/ユニットは実装が解除され、次のリール/ユニットが要求される。この時ファイルは開かれたままである。