機能
RECORD(レコードの大きさ)句は、固定長レコード内の文字数または可変長レコード内の文字数の範囲を指定する。可変長レコードに関しては、最小文字数と最大文字数とを指定する。
この節全体を通じて使用される固定形式のファイルおよび可変形式のファイルの概念は、直接は行順編成ファイルに適用されない。使用するCOBOL での行順編成ファイルの使用についての詳細は、COBOLシステムのマニュアルを参照。
標準COBOL定義の一部を構成するにもかかわらず、X/OpenのCOBOL言語定義では、RECORD CONTAINS句は明示的に除外されている。したがって、X/OpenのCOBOLに準拠する原始プログラム内ではこの句を使用するべきではない。
一般形式
形式 1
形式 2
形式 3
構文規則
形式 1
- 該当するファイルのレコード記述項に記述する文字数は、整数-1と同じにする。
形式 2
-
該当するファイルのレコード記述項に記述する文字数は、整数-2に指定する文字数より少なくてはならない。また、整数-3に指定する文字数より多くてはならない。
-
整数-3は、整数-2よりも大きくする。
-
データ名-1は、作業場所節または連絡節中で符号なしの整数の基本項目として記述しておく。
一般規則
すべての形式
- RECORD句を指定しないと、レコード記述項に記述する各データの大きさの和がレコードの大きさとなる。
-
対応するファイル結合子が外部ファイル結合子である場合、そのファイル結合子と関連する実行単位中のすべてのファイル記述項において、整数-1、整数-2、整数-3に同じ値を指定しなければならない。RECORD句を指定しない場合、そのファイル結合子に関連するレコード記述項は、すべて同じ長さにする。
-
行順編成ファイルは、固定形式ファイルでも可変形式ファイルでもない。このため、RECORDING MODE、RECORD CONTAINS、RECORD VARYING IN SIZE句のいずれかを書いても書かなくても、その性能には影響しない。
形式 1
- 形式 1は、固定長レコードを定義するために使用する。整数-1には、ファイル中の各レコードの文字数を指定する。
形式 2
-
形式 2 は、可変長レコードを定義するために使用する。整数-2には、ファイル中のレコードの中で最短のものの文字数を指定する。整数-3には、ファイル中のレコードの中で最長のものの文字数を指定する。
-
レコードの文字数は、その中に含まれる基本データ項目の文字数を合計することによって決まる。ただし、再定義および再命名分を除く。また、桁詰めによって暗黙のFILLERがとられている場合は、それも数に含める。表を指定した場合は、下記のように扱われる。
- レコード中に記述した表要素の最小数が、上記の合計に含められて、そのレコードの最短文字数が決定される。
- レコード中に記述した表要素の最大数が、上記の合計に含められて、そのレコードの最長文字数が決定される。
- 整数-2を指定しないと、該当するファイルのレコードの最短文字数は、そのファイルのレコード用に記述した最小の文字数に等しいものとされる。
-
整数-3を指定しないと、該当するファイルのレコードの最長文字数は、そのファイルのレコード用に記述した最大の文字数に等しいものとされる。
-
データ名-1を指定した場合、該当するファイルに対してRELEASE文、REWRITE文、WRITE文を実行する前に、該当するレコードの文字数をデータ名-1のデータ項目に設定する。
-
データ名-1を指定した場合、DELETE文、RELEASE文、REWRITE文、START文、WRITE文を実行しても、データ名-1のデータ項目の内容は変わらない。READ文またはRETURN文の実行が不成功に終わった場合も、データ名-1のデータ項目の内容は変わらない。
-
RELEASE文、REWRITE文、WRITE文を実行する間、該当するレコード中の文字数は、下記の条件によって決定される。
- データ名-1を指定した場合、データ名-1のデータ項目の内容によって。
- データ名-1を指定せず、レコードに可変反復データ項目が含まれない場合、そのレコードの文字数によって。
- データ名-1を指定せず、レコードに可変反復データ項目が含まれる場合、固定部分と出力文の実行時の反復数に基づく可変な表部分との和によって。
書き出す論理レコードの文字数が、整数-2よりも少ないか整数-3よりも多いと、出力文は不成功に終わる。そして、対応する入出力状態に、その原因となった条件を示す値が設定される。ただし、RELEASE文の実行中は除く。
-
データ名-1を指定した場合、該当するファイルに対するREAD文またはRETURN文の実行が正常に終了すると、データ名-1のデータ項目の内容は、読み込んだばかりのレコードの文字数を示すように変更される。
-
READ文またはRETURN文の中にINTOを指定すると、暗黙のMOVE文の送出し側データ項目となる現在レコード中の文字数は、下記の条件によって決定される。
- データ名-1を指定した場合は、データ名-1のデータ項目の内容によって。データ名-1を指定した場合は、データ名-1のデータ項目の内容によって。
- データ名-1を指定しなかった場合は、データ名-1を指定していたならばデータ名-1のデータ項目に転記されるはずの値によって。
形式 3
- RECORD句の形式 3を使用すると、整数-4が最短のデータレコードの文字数を表わし、整数-5が最長のデータレコードの文字数を表わす。しかし、この場合は、各データレコードの大きさは、レコード記述項に完全に定義されている。
- 各データレコードの大きさは、論理レコードを格納するのに必要な文字数で指定する。その際、論理レコード内のデータ項目を表わすために使用される文字の型は問わない。レコードの大きさは、すべての固定長の基本項目の文字数の合計に、可変長項目が含まれればその最大の文字数の合計を加えたものによって、決定される。この合計値が実際のレコードの大きさと違っていてもよい。COBOL言語の概念の章の文字の表現と基数の選定節、およびこの章のSYNCHRONIZED(桁詰め)句とUSAGE(用途)句の各節を参照。