ファイル管理記述項

ファイル管理記述項では、ファイルを命名し、ファイルに関する他の情報を指定できる。

XOPEN ASSIGN 句の RECORD DELIMITER 指定と RESERVE 指定および省略記号は、標準 COBOL 定義の一部であるが、X/Open の COBOL 言語定義では明示的に除外されている。したがって、X/Open の COBOL に準拠するソース プログラム内では、これらの指定および記号を使用するべきではない。

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


*
ISO2002MFXOPEN 

書き方 2 の一般形式 (行順編成ファイル)

書き方 3 の一般形式 (相対ファイル)


*

書き方 4 の一般形式 (索引ファイル)


*

書き方 5 の一般形式 (整列併合ファイル)


*

指令

  1. 予約語リストのフラグ付けおよび修正を行うコンパイラ指令に加えて、以下の指令が、本セクションに記載の構文または意味内容に影響を与える可能性がある。
    • ASSIGN - リテラル、データ名、または外部ファイル参照を評価する方法を決定する。
    • SEQUENTIAL - ORGANIZATION IS SEQUENTIAL として定義されているファイルが行順またはレコード順のどちらであるかを判別する。

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

  1. SELECT 句は、ファイル管理記述項の冒頭で指定する。SELECT 句の後に続く句は、任意の順番で記述できる。
  2. データ部に記述する各ファイルは、ファイル管理段落で一度だけファイル名を指定する。ファイル管理記述項で指定した各ファイルでは、同じファクトリ、メソッド、オブジェクト、関数またはプログラムのデータ部にファイル記述項を書く必要がある。
  3. ACCESS MODE 句を指定しない場合は、暗黙的に ACCESS MODE IS SEQUENTIAL が示される。
  4. MF data-name-1 は、データ部内で英数字データ項目または集団データ項目として宣言できる。データ項目は、そのファイルの外部名を保持できる長さにする。data-name-1 をソース要素内で明示的に宣言しない場合は、COBOL システムが暗黙的に英数字データ項目として宣言する。その長さは、ファイル名のサイズに使用できる最大の長さとなる。FROM 指定に data-name-1 を含める場合は、データ部でデータ項目を明示的に宣言する必要がある。
  5. MF NOT OPTIONAL 指定は、入出力両用モードでファイルを開く場合にのみ効果がある。
  6. MF 外部ファイル参照、data-name-1、または literal-1 はファイルの外部名を指定する。EXTERNAL または DYNAMIC オプションを使用する場合、literal-1 は指定できない。DYNAMIC オプションを使用する場合、外部ファイル名に指定した語は外部ファイル参照として解釈される。
  7. data-name-2 は、データ部の中で 2 文字の英数字データ項目

    OSVSVSC2MF または用途が表示用の 2 文字の数値データ項目として定義する。

    このデータ項目は、データ部のファイル節

    MF または局所記憶節

    では定義できない。

  8. VSC2 data-name-3 は、データ部の作業場所節または連絡節内で 6 バイトの集団項目として定義する。
  9. OSVSVSC2 data-name-4 は、作業場所節内で英数字データ項目として定義する。
  10. すべてのデータ名は修飾できる。

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

  1. ANS85 literal-2 は、1 文字の文字リテラルとする。
  2. ANS85 data-name-5 は修飾できる。これはデータ部内で、項類が英数字である 1 文字のデータ項目として定義する。データ部のファイル節または報告書節内では定義できない。
ISO2002MF 

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

  1. ORGANIZATION 句を指定しない場合は、順編成と見なされる。
  2. MF KEYBOARD はコンソール入力を意味する。
  3. MF DISPLAY はコンソール出力を意味する。
  4. MF PRINTER はシステムの主な印刷装置を指定する。
  5. MF PRINTER-1 はシステムの 2 番目の印刷装置を指定する。
  6. ANS85 文字列には、予約語、別途定義する利用者定義語、またはリテラルを指定できない。

書き方 3 の構文規則 (相対ファイル)

  1. START 文が相対ファイルを参照する場合は、そのファイルに対して RELATIVE KEY を指定する。
  2. data-name-5 は、該当する file-name に関連付けられたレコード記述項では指定できない。
  3. data-name-5 が参照するデータ項目は、符号なしの整数として定義する。

