カテゴリ: COBOL 更新日: 2025/12/23

COBOLのREAD文を完全マスター!初心者でもわかるレコードの読み込み方法

READ文でレコードを1件ずつ読み込む方法
READ文でレコードを1件ずつ読み込む方法

先生と生徒の会話形式で理解しよう

生徒

「COBOLでファイルの中身を1行ずつ読んでいくには、どうすればいいんですか?」

先生

「それにはREAD文を使います。1件ずつ、順番にデータを読み込むことができますよ。」

生徒

「どんな風に使うのか、具体的に教えてもらえますか?」

先生

「もちろんです!では、COBOLのREAD文の使い方を一緒に学んでいきましょう。」

1. READ文とは?

1. READ文とは?
1. READ文とは?

COBOL(コボル)のREAD文は、ファイルに保存されたデータを1行ずつ(1レコードずつ)読み込むための命令です。ファイルとは、パソコン上に保存されているメモ帳のようなものだとイメージしてください。その中に名前や金額、住所などの情報が行単位で並んでいます。

このREAD文を使えば、上から順番に1件ずつ読み込んで処理することができます。繰り返し読み取るときにとても便利です。

2. ファイルの準備:OPEN文とのセットで使う

2. ファイルの準備:OPEN文とのセットで使う
2. ファイルの準備:OPEN文とのセットで使う

READ文を使うためには、まずファイルを開いておく必要があります。それがOPEN文です。COBOLでは、ファイルを「読むために開く」ことをOPEN INPUTと呼びます。これを忘れるとファイルを読み込めません。


OPEN INPUT IN-FILE

IN-FILEはファイル名のようなものです。これは、SELECT文であらかじめ定義しておく必要があります。

3. 基本的なREAD文の使い方

3. 基本的なREAD文の使い方
3. 基本的なREAD文の使い方

ファイルをOPENしたら、次にREAD文を使って1行ずつデータを読み込んでいきます。以下が基本的な形です。


READ IN-FILE
    AT END
        MOVE 'YES' TO END-FLAG
END-READ

このコードは、「IN-FILEから1件読み込む。もしファイルの終わり(EOF: End Of File)に達したら、END-FLAGに'YES'を入れる」という意味です。

AT ENDという部分は、「もう読むデータがありません」という時に実行される処理を書きます。

4. ファイルからすべてのデータを読み込む方法

4. ファイルからすべてのデータを読み込む方法
4. ファイルからすべてのデータを読み込む方法

実際には、ファイルの先頭から最後まで1件ずつすべて読み込みたい場合が多いです。その場合、PERFORMREADを組み合わせて繰り返し処理を行います。


PERFORM UNTIL END-FLAG = 'YES'
    READ IN-FILE
        AT END
            MOVE 'YES' TO END-FLAG
        NOT AT END
            DISPLAY IN-RECORD
END-PERFORM

このコードでは、END-FLAGが'YES'になるまで、READ文を繰り返します。1件読み込むたびに、IN-RECORDの中身を表示しています。

5. 実際のサンプルコード(全体)

5. 実際のサンプルコード(全体)
5. 実際のサンプルコード(全体)

ここまでの内容をすべてまとめた、COBOLのサンプルプログラムです。


IDENTIFICATION DIVISION.
PROGRAM-ID. READ-SAMPLE.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT IN-FILE ASSIGN TO "data.txt"
        ORGANIZATION IS LINE SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD IN-FILE.
01 IN-RECORD PIC X(50).

WORKING-STORAGE SECTION.
01 END-FLAG PIC X(3) VALUE "NO".

PROCEDURE DIVISION.
    OPEN INPUT IN-FILE

    PERFORM UNTIL END-FLAG = "YES"
        READ IN-FILE
            AT END
                MOVE "YES" TO END-FLAG
            NOT AT END
                DISPLAY IN-RECORD
    END-PERFORM

    CLOSE IN-FILE
    STOP RUN.

6. 実行結果の例

6. 実行結果の例
6. 実行結果の例

たとえば、「data.txt」の中に以下のようなデータがあった場合:


田中 太郎,1000円,東京都
山田 花子,2000円,大阪府
佐藤 一郎,1500円,愛知県

上記のプログラムを実行すると、以下のように表示されます。


田中 太郎,1000円,東京都
山田 花子,2000円,大阪府
佐藤 一郎,1500円,愛知県

7. よくあるエラーとその対策

7. よくあるエラーとその対策
7. よくあるエラーとその対策

・ファイルが見つからない
指定したファイル(例:"data.txt")が存在しないと、プログラムはファイルを開けません。実際にそのファイルがあるか確認しましょう。

