COBOL言語の「RECORD句」ってなに?注意点など説明します | 用語辞典
COBOL(コボル)言語の予約語RECORD句を使った命令文の書き方とは

COBOL(コボル)言語のRECORD句とは?
COBOL(コボル)には、様々な予約語が用意されていますが、レコード長が可変のファイルを扱う場合は、レコードのサイズ、または可変長レコードのサイズを指定するためにRECORD句を使用します。
本記事では、COBOLにおけるRECORD句について基本的な使い方やルール、注意点などをご紹介します。
書き方:
FD [ファイル名]
RECORD IS VARYING IN SIZE
FROM [最小長] TO [最大長] CHARACTERS
DEPENDING ON [レコード長項目].
レコード記述項.
RECORD句は、FD句(ファイル記述項)の中で指定します。
以下にRECORD句を使用して、可変長レコードのファイルを作成する簡単なプログラムを紹介します。

実行結果:
![]()
プログラムを実行して作成されたファイル"test.txt"を確認すると、実行結果のように出力されています。
使用したサンプルでは、RECORD句で最小長5、最大長10の可変長のレコードを指定しています。
DEPENDINGで指定したレコード長項目は、ファイルにレコードを書き込む前にサイズ6で指定しています。
なお、ファイルに書き込むレコードのデータ項目は、RECORD句で指定した最小長、最大長の範囲内のサイズを指定しなければいけません。
RECORD句のCOBOL(コボル)言語における基本事項やルールについて
- RECORD、VARYINGなどの空白や改行有無は自由に設定できます。
 - 最小長、最大長は1以上の最少レコード長を指定し、最少長より大きい値の最大長を数値で指定する必要があります。
 - レコード長項目は、ファイルの読み込みや書き込みを行うためのレコードのデータ項目を指定します。
 - レコード長項目は、WORKING-STORAGE SECTIONに数値形式で定義する必要があります。
 - FD句の中で指定する、ファイルに書き込むためのレコード記述項目は、RECORD句で指定した最小長、最大長の範囲内で指定する必要があります。
 - RECORD句の「FROM [最小長] TO [最大長] CHARACTERS」は、省略可能です。
 - FD句でRECORD句を指定しない場合は、レコード記述項目のサイズによって、書き込むレコードのサイズが決まります。
 - ファイルに書き込むレコードのサイズは、DEPENDINGで指定したデータ長項目に設定します。
 
COBOL(コボル)言語のRECORD句を扱う上での注意点
- 最大長は、最小長以下の値を指定することはできません。
 - レコード記述項目のサイズは、RECORD句の最小長、最大長の範囲で設定しなければいけません。
 
例えば以下のように最小長5、最大長10で設定した場合は、その範囲外のレコード記述項目を指定すると、コンパイルエラーが発生します。
RECORD VARYING IN SIZE
FROM 5 TO 10 CHARACTERS
DEPENDING ON TEST-NUM.
01 OUT-FILE-REC PIC X(11).
![]()
レコードのサイズが大きい旨のコンパイルエラーが発生します。
RECORD句を使ったCOBOL(コボル)プログラムの活用法
RECORD句を使用すれば、1つのレコード記述項目で何回も自由に書き込むサイズを指定して、可変長のレコードをファイルに書き込むことが可能です。
以下にレコード長項目を複数回指定して、レコードをファイルに書き込む簡単なサンプルを紹介します。
- IDENTIFICATION DIVISION.
 - PROGRAM-ID. RECORD_SAMPLE02.
 - ENVIRONMENT DIVISION.
 - INPUT-OUTPUT SECTION.
 - FILE-CONTROL.
 - *> ファイル名を設定する
 - SELECT TEST-FILE ASSIGN TO 'test.txt'
 - ORGANIZATION IS LINE SEQUENTIAL.
 - DATA DIVISION.
 - FILE SECTION.
 - *> 書きこむファイルを指定する
 - FD TEST-FILE
 - *> 可変長ファイルのレコード長を指定する
 - RECORD VARYING IN SIZE
 - FROM 5 TO 10 CHARACTERS
 - DEPENDING ON TEST-NUM.
 - 01 OUT-FILE-REC PIC X(10).
 - WORKING-STORAGE SECTION.
 - 01 TEST-RECORD-AREA.
 - 03 TEST-NUM PIC 9(1).
 - 03 TEST-STR PIC X(10).
 - PROCEDURE DIVISION.
 - MAIN SECTION.
 - *> ファイルをオープンする
 - OPEN OUTPUT TEST-FILE.
 - *> 書き込む文字列を指定
 - MOVE "ABCDE01234" TO TEST-STR.
 - *> 9byte
 - COMPUTE TEST-NUM = 9.
 - MOVE TEST-STR TO OUT-FILE-REC.
 - WRITE OUT-FILE-REC.
 - *> 8byte
 - COMPUTE TEST-NUM = 8.
 - WRITE OUT-FILE-REC.
 - *> 7byte
 - COMPUTE TEST-NUM = 7.
 - WRITE OUT-FILE-REC.
 - *> 6byte
 - COMPUTE TEST-NUM = 6.
 - WRITE OUT-FILE-REC.
 - *> 5byte
 - COMPUTE TEST-NUM = 5.
 - WRITE OUT-FILE-REC.
 - *> 4byte
 - COMPUTE TEST-NUM = 4.
 - WRITE OUT-FILE-REC.
 - *> 3byte
 - COMPUTE TEST-NUM = 3.
 - WRITE OUT-FILE-REC.
 - *> 2byte
 - COMPUTE TEST-NUM = 2.
 - WRITE OUT-FILE-REC.
 - *> 1byte
 - COMPUTE TEST-NUM = 1.
 - WRITE OUT-FILE-REC.
 - *> ファイルクローズ
 - CLOSE TEST-FILE.
 - STOP RUN.
 