書き方 4 の構文規則 (索引ファイル)

  1. ISO2002MF Split-key-name は、該当する file-name に関連付けられたレコード内の 1 つ以上のデータ項目を連結したものである。これは、START 文および READ 文でのみ参照できる。
  2. data-name-5 および data-name-8 が参照するデータ項目

    MF および split-key-name-1 および split-key-name-2 が参照する data-name

    は、該当する file-name に関連付けられたレコード記述項で定義する。

    OSVSVSC2MF これらのデータ項目はいずれも、任意の項類のデータとして定義できる。ただし、SELECT 句で指定したファイルに対する入出力文については、キーは英数字項目として扱われる。

  3. data-name-5 および data-name-8

    MF および split-key-name-1 および split-key-name-2 が参照する data-name

    には、可変長の項目を記述できない。「OCCURS 句」トピックを参照。

  4. data-name-8 は、data-name-5 が参照する項目の左端の文字位置、または同じファイルに対して指定された別の data-name-8 が参照する左端の文字位置に対応する左端の文字位置を持つ項目を参照できない。
  5. 索引ファイルが可変長レコードを含む場合、data-name-5 および data-name-8

    および split-key-name-1 および split-key-name-2 が参照する data-name

    は、レコードの最初の x バイトに含まれるものとする。x は、ファイルに指定された最小レコード サイズに等しい。「RECORD 句」トピックを参照。
  6. OSVSVSC2 PASSWORD 句を指定する場合、関連付けられた RECORDKEY 句または ALTERNATE RECORD KEY 句の直後に続ける。
  7. DIALECT"RM" 指令または DIALECT"ACU" 指令が有効な場合、RECORD KEY または ALTERNATE RECORD KEY 句で指定した data-name は、data-name の最後の修飾子として file-name-1 がまだ指定されていなければ、SELECT 句で指定した file-name-1 で暗黙的に修飾される。それ以外の方言の場合は、参照規則を一意にするために、必要に応じて data-name の最後の修飾子として file-name-1 を明示的に指定する。

書き方 5 の構文規則 (整列併合用ファイル)

  1. データ部に記述する各整列ファイルまたは併合ファイルには、ファイル管理段落で一度だけ file-name を指名する。ファイル管理記述項に指定した各整列ファイルまたは併合ファイルには、データ部に整列併合ファイル記述項を記述する。
  2. file-name は整列ファイルまたは併合ファイルを表わすため、ファイル管理段落内の file-name の後には ASSIGN 句のみを記述できる。

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

  1. ASSIGN 句は、file-name-1 が表わすファイルを記憶媒体に関連付ける。ファイル割り当ては、最初に記述したものが有効となる。

    OSVSVSC2MF 1 つの ASSIGN 句内に複数のファイル割り当てを記述した場合、最初のもの以外は注記になる。

  2. RESERVE 句を使用すると、利用者は必要な入出力領域の数を指定できる。

    ANS85 使用しているオペレーティング システムの COBOL システムのドキュメントで別途指定されていない限り、RESERVE 句は注記になる。

  3. ORGANIZATION 句は、ファイルの論理構造を指定する。ファイル編成はファイルの作成時に確立され、後から変更できない。
  4. FILE STATUS 句を指定すると、明示的または暗黙的に該当ファイルを参照する文を実行するたびに、ランタイム システムは data-name-2 で指定したデータ項目に値を転記する。この値は、その文を実行した結果の状態を示す。「手続き部」の章の「入出力状態」のトピックを参照。

    MF data-name-3 は、指定しても注記になる。

  5. MF PASSWORD 句は注記になる。
  6. MF ASSIGN 句で使用する予約語 DYNAMIC は、その ASSIGN 句内の literal-1 または data-name-1 の値が外部のファイル記憶環境にあるファイルの名前であることを示す。
  7. MF ASSIGN 句で使用する予約語 EXTERNAL は、external-file-reference が外部環境に対して指定したファイルであることを示す。指定したファイルは、外部のファイル記憶の環境名にさらにマッピングされることもある。特定の操作環境での外部ファイル名の設定の詳細については、ファイル処理に関する COBOL システムのドキュメントを参照。

    external-file-reference に文字「-」が含まれていると、最後の「-」の後に続く名前部分のみが、外部環境に対してファイルを識別するために使用される。

  8. MF external-file-reference、data-name-1、または literal-1 なしで DISK を使用し、FROM オプションを使用しない場合、ファイル記述内の VALUE OF FILE-ID 句で名前が指定されたディスク ファイルが指定される。そのファイル記述が VALUE OF FILE-ID 句を含まない場合、ディスク ファイルの名前は、file-name-1 (内部ファイル名) と同じであると見なされる。
  9. MF キーワード DISK、KEYBOARD、DISPLAY、PRINTER、または PRINTER-1 のいずれかの後に external-file-reference、data-name-1、または literal-1 が続く場合、そのキーワードは無視される。
  10. MF FROM オプションを伴う DISK オプションは、ディスク上の名前が data-name-1 の値であるディスク ファイルを指定する。ただし、そのファイルに対して OPEN 文を実行する際に、data-name-1 に空白のみが含まれている場合、そのディスク ファイルの名前は file-name-1 (内部ファイル名) と同じであると見なされる。
  11. OPTIONAL 指定は、入力モード、入出力両用モード、または拡張モードで開くファイルに対してのみ適用できる。これは、ランタイム要素の実行時に必ずしも存在するとは限らないファイルに対して指定する必要がある。
  12. ISO2002MF SHARING 句は、ファイルに適用する共有モードを指定する。ただし、この句は OPEN 文の SHARING 句によって上書きされる。また、この句はレコード ロックを有効にするかどうかも指定する。その他の詳細については、「言語の基礎」の章の「共有モード」のトピックを参照。

