CLOSE ステートメント
CLOSE ステートメントは、ボリュームおよびファイルの処理を終了します。
| フォーマット 1: 順次 |
 >>-CLOSE-------------------------------------------------------->
.-------------------------------------------------------.
V |
>----ファイル名-1--+-------------------------------------+-+---><
| (1) |
+-+-REEL------+--+------------------+-+
| | (1) | +-+-----+--REMOVAL-+ |
| '-UNIT------' | '-FOR-' | |
| '-WITH NO REWIND---' |
| (1) |
'-+------+--+-NO REWIND------+--------'
'-WITH-' '-LOCK-----------'
|
注:
- UNIT、REEL、および NO REWIND 句はコメントとして扱われます。それでも、ファイル状況は 07 に設定されて、非リール / ユニット・メディアの CLOSE が正常に完了したことを示します。
| フォーマット 2: 索引付きファイルおよび相対ファイル |
 .----------------------------------.
V |
>>-CLOSE----ファイル名-1--+----------------+-+-----------------><
'-+------+--LOCK-'
'-WITH-'
|
| フォーマット 3: 行順次ファイル |
 >>-CLOSE-------------------------------------------------------->
.-------------------------------------------------------.
V |
>----ファイル名-1--+-------------------------------------+-+---><
| (1) |
+-+-REEL------+--+------------------+-+
| | (1) | +-+-----+--REMOVAL-+ |
| '-UNIT------' | '-FOR-' | |
| '-WITH NO REWIND---' |
| (1) |
'-+------+--+-NO REWIND------+--------'
'-WITH-' '-LOCK-----------'
|
注:
- UNIT、REEL、および NO REWIND 句はコメントとして扱われます。それでも、ファイル状況は 07 に設定されて、非リール / ユニット・メディアの CLOSE が正常に完了したことを示します。
- ファイル名-1
- CLOSE ステートメントの操作対象となるファイルを指定します。複数のファイル名を指定する場合、それらのファイルは同じ編成や同じアクセス方式である必要はありません。
ファイル名-1 はソート・ファイルまたはマージ・ファイルにはできません。
- REEL および UNIT
- REEL および UNIT は構文チェックされますが、プログラムの実行には何の影響も及ぼしません。
- WITH NO REWIND および FOR REMOVAL
- WITH
NO REWIND および FOR REMOVAL は構文チェックされますが、プログラムの実行には何の影響も及ぼしません。
CLOSE ステートメントは、
オープン・モードのファイルに対してのみ実行することができます。
CLOSE ステートメント (フォーマット 1 を使用する場合は、
REEL/UNIT 句を使用しないもの) が正常に実行すると、次のようになります。
- ファイル名に関連付けられたレコード域は、使用不能になります。
CLOSE ステートメントの実行が失敗した場合は、
レコード・データが使用可能かどうかはわかりません。
- ファイルに対して他の入出力ステートメントを実行する前、およびそのファイルに関連したレコード記述項目にデータを移動する前に、ファイルに対して OPEN ステートメントを実行しなければなりません。
- クローズされたファイルのファイル結合子が保持するレコード・ロックおよびファイル・ロックは解放されます。
ファイル制御項目内に FILE STATUS 文節が指定されている場合は、
関連するファイル状況キーが、CLOSE ステートメントの実行時に更新されます。
ファイルがオープン状態にあり、CLOSE ステートメントの実行が正常に実行しない場合は、
そのファイルに対して EXCEPTION/ERROR プロシージャーが (指定した場合) 実行されます。
ファイル・タイプへの CLOSE ステートメントの効果
あるファイルに対してファイル制御記入項目内に SELECT OPTIONAL 文節が指定されている場合、そのファイルが実行時に存在しないと、ファイルの終わりの標準処理は行われません。
ファイルは、以下のタイプに分けられます。
- リール・ファイル/ユニット以外
- その入力メディアまたは出力メディアに対して、REWIND、REEL、
および UNIT の指定が意味を持たないようなファイル。
Btrieve、RSD、および STL ファイルはすべて、非リール/ユニット・ファイル・タイプです。
- 順次単一ボリューム
- 全体が 1 つのファイルに入っている順次ファイル。
複数のファイルをこのボリュームに入れることができます。
Btrieve、RSD、および STL ファイルはすべて単一ボリュームです。
- 順次マルチボリューム
- 複数のボリュームに入っている順次ファイル。
ボリュームの概念は、Btrieve、RSD、または STL ファイルには意味がありません。
CLOSE ステートメント句の許可される組み合わせについては、以下を参照してください。
- 順次ファイルおよび CLOSE ステートメント句 (表 37)
- 索引ファイル・タイプと相対ファイル・タイプおよび CLOSE ステートメント句 (表 38)
- 行順次ファイル・タイプおよび CLOSE ステートメント句 (表 39)
各キーの意味は、順次ファイル・タイプのキーの意味 (表 40) に示されています。
表 37. 順次ファイルおよび CLOSE ステートメント句
| CLOSE ステートメント句 |
リール/ユニット以外 |
順次単一
ボリューム |
順次マルチボリューム |
| CLOSE |
C |
C、G |
A、C、G |
| CLOSE WITH LOCK |
C、E |
C、E、G |
A、C、E、G |
表 38. 索引ファイル・タイプと相対ファイル・タイプおよび CLOSE ステートメント句
| CLOSE ステートメント句 |
アクション |
| CLOSE |
C |
| CLOSE WITH LOCK |
C、E |
表 39. 行順次ファイル・タイプおよび CLOSE ステートメント句
| CLOSE ステートメント句 |
アクション |
| CLOSE |
C |
| CLOSE WITH LOCK |
C、E |
表 40. 順次ファイル・タイプのキーの意味
| キー |
取られる処置 |
| A |
前のボリュームは影響を受けない
入力ファイルおよび入出力ファイル: 標準のボリューム切り替え処理が、
前のすべてのボリュームに対して行われる (先行する CLOSE REEL/UNIT ステートメントにより制御されるものを除く)。後続のボリュームはいずれも処理されない。
出力ファイル: 標準のボリューム切り替え処理が、
前のすべてのボリュームに対して行われる (先行する CLOSE REEL/UNIT ステートメントにより制御されるものを除く)。 |
| C |
ファイルをクローズする
入力ファイルおよび入出力ファイル: ファイルがその終了位置にあり、
ラベル・レコードが指定されていれば、標準の終了ラベル・プロシージャーが実行される。ついで標準のシステム・クローズ・プロシージャーが行われる。
ファイルがその終了位置にあっても、ラベル・レコードが指定されていない場合は、
ラベル処理は行われないが、標準のシステム・クローズ・プロシージャーが行われる。
ファイルがその終了位置にない場合、標準のシステム・クローズ・プロシージャーが実行されるが、終了のラベル処理は行われない。
出力ファイル: ラベル・レコードが指定されていると、
標準の終了ラベル・プロシージャーが実行される。ついで標準のシステム・クローズ・プロシージャーが行われる。
ラベル・レコードが指定されていないと、終了ラベル・プロシージャーは実行されないが、
標準のシステム・クローズ・プロシージャーは実行される。 |
| E |
ファイルをロックする: コンパイラーは、
オブジェクト・プログラムの実行中にこのファイルが再びオープンできないようにする。ファイルが磁気テープ装置である場合は、巻き戻しおよびアンロードが行われる。 |
| G |
巻き戻す: 現在のボリュームは物理的な先頭に位置付けられる。 |
|