CLOSE 文

CLOSE 文は リール/ユニットおよびファイルの処理を終了させる。可能な場合はオプションで、巻き戻し、ロック、または取り外し処理も実行できる。

書き方 1 の一般形式 (レコード順編成ファイル)


CLOSE Statement

書き方 2 の一般形式 (MF 行順編成ファイル、相対ファイルおよび索引ファイル)


*

すべての書き方に関する構文規則 (すべてのファイル)

  1. CLOSE 文で参照されるファイルは、すべてが同じ編成またはアクセス属性を備えている必要はない。

書き方 1 の構文規則 (レコード順編成ファイル)

  1. MF REEL および UNIT を指定するのは、SELECT 句で MULTIPLE REEL または MULTIPLE UNIT を指定したファイルに対してのみである。マルチユニット ファイルを認識しない実行時システムでは、CLOSE REEL 文および CLOSE UNIT 文は「空」の文、つまり注記になる。CLOSE REEL 文または CLOSE UNIT 文で閉じた装置では、他に開いているファイルはないことが重要である。

    OSVS CLOSE REEL WITH LOCK 文および CLOSE UNIT WITH LOCK 文は、CLOSE REEL FOR REMOVAL と同等として扱われる。

  2. OSVS DISP オプションは、テープ ファイルにのみ適用できる。

    この用途は注記用のみである。

すべての書き方に関する一般規則 (すべてのファイル)

  1. CLOSE 文は、開いているファイルにのみ実行できる。
  2. CLOSE 文が正常に実行されると、file-name-1 に関連付けられたレコード領域は使用できなくなる。CLOSE 文が正常に実行されない場合は、レコード領域の使用状況は不定となる。
  3. ANS85 STOP RUN 文の実行時に開いているファイルは閉じられる。呼び出される側のプログラムで開かれたファイルが、そのプログラムに CANCEL 文を実行する際に開かれたままである場合、そのファイルは閉じられる。
  4. MF CLOSE 文が正常に実行されると、閉じたファイルに対して実行単位が保持していたレコード ロックまたはファイル ロックはすべて解除される。
  5. CLOSE 文を実行すると、file-name-1 に関連付けられた入出力状態の値が更新される。「手続き部」の章の「入出力状態」のトピックを参照。
  6. ファイルの種類ごとに、CLOSE 文の各形式の実行結果をまとめて次の表に示す。
    表 1. ファイルの種類および CLOSE 文の書き方の関係
    CLOSE 文の書き方 ファイルの種類
    非リール/ユニット レコード順編成単一リール/ユニット レコード順編成複数リール/ユニット 非レコード順編成単一または複数リール/ユニット
    CLOSE C C、G A、C、G C
    CLOSE WITH LOCK C、E C、E、G A、C、E、G C、E
    CLOSE WITH NO REWIND レコード順編成のみ ANS85 C、H B、C A、B、C X
    CLOSE REEL/UNIT レコード順編成のみ ANS85 F ANS85 F、G F、G X
    CLOSE REEL/UNIT FOR REMOVAL レコード順編成のみ ANS85 F ANS85 D、F、G D、F、G X
    CLOSE REEL/UNIT WITH NO REWIND レコード順編成のみ X X F、B X

    上記の表に示した記号の意味を以下で説明する。入力ファイル、出力ファイル、または入出力ファイルかによって意味が異なる場合は、別の意味を示す。それ以外の場合は、入力ファイル、出力ファイル、および入出力ファイルのすべてに同じ意味が該当する。

    A:前のリール/ユニットは影響を受けない
     
    • 入力ファイルおよび入出力ファイル:

      ファイル内の現在のリール/ユニットよりも前にあるリール/ユニットがすべて処理される。ただし、すでに CLOSE REEL/UNIT 文が制御しているものを除く。現在のリール/ユニットがファイル中の最後のものではない場合、後続のリール/ユニットは処理されない。

    • 出力ファイル:

      ファイル内の現在のリール/ユニットよりも前にあるリール/ユニットがすべて処理される。ただし、すでに CLOSE REEL/UNIT 文が制御しているものを除く。

    B:現在のリールを巻き戻さない

    現在のリール/ユニットは、現在の位置にとどまる。

    C:ファイルを閉じる
     
    • 入力ファイルおよび入出力ファイル (順呼び出し法):

      ファイルの末尾に達しており、そのファイルにラベル レコードが指定されている場合、オペレーティング システムのラベル規則に従ってラベルが処理される。指定したラベル レコードが存在しない場合、または指定していないラベル レコードが存在する場合、CLOSE 文の動作は不定となる。ファイルの末尾に達しており、そのファイルにラベル レコードが指定されていない場合、ラベルは処理されないが、実行時システムに依存するその他の閉じる処理は行われる。ファイルの末尾に達していない場合、実行時システムに依存する閉じる処理は行われるが、終了ラベルの処理は行われない。

    • 入力ファイルおよび入出力ファイル (乱呼び出し法または動的呼び出し法)、出力ファイル (乱呼び出し法、動的呼び出し法、または順呼び出し法):

      ファイルにラベル レコードを指定している場合、オペレーティング システムの標準ラベル規則に従ってラベルが処理される。指定したラベル レコードが存在しない場合、または指定していないラベル レコードが存在する場合、CLOSE 文の動作は不定となる。ファイルにラベル レコードを指定していない場合、ラベルの処理は行われないが、実行時システムに依存するその他の閉じる処理は行われる。

    D:リール/ユニットを取り外す
     

    REEL または UNIT を指定せずに CLOSE 文をファイルに対して実行し、続いてそのファイルに対して OPEN 文を実行すると、そのファイル内のリールまたはユニットを適切な順番で再度呼び出すことができる。

    E:ファイルをロックする

    この実行単位の実行中は、このファイルを再び開くことはできない。

    F:リール/ユニットを閉じる
     
    • 入力ファイルおよび入出力ファイル (リール/ユニット媒体):
      1. ANS85 現在のリール/ユニットがファイル内の最後または唯一のリール/ユニットである場合、それらの交換は行われない。現在のボリューム ポインターは変更されず、ファイル位置指示子には次のリール/ユニットは存在しないと設定される。
      2. ファイル内に他のリール/ユニットが存在する場合はリール/ユニットの交換が発生し、現在のボリューム ポインターはそのファイル内の次のリール/ユニットを指すように更新される。その後、標準開始リール/ユニット ラベル手続きが実行されて、ファイル位置指示子が新しい現行ボリューム上に存在する最初のレコードの番号よりも 1 小さく設定される。現行ボリュームにデータ レコードが存在しなければ、別のリール/ユニットの交換が発生する。
    • 出力ファイル (リール/ユニット媒体):

      次の操作が行われる。

      1. 標準終了リール/ユニット ラベル手続きの実行
      2. リール/ユニットの交換
      3. 標準開始リール/ユニット ラベル手続きの実行
      4. そのファイルを参照する WRITE 文を次回実行する際に、次の論理データ レコードがそのファイルの次のリール/ユニットに書き出される。
    • 入力ファイル、入出力ファイル、および出力ファイル (非リール/ユニット媒体):

      ANS85 この文は正常に実行されたものと見なされる。実際には、ファイルは開かれたままであり、ファイル位置指示子は変更されず、一般規則 4 に示された以外の処理は行われない。

    G:巻き戻す

    現在のリールまたは類似の装置は、物理的始点に位置指定される。

    H:オプションの指定は無視される

    ANS85 CLOSE 文は、オプションの指定はないものとして実行される。

    X:無効

    CLOSE 文の指定およびファイルの種類のこの組み合わせは無効である。オブジェクト時の結果は不定となる。

書き方 1 の一般規則 (レコード順編成ファイル)

注: 以下の一般規則で特に記載がない限り、「リール」および「ユニット」という語は同等であり、CLOSE 文ではまったく同じものとして使用できる。順編成の大容量記憶域ファイルの取り扱いは、論理的にはテープまたは類似の順編成媒体と同じである。

すべての書き方に関する一般規則 (すべてのファイル)

  1. さまざまな記憶媒体に適用される各種 CLOSE 文の効果を示すために、すべてのファイルを以下の種類に分類する。
    1. 非リール/ユニット:巻き戻しおよびリール/ユニットの概念が意味を持たないような入力または出力媒体を持つファイル。
    2. 順編成の単一リール/ユニット:単一のリール/ユニットに完全に格納される順編成ファイル。
    3. 順編成の複数リール/ユニット:複数のリール/ユニットにわたって格納される順編成ファイル。
  2. 環境部のファイル管理段落でファイルに OPTIONAL を指定しているが、そのファイルが存在しない場合には、そのファイルに関して標準のファイル終了処理は行われない。
  3. あるファイルに対して REEL または UNIT を指定せずに CLOSE 文を実行すると、そのファイルを参照する他の文 (USING または GIVING を指定した SORT 文または MERGE 文を除く) は明示的にも暗黙的にも実行できなくなる。ただし、そのファイルに介入する OPEN 文を実行すれば、文を実行できるようになる。
  4. WITH NO REWIND および FOR REMOVAL 指定は、ファイルが存在する記憶媒体に対して適用しなければ、オブジェクト時に効果を持たない。
  5. WITH LOCK を指定すると、そのファイルはその実行単位の現在の実行中に再度開くことができなくなる。それ以外の場合は、通常の CLOSE が有効になる。

    MF このオプションは、ファイルを共有する際のレコードまたはファイルのロックとは関係がない。

すべての書き方に関する一般規則 (すべてのファイル)

  1. ファイルに対して CLOSE 文を実行すると、以降そのファイルを参照する文は、

    MF DELETE FILE 文以外は、

    明示的にも暗黙的にも実行できなくなる。ただし、そのファイルに介入する OPEN 文を実行すれば、文を実行できるようになる。

  2. WITH LOCK を指定すると、そのファイルはその実行単位の現在の実行中に再度開くことができなくなる。