書き方 1、3、および 4 の一般規則 (レコード順編成ファイル、相対ファイル、および索引ファイル)

  1. MF LOCK MODE 句はファイル管理記述項に記述し (省略可能)、該当するファイルに適用するロック方式を指定する。

    この句を省略した場合、ファイルは排他モードで開く。ただし OPEN INPUT で開いた場合は除く。

    LOCK MODE IS EXCLUSIVE を指定すると、ファイルを開いた実行単位はそのファイル全体に対してロックを取得する。

    LOCK MODE IS AUTOMATIC または LOCK MODE IS MANUAL を指定すると、実行単位が開いたファイルを共有できる。ただし、OUTPUT で開いたファイル、および EXTEND で開いた索引ファイルおよび相対ファイルは、常に排他モードになる。

  2. MF ROLLBACK 句は、その機能をサポートする COBOL システム下のファイルのトランザクション ログを要求する。システムでの実装方法の詳細については、ファイル処理に関する COBOL システムのドキュメントを参照。

    ROLLBACK 句を指定すると、WITH LOCK ON MULTIPLE RECORDS が自動的に有効になる。

  3. MF WITH LOCK ON RECORD 句は、ファイルに対して 1 つのレコードをロックすることを指定する。

    WITH LOCK ON MULTIPLE RECORDS 句は、ファイルに対して複数のレコードをロックすることを指定する。複数のレコードをロックする場合は、この句を指定する必要がある。

  4. MF ファイルに対して LOCK MODE IS AUTOMATIC WITH LOCK ON RECORD を指定した場合、そのファイルに対して READ 文を実行すると、1 つのレコードがロックされる。その後、同じファイルに入出力操作 (START 文を除く) を行うと、レコードのロックが解除される。

    ファイルに対して LOCK MODE IS AUTOMATIC WITH LOCK ON MULTIPLE RECORDS を指定した場合、READ 文を実行すると、1 つのレコードがロックされる。レコードのロックは、CLOSE、COMMIT、ROLLBACK、または UNLOCK 文を実行するまで、または個々のロックが DELETE 文で削除されるまで解除されない。

  5. MF ファイルに対して LOCK MODE IS MANUAL WITH LOCK ON RECORD を指定すると、WITH LOCK を指定した READ 文を実行した場合にのみ、1 つのレコードがロックされる。その後、同じファイルに入出力操作 (START 文を除く) を行うと、レコードのロックが解除される。

    LOCK MODE IS MANUAL WITH LOCK ON MULTIPLE RECORDS を指定すると、READ WITH KEPT LOCK 文により 1 つのレコードがロックされる。レコードのロックは、CLOSE、COMMIT、ROLLBACK、または UNLOCK 文を実行するまで解除されない。

  6. MF ロック モードを MANUAL または AUTOMATIC に指定し、WITH LOCK ON MULTIPLE RECORDS を指定しない場合は、1 つのレコードをロックするものと見なされる。
  7. MF ファイルが EXTERNAL として定義されており、ある file-name によってオペレーティング システム file-name が割り当てられる (たとえば、ASSIGN 指令や ASSIGN キーワードを使用することで、SELECT/ASSIGN 文の data-name-1 が使用されるか、ファイル記述項の VALUE OF 指定の書き方 2 が使用される)、次の規則が適用される。
    1. そのファイルを参照するすべてのソース要素に物理ファイル名を含めるには、同じ名前の識別子を使用する。
    2. 物理ファイル名を保持する一意名の定義にも EXTERNAL 属性を含める。

    この規則に反していても、コンパイル時に検出されることはないが、実行単位内のランタイム要素が実行時にこの規則に反すると、結果は保証されない。

    レコード ロックの効果の詳細については、ファイル処理に関する COBOL システムのドキュメントを参照。

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

  1. CLOSE REEL 文または CLOSE UNIT 文を用いてファイルを閉じる可能性または予定がある場合は、MULTIPLE REEL またはMULTIPLE UNIT を指定する。
  2. ファイル内のレコードは、先行および後行のレコード関係で指定される順序で呼び出される。この関係はファイルを作成または拡張する際に WRITE 文を実行して確立される。
  3. MF LINE ADVANCING FILE を指定すると、プリンターに適したファイルが作成される。このファイルの冒頭にはキャリッジ リターン文字が置かれる。各レコードの記述には、デフォルトの改行指定として AFTER ADVANCING 1 LINE が用いられる。書き方の詳細については、ファイル処理に関する COBOL システムのドキュメントを参照。
  4. ANS85MF PADDING CHARACTER 句は注記になる。

    ANS85 関連付けるファイル結合子が外部のファイル結合子である場合、そのファイル結合子に関連付ける実行単位内のすべての PADDING CHARACTER 句は、同じ指定内容を持つものとする。data-name-5 が外部である場合は、外部データ項目を参照する。

  5. ANS85MF RECORD DELIMITER 句は注記用にのみ使用する。ただし、character-string が BINARY-SEQUENTIAL である場合は例外とする。これはファイルをレコード順編成として指定する別の方法である。
