Rational Developer for System z
Enterprise COBOL for z/OS バージョン 4.1 言語解説書


CLOSE ステートメント

CLOSE ステートメントは、ボリュームおよびファイルの処理を終了します。

構文図を読む構文図をスキップする
フォーマット 1: 順次ファイルの CLOSE ステートメント

>>-CLOSE-------------------------------------------------------->

   .------------------------------------------------------.   
   V                                                      |   
>----ファイル名-1---+------------------------------------+-+----><
                   |        (1)                         |     
                   +-+-REEL-----+--+------------------+-+     
                   | |      (1) |  +-+-----+--REMOVAL-+ |     
                   | '-UNIT-----'  | '-FOR-'          | |     
                   |               '-WITH NO REWIND---' |     
                   |                       (1)          |     
                   '-+------+--+-NO REWIND-----+--------'     
                     '-WITH-'  '-LOCK----------'              

注:
  1. VSAM ファイルの場合、REEL、UNIT、および NO REWIND 句は無効です。
構文図を読む構文図をスキップする
フォーマット 2: 索引付きおよび相対ファイルの CLOSE ステートメント

          .----------------------------------.   
          V                                  |   
>>-CLOSE----ファイル名-1---+----------------+-+-----------------><
                          '-+------+--LOCK-'     
                            '-WITH-'             

構文図を読む構文図をスキップする
フォーマット 3: 行順次ファイルの CLOSE ステートメント

>>-CLOSE-------------------------------------------------------->

   .--------------------------------------------------.   
   V                                                  |   
>----ファイル名-1---+--------------------------------+-+--------><
                   +-+-REEL-+--+------------------+-+     
                   | '-UNIT-'  +-+-----+--REMOVAL-+ |     
                   |           | '-FOR-'          | |     
                   |           '-WITH NO REWIND---' |     
                   '-+------+--+-NO REWIND-+--------'     
                     '-WITH-'  '-LOCK------'              

ファイル名-1
CLOSE ステートメントの操作対象となるファイルを指定します。 複数のファイル名を指定する場合、 それらのファイルは同じ編成や同じアクセス方式である必要はありません。 ファイル名-1 はソート・ファイルまたはマージ・ファイルにはできません。
REEL および UNIT
これらの句は、QSAM のマルチボリューム・ファイルまたは単一ボリューム・ファイルに対してだけ指定できます。用語 REEL と UNIT は、どちらを使用しても同じことです。
WITH NO REWIND および FOR REMOVAL
これらの句は、QSAM テープ・ファイル に対してだけ適用されます。これらの句が適用されない記憶装置に指定されている場合、クローズ操作が正常に実行され、ファイルが非リール・メディア上にあったことを示すように状況キー値が設定されます。

CLOSE ステートメントは、 オープン・モードのファイルに対してのみ実行することができます。 CLOSE ステートメント (フォーマット 1 を使用する場合は、 REEL/UNIT 句を使用しないもの) が正常に実行すると、次のようになります。

ファイル制御項目内に FILE STATUS 節が指定されている場合は、 関連するファイル状況キーが、CLOSE ステートメントの実行時に更新されます。

ファイルがオープン状態にあり、CLOSE ステートメントの実行が正常に実行しない場合は、 そのファイルに対して EXCEPTION/ERROR プロシージャーが (指定した場合) 実行されます。

ファイル・タイプへの CLOSE ステートメントの効果

あるファイルに対してファイル制御項目内に SELECT OPTIONAL 節が指定されている場合、 そのファイルが実行時に使用可能でないと、標準のファイル終了処理は行われません。QSAM ファイルの場合は、ファイル位置標識および現行ボリューム・ポインターは変更されません。

ファイルは、以下のタイプに分けられます。

リール・ファイル/ユニット以外
その入力メディアまたは出力メディアに対して、REWIND、REEL、 および UNIT の指定が意味を持たないようなファイル。 すべての VSAM ファイルは、非リール/ユニット・ファイル・タイプです。QSAM ファイルは、リール/ユニット・タイプ以外のファイルにできます。
順次単一ボリューム
全体が 1 つのファイルに入っている順次ファイル。 複数のファイルをこのボリュームに入れることができます。 すべての VSAM ファイルは、 単一ボリュームです。 QSAM ファイルは単一ボリュームにすることができます。
順次マルチボリューム
複数のボリュームに入っている順次ファイル。 QSAM ファイルは、 マルチボリュームにできる唯一のファイルです。ボリュームの概念は、 VSAM ファイルに対しては意味がありません。

CLOSE ステートメント句の許可される組み合わせについては、以下のテーブルを参照してください。