・CLOSE文を忘れる
ファイルを使い終わったら、CLOSE文で閉じることを忘れないようにしましょう。

・END-FLAGの初期値が間違っている
END-FLAGは"NO"で始める必要があります。"YES"だと1件も読み込まれません。

8. よく使う用語の説明

8. よく使う用語の説明
8. よく使う用語の説明
  • レコード:ファイルの中の1行のデータ。人の名前や金額などのまとまり。
  • READ:ファイルから1件のレコードを読み込む命令。
  • OPEN:ファイルを読み込みや書き込みのために開く命令。
  • PERFORM:何度も繰り返し処理をするための命令。
  • DISPLAY:文字やデータを画面に表示する命令。
  • END-FLAG:ファイルの終わりを判断するための目印。

まとめ

まとめ
まとめ

ここまで、COBOLにおけるREAD文の使い方を詳しく学びました。READ文はファイルからデータを1件ずつ読み込むための基本命令で、データの処理や表示、他ファイルへの出力などに欠かせない存在です。特に、OPEN文でファイルを開いてからPERFORMループと組み合わせて使うことで、ファイルの先頭から終わりまで順番に読み込む処理が実現できます。

また、ファイルの終わり(EOF)を判定するためのAT END句や、それをフラグで管理する方法も重要なポイントでした。このフラグ制御を用いれば、ループの終了条件を明確にできるため、プログラムの流れをきちんと制御することができます。

以下は、今回の内容を整理した初心者向けの簡単なサンプルです。ファイルに保存された顧客情報を1行ずつ読み取り、画面に表示するだけの処理ですが、COBOLの基本がぎゅっと詰まったコードです。


IDENTIFICATION DIVISION.
PROGRAM-ID. READ-DEMO.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT IN-FILE ASSIGN TO "customer.txt"
        ORGANIZATION IS LINE SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD IN-FILE.
01 CUSTOMER-REC PIC X(60).

WORKING-STORAGE SECTION.
01 END-FLAG     PIC X(3) VALUE "NO".

PROCEDURE DIVISION.
    OPEN INPUT IN-FILE

    PERFORM UNTIL END-FLAG = "YES"
        READ IN-FILE
            AT END
                MOVE "YES" TO END-FLAG
            NOT AT END
                DISPLAY "読み込み中:" CUSTOMER-REC
    END-PERFORM

    CLOSE IN-FILE
    STOP RUN.

このコードは、ごく基本的な構造ですが、COBOLプログラミングではよく登場するパターンです。ファイル読み取り処理は、請求書の明細出力や、売上記録の集計など、多くの業務で使われており、確実に身につけておきたい技術の一つです。

プログラムの動きを理解するには、実際にファイルの中身を自分で作って読み込んでみるのが一番です。たとえば「山田太郎,東京都,35歳」といった顧客データを数行だけ入れたテキストファイルを用意して、上のサンプルを動かしてみると、より理解が深まるでしょう。

最初のうちはうまくいかないこともあるかもしれませんが、エラーの内容を見て少しずつ修正していく経験がとても大切です。READ文の動作、AT ENDの意味、PERFORMループとの関係性が自然に理解できるようになると、COBOLのファイル処理が一気に楽しく感じられるようになるはずです。

最後に、ファイルを読み終えたらCLOSE命令でファイルを閉じることを忘れずに。プログラムの終了処理としてのこのひと手間が、プロらしい丁寧なコーディングにつながります。

先生と生徒の振り返り会話

生徒

「先生、READ文って、ただ1行読み込むだけじゃなくて、フラグとかループと組み合わせて使うんですね!」

先生

「そうなんです。単体でも使えますが、実際の現場ではPERFORMやAT ENDと一緒に活用することがほとんどですね。」

生徒

「END-FLAGの仕組みも分かってきました! 'YES' になるまで繰り返して処理するっていう発想が面白いです。」

先生

「その調子です。次は読み込んだデータを加工したり、別のファイルに書き出したりする処理にも挑戦してみましょう。」

生徒

「はい!まずは今日の内容をしっかり復習して、ファイル読み込み処理に慣れておきます!」

カテゴリの一覧へ
新着記事
New1
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New2
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
New3
COBOL
COBOLの帳票出力を完全攻略!数値項目のカンマ・小数点編集例を徹底解説
New4
C#
C#の配列とListの違いを比較して理解しよう
人気記事
No.1
Java&Spring記事人気No1
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.2
Java&Spring記事人気No2
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.3
Java&Spring記事人気No3
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
No.4
Java&Spring記事人気No4
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.5
Java&Spring記事人気No5
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.6
Java&Spring記事人気No6
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.7
Java&Spring記事人気No7
C#
C#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決
No.8
Java&Spring記事人気No8
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法