ISO2002MFXOPEN 

書き方 2 の一般規則 (行順編成ファイル)

  1. MFXOPEN 明示的または暗黙的に LINE SEQUENTIAL ORGANIZATION を指定すると、ファイルは固定長のレコードで構成され、各レコードには 1 行分のデータが含まれる。レコードを格納する際には、末尾の空白が削除される。1 行文のデータの定義は、オペレーティング システムごとに異なる。復帰文字および改行文字のどちらか、または両方で 1 行の末尾を区切るものもあれば、固定長のレコードとして余白に充てん文字を詰めるものもある。そのため、使用中の COBOL システムでは、この点でどのオペレーティング システムのエディター ソフトウェアとも互換性のあるファイルを常に作成する。
  2. RECORD DELIMITER 句は注記用にのみ使用する。ただし、character-string が LINE-SEQUENTIAL である場合は例外とする。これはファイルを行順編成として指定する別の方法である。

書き方 3 の一般規則 (相対ファイル)

  1. 呼び出し法が順呼び出しの場合、ファイル内のレコードは既存レコードの相対レコード番号について昇順で呼び出される。
  2. 呼び出し法が乱呼び出しの場合、RELATIVE KEY データ項目の値は呼び出し先のレコードを示す。
  3. 相対ファイルに格納されているすべてのレコードは、相対レコード番号によって一意に識別される。この番号は、ファイル内のレコードの論理順位も指定する。つまり、最初の論理レコードの相対レコード番号は 1 であり、以降 2、3、4 ... と続く。
  4. data-name-5 で指定するデータ項目は、ランタイム要素およびオペレーティング システムとの間で相対レコード番号を伝送するために使用される。