各キー文字の意味は、表 4に示されています。

表 1. 順次ファイルおよび CLOSE ステートメント句
CLOSE ステートメント句 リール/ユニット以外 順次単一ボリューム 順次マルチボリューム
CLOSE C C、G A、C、G
CLOSE REEL/UNIT F F、G F、G
CLOSE REEL/UNIT WITH NO REWIND F B、F B、F
CLOSE REEL/UNIT FOR REMOVAL D D D
CLOSE WITH NO REWIND C、H B、C A、B、C
CLOSE WITH LOCK C、E C、E、G A、C、E、G

表 2. 索引付きファイル・タイプと相対ファイル・タイプおよび CLOSE ステートメント句
CLOSE ステートメント句 アクション
CLOSE C
CLOSE WITH LOCK C、E

表 3. 行順次ファイル・タイプおよび CLOSE ステートメント句
CLOSE ステートメント句 アクション
CLOSE C
CLOSE WITH LOCK C、E

表 4. 順次ファイル・タイプのキー文字の意味
キー 取られる処置
 A 前のボリュームは影響を受けない

入力ファイルおよび入出力ファイル: 標準のボリューム切り替え処理が、 前のすべてのボリュームに対して行われる (先行する CLOSE REEL/UNIT ステートメントにより 制御されるものを除く)。後続のボリュームはいずれも処理されない。

出力ファイル: 標準のボリューム切り替え処理が、 前のすべてのボリュームに対して行われる (先行する CLOSE REEL/UNIT ステートメントにより制御されるものを除く)。

 B 現在のリールは巻き戻されない: 現在のボリュームは現在位置のままになる。
 C ファイルをクローズする

入力ファイルおよび入出力ファイル: ファイルがその終了位置にあり、 ラベル・レコードが指定されていれば、標準の終了ラベル・プロシージャーが実行される。ついで標準のシステム・クローズ・プロシージャーが行われる。

ファイルがその終了位置にあっても、ラベル・レコードが指定されていない場合は、 ラベル処理は行われないが、標準のシステム・クローズ・プロシージャーが行われる。

ファイルがその終了位置にない場合、標準のシステム・クローズ・プロシージャーが実行されるが、 終了のラベル処理は行われない。

出力ファイル: ラベル・レコードが指定されていると、 標準の終了ラベル・プロシージャーが実行される。ついで標準のシステム・クローズ・プロシージャーが行われる。

ラベル・レコードが指定されていないと、終了ラベル・プロシージャーは実行されないが、 標準のシステム・クローズ・プロシージャーは実行される。

 D ボリュームを取り外す: コメントとして扱われる。
 E ファイルをロックする: コンパイラーは、 オブジェクト・プログラムの実行中にこのファイルが再びオープンできないようにする。ファイルが磁気テープ装置である場合は、巻き戻しおよびアンロードが行われる。
 F ボリュームをクローズする

入力ファイルおよび入出力ファイル: 現在のリール/ユニットがファイルに対して 最後であるか、または唯一のリール/ユニットであるか、あるいはリールが非リール/ユニット・メディア上にある場合は、 ボリューム切り替え処理は行われない。ファイルに関して別のリール/ユニットが存在している場合は、 次の操作が実行される。ボリューム切り替え、 最初のボリューム・ラベル・プロシージャー、 さらに新規ボリューム上の最初のレコードが読み取り可能になる。 現行ボリュームにデータ・レコードが存在しない場合は、 別のボリュームへの切り替えが行われる。

出力 (リール/ユニット・メディア) ファイル: 終了ボリューム・ラベル・プロシージャー、 ボリューム切り替え、および開始ボリューム・ラベル・プロシージャーが実行される。次の WRITE ステートメントが実行されると、 次の論理レコードが使用可能な次の直接アクセス・ボリューム上に置かれる。 REEL 句でクローズ・ステートメントを使用しても、 出力ファイルはクローズされない。ボリューム終了条件が起きるだけである。

出力 (非リール/ユニット・メディア) ファイル: CLOSE ステートメントの実行は正しく行われたとみなされる。 ファイルはオープン・モードのままであり、 このファイルに関連付けられた入出力状況キーの値が更新される以外、何も処置は行われない。

 G 巻き戻す: 現在のボリュームは物理的な先頭に位置付けられる。
 H オプションの句を無視する: CLOSE ステートメントは、 オプションの句がなにも指定されていないものとして、実行される。

ご利用条件 | フィードバック

このインフォメーション・センターでは Eclipse テクノロジーが採用されています。(http://www.eclipse.org)