実行結果:

サンプルでは、DEPENDING で指定したレコード長項目TEST-NUMの値を複数指定し、ファイルにレコードを書き込んでいます。
実行結果のとおり、指定したレコード長でレコードが書き込まれているのがわかります。
このようにRECORD句を指定すれば、書き込むレコードのサイズを1つのレコード記述項目で何度も変更することが可能です。
また、サンプルで示したようにDEPENDINGで指定したレコード長項目は、レコード記述項目のように最小値から最大値の範囲外のサイズ1~4を指定することも可能です。
この記事を読んだ人は、こちらの記事も読んでいます
あなたのCOBOL技術を活かしませんか?
COBOL入門のカテゴリー
1. 優良社員が多数在籍しています
				2. 即日派遣、又は請負います
				3. 安心価格で請負います
				4. 同時、協力会社募集中です
1. 正社員
				2. 契約社員
				3. 個人事業主
				などの 求人情報 が閲覧できます。
目指せ!COBOLダントツ一番企業。
				創業当初の話や理念が閲覧できます。
COBOLとは、どのようなプログラミング言語なのか、初心者にもわかりやすく、文法の例をあげて解説してます。
COBOL入門の人気記事
- COBOL言語とは?プログラムの書き方やルールを解説!|基礎ガイド
 - 【COBOL言語】条件分岐処理の代名詞「IF文」について知ろう|用語辞典
 - COBOL言語の「MOVE文」とは?転記のルールをご紹介します|用語辞典
 - COBOL言語の「STRING文」とは?文字連結の基礎知識と注意点|用語辞典
 - 多枝分岐ってなに?COBOL言語の「EVALUATE文」を知ろう!|用語辞典
 
- COBOL言語の「PICTURE句」とは?基本事項を解説します!|用語辞典
 - COBOL言語で計算処理をするなら「COMPUTE文」|用語辞典
 - COBOL言語の「REDEFINES句」とは?使い方を確認しよう!|用語辞典
 - 覚えておけば楽ができる?COBOL言語の「COPY文」の使い方|用語辞典
 - COBOL言語の文字列操作のパターンを理解しよう!|基礎ガイド
 - COBOL言語の初期化処理に重宝する「INITIALIZE文」とは?|用語辞典
 - COBOL言語の「LOW-VALUE」の使い方について理解しよう!|基礎ガイド
 - COBOL言語の「OCCURS句」について知ろう!学ぶべき基本とは|用語辞典
 - COBOL言語初心者も安心! 難解「CALL文」をスッキリ解決|用語辞典
 - COBOL言語の「PERFORM文」とは。実行制御について解説!|用語辞典
 - COBOL言語の繰り返し処理のパターンを理解しよう!|基礎ガイド
 - COBOL言語の「定数」の種類と使い方について理解しよう!|用語辞典
 - COBOLのDBアクセスパターンを学ぼう!「FETCH」|応用ガイド
 - COBOL言語の「DISPLAY文」は、ディスプレイ出力の為にある|用語辞典
 - COBOL言語の「VARYING句」は便利?使用方法を学びましょう|用語辞典
 