書き方 4 の一般規則 (索引ファイル)

  1. 呼び出し法が順呼び出しの場合、ファイル内のレコードは、指定された参照のキー内のレコード キーの値について昇順で呼び出される。
  2. 呼び出し法が乱呼び出しの場合、レコード キー データ項目の値は呼び出し先のレコードを示す。
  3. RECORD KEY 句はレコード キーを指定し、これがファイルの主レコード キーとなる。ファイル内のレコード間で、主レコード キーの値は一意とする。この主レコード キーは、索引ファイル内のレコードを呼び出すために使用できる。
  4. ファイルに複数のレコード記述項がある場合、data-name-5

    ISO2002MF および split-key-name-1 が参照する data-name

    は、これらのレコード記述項のいずれかにのみ記述する必要がある。いずれかのレコード記述項にある、data-name-5

    ISO2002MF および split-key-name-1 が参照する data-name

    が参照する同一の文字位置は、そのファイルの他のすべてのレコード記述項のキーとして暗黙的に参照される。
  5. ANS85 関連付けるファイル結合子が外部のファイル結合子である場合、そのファイル結合子に関連付ける実行単位内のすべてのファイル記述項は、data-name-1 に対して、関連付けるレコード内で同じ相対位置を持つ 同じデータ記述項を指定するものとする。
  6. ALTERNATE RECORD KEY 句はレコード キーを指定し、これがファイルの副レコード キーとなる。この副レコード キーは、索引ファイル内のレコードを呼び出すために使用できる。
  7. data-name-5

    MF または split-key-name-1

    および data-name-8

    MF または split-key-name-2

    のデータ記述、およびレコード内での相対位置のデータ記述は、ファイル作成時に使用したデータと同じにする。また、ファイルの副レコード キーの数も、ファイル作成時の数と同じにする。一部の環境では、このチェックを構成できる。COBOL システムのドキュメントで KEYCHECK パラメーターに関する記述を参照。

  8. DUPLICATES を指定すると、ファイル内のレコード間で、関連するレコード キーの値の重複が許容される。DUPLICATES を指定しない場合、ファイル内のすべてのレコード間で、関連するレコード キーの値の重複は許容されない。
  9. 値が重複するエントリを正しく検出するには、同じ値をもつ最初のエントリから順呼び出しで読み込む必要がある。
  10. MF SUPPRESS 指定は、代替索引にスパース キーの使用を要求する。スパース キーはファイル ハンドラー経由でのみ利用でき、必ずしもすべてのシステムで利用できるわけではない (詳細については、ファイル処理に関する COBOL システムのドキュメントを参照)。
  11. ISO2002MF split-key-name-1 は、data-name-6、および data-name-7 のすべての出現箇所を、指定した順序で連結したレコード キーを定義する。split-key-name-2 は、data-name-9、および data-name-10 のすべての出現箇所を、指定した順序で連結したレコード キーを定義する。

書き方 5 の一般規則 (整列併合用ファイル)

  1. ファイル管理記述項では、整列ファイルまたは併合ファイルに名前を付け、そのファイルおよび記憶媒体との関連付けを指定する。
  2. MF SORT STATUS 句を指定すると、整列またはマージの各操作を実行した後で、data-name-2 が指定する 2 文字のデータ項目に値が設定される。この値は、操作完了時の状態を示す。複数の状態キーの有効な組み合わせは以下のとおり。状態キー 1 が 0 で状態キー 2 も 0 の場合、操作が正常に完了したことを表わす。状態キー 1 が 3 で状態キー 2 が 0 の場合、パラメーター エラーが生じたことを表わす。状態キー 1 が 9 の場合、状態キー 2 にはオペレーティング システムのエラー メッセージ番号が含まれる。状態キー 1 および 2 の説明および状態の定義については、「手続き部」の章の「入出力状態」トピックを参照。SORT STATUS 句の代わりに FILE STATUS 句を使用できる。ただし、整列ファイルまたは併合ファイルに指定した FILE STATUS 句は、SORT STATUS の同義語として扱われる。
  3. ASSIGN 句は注記となる。