RECORD 句

ANS85 RECORD 句は、固定長レコード内の文字位置数、または可変長レコード内の文字位置の範囲を指定する。可変長レコードの場合は、この句で文字位置の最小数および最大数を指定する。

MF 本セクションを通じて使用する固定形式のファイルおよび可変形式のファイルの概念は、行順編成ファイルには直接的には該当しない。COBOL 実装での行順編成ファイルの使用の詳細については、ファイル処理に関する COBOL システムのドキュメントを参照。

XOPEN RECORD CONTAINS 句は、標準 COBOL 定義に含まれるが、X/Open の COBOL 言語定義では明示的に除外されている。したがって、X/Open の COBOL 準拠のソース プログラムでは使用するべきではない。

書き方 1 の一般形式


*
ANS85 

書き方 2 の一般形式


*

書き方 3 の一般形式


*

書き方 1 の構文規則

  1. ファイルのレコード記述項には、integer-1 と同じ文字位置数を指定する。
ANS85 

書き方 2 の構文規則

  1. ANS85 ファイルのレコード記述項には、integer-2 で指定した文字位置よりも小さい文字位置を含むレコード、および integer-3 で指定した文字位置数よりも大きい文字位置を含むレコードは記述できない。
  2. ANS85 integer-3 は、integer-2 よりも大きい値とする。
  3. ANS85 data-name-1 は、作業場所節または連絡節内で符号なしの整数の基本項目として記述する。

すべての書き方に関する一般規則

  1. RECORD 句を指定しない場合、各データ レコードのサイズは、すべてレコード記述項で定義される。
  2. ANS85 外部ファイル結合子を関連付けた場合、そのファイル結合子に関連付けた実行単位内のすべてのファイル記述項で、integer-1 または integer-2 および integer-3 に同じ値を指定する。RECORD 句を指定しない場合、このファイル結合子に関連付けたすべてのレコード記述項は同じ長さとする。
  3. MFXOPEN 行順編成ファイルは、真の固定形式でも真の可変形式でもないため、RECORDING MODE、RECORD CONTAINS、または RECORD VARYING IN SIZE 句の有無はパフォーマンスに影響しない。

書き方 1 の一般規則

  1. 書き方 1 は、固定長レコードを定義するために使用する。integer-1 は、ファイル内の各レコードに含まれる文字位置数を指定する。
ANS85 

書き方 2 の一般規則

  1. ANS85 書き方 2 は、可変長レコードを定義するために使用する。integer-2 は、ファイルのレコードに含まれる文字位置の最小数を指定する。integer-3 は、ファイルのレコードに含まれる文字位置の最大数を指定する。
  2. ANS85 レコード記述に関連付ける文字位置数は、再定義および名前変更を除くすべての基本データ項目内の文字位置数の合計値に、桁詰めによる暗黙の FILLER 項目内の文字位置数を加えた値によって決まる。表を指定した場合は、以下のとおり処理される。
    1. レコード内に記述した表要素の最小数が、上記の合計値に含められて、そのレコード記述に関連付ける文字位置の最小数が決まる。
    2. レコード中に記述した表要素の最大数が、上記の合計値に含められて、そのレコード記述に関連付ける文字位置の最大数が決まる。
  3. ANS85 integer-2 を指定しない場合、ファイルのレコードに含まれる文字位置の最小数は、そのファイルのレコード用に記述した文字位置の最小数に等しい。
  4. ANS85 integer-3 を指定しない場合、ファイルのレコードに含まれる文字位置の最大数は、そのファイルのレコード用に記述した文字位置の最大数に等しい。
  5. ANS85 data-name-1 を指定した場合、ファイルに対して RELEASE 文、REWRITE 文、または WRITE 文を実行する前に、レコード内の文字位置数を、data-name-1 が参照するデータ項目に設定する。
  6. ANS85 data-name-1 を指定した場合、DELETE 文、RELEASE 文、REWRITE 文、START 文、または WRITE 文を実行しても、data-name-1 が参照するデータ項目の内容は変わらない。また、READ 文または RETURN 文の実行が失敗した場合も同様である。
  7. ANS85 RELEASE 文、REWRITE 文、または WRITE 文の実行中に、レコード内の文字位置数は、以下の条件によって決まる。
    1. data-name-1 を指定した場合、data-name-1 が参照するデータ項目の内容によって決まる。
    2. data-name-1 を指定せず、レコードに可変反復データ項目が含まれない場合、そのレコード内の文字位置数によって決まる。
    3. data-name-1 を指定せず、レコードに可変反復データ項目が含まれる場合、固定部分、および出力文の実行時の反復数によって記述された表の部分との合計値によって決まる。

    書き込み対象の論理レコード内の文字位置数が integer-2 よりも少ない、または integer-3 よりも多い場合、出力文は失敗し、関連付けた入出力状態に、その条件の原因を示す値が設定される。ただし、RELEASE 文の実行中は除く。

  8. ANS85 data-name-1 を指定した場合、ファイルに対する READ 文または RETURN 文の実行が正常に終了すると、data-name-1 が参照するデータ項目の内容は、読み取ったばかりのレコード内の文字位置数を示すように変更される。
  9. ANS85 READ 文または RETURN 文で INTO を指定した場合、暗黙指定の MOVE 文で送信側データ項目となる現在のレコード内の文字位置数は、以下の条件によって決まる。
    1. data-name-1 を指定した場合、data-name-1 が参照するデータ項目の内容によって決まる。
    2. data-name-1 を指定しない場合、data-name-1 を指定していたら data-name-1 が参照するデータ項目に転記されていた値によって決まる。

書き方 3 の一般規則

  1. 書き方 3 の RECORD 句では、integer-4 が最小サイズのデータ レコード内の最小文字数を表し、integer-5 が最大サイズのデータ レコード内の最大文字数を表す。ただしこの場合、各データ レコードのサイズはすべてレコード記述項で定義されている。
  2. 各データ レコードのサイズは、論理レコードを格納するために必要な文字位置数で指定する。その際、論理レコード内の項目を表すために使用する文字の型は問わない。レコードのサイズは、固定長のすべての基本項目の文字数の合計に、そのレコードに属する可変長項目 (ある場合) の最大文字数の合計を加えた値によって決まる。この合計値は、実際のレコードのサイズと異なる場合がある。「COBOL 言語の概念」の章の「文字の表現および基数の選定」トピック、および「SYNCHRONIZED 句」と「USAGE 句」セクションを参照。