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

COBOLのマルチファイル処理を完全解説!初心者でもわかるファイルの同時操作

マルチファイル処理のポイントと事例
マルチファイル処理のポイントと事例

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

生徒

「COBOLでは、複数のファイルを同時に扱うことってできますか?」

先生

「はい、できますよ。複数のファイルを一緒に読み込んだり、書き込んだりすることも可能です。」

生徒

「それって難しそうですね…初心者でも理解できますか?」

先生

「もちろんです!ファイルは「本」のようなものだと考えれば、とても分かりやすくなりますよ。順番に説明していきましょう。」

1. マルチファイル処理とは?

1. マルチファイル処理とは?
1. マルチファイル処理とは?

COBOL(コボル)のマルチファイル処理とは、2つ以上のファイルを同時に読み書きすることを指します。たとえば、あるファイルからデータを読み取り、別のファイルに保存したり、2つの異なるファイルを比較して一致するデータだけを出力したりします。

これは、一冊の本を読みながら、別のノートに書き写すようなイメージです。

2. ファイルを複数開く準備をしよう

2. ファイルを複数開く準備をしよう
2. ファイルを複数開く準備をしよう

COBOLで複数のファイルを扱うときは、最初にそれぞれのファイルの情報をENVIRONMENT DIVISIONFILE SECTIONで定義します。

ENVIRONMENT DIVISIONでは、ファイルの場所や種類を設定し、FILE SECTIONではファイルの中身の形を指定します。


SELECT IN-FILE1 ASSIGN TO "DATA1.DAT".
SELECT IN-FILE2 ASSIGN TO "DATA2.DAT".
SELECT OUT-FILE ASSIGN TO "RESULT.DAT".

3. マルチファイルを使った実用例

3. マルチファイルを使った実用例
3. マルチファイルを使った実用例

ここでは、2つの入力ファイルからデータを読み取り、その内容をひとつの出力ファイルにまとめる例を紹介します。

例え:2冊の本を交互に読みながら、重要な部分を1冊のノートにまとめる作業です。


MOVE "NO" TO EOF1-FLAG.
MOVE "NO" TO EOF2-FLAG.

PERFORM UNTIL EOF1-FLAG = "YES" AND EOF2-FLAG = "YES"
    IF EOF1-FLAG = "NO"
        READ IN-FILE1
            AT END MOVE "YES" TO EOF1-FLAG
            NOT AT END WRITE OUT-REC FROM IN-REC1
        END-READ
    END-IF

    IF EOF2-FLAG = "NO"
        READ IN-FILE2
            AT END MOVE "YES" TO EOF2-FLAG
            NOT AT END WRITE OUT-REC FROM IN-REC2
        END-READ
    END-IF
END-PERFORM

ポイント解説:

  • EOF1-FLAGEOF2-FLAGは、それぞれのファイルの終わり(EOF)を確認するための「しるし」です。
  • PERFORM UNTILは、両方のファイルをすべて読み終えるまで繰り返し処理します。
  • WRITE OUT-REC FROM IN-REC1は、読み取った内容を出力ファイルに書き出しています。

4. IF文で分岐する場合もある

4. IF文で分岐する場合もある
4. IF文で分岐する場合もある

2つのファイルの中身を比較して、一致するデータだけを出力したい場合など、IF文を使った条件分岐が必要になります。

例え:2冊の名簿を見比べて、同じ名前があったらノートに書く作業です。


IF IN-REC1-NAME = IN-REC2-NAME
    WRITE OUT-REC FROM IN-REC1
END-IF

5. マルチファイル処理の注意点

5. マルチファイル処理の注意点
5. マルチファイル処理の注意点

COBOLでマルチファイル処理を行う際に注意すべきポイントを紹介します。

  • ファイルをOPENし忘れない:すべてのファイルを最初にOPENしておかないと、読み書きできません。
  • ファイルのCLOSEも忘れずに:処理が終わったら、CLOSE文でファイルを閉じる必要があります。
  • EOFの扱い:どのファイルが終わったのかを個別に判断して、正しくループを抜ける必要があります。

OPEN INPUT IN-FILE1 IN-FILE2
OPEN OUTPUT OUT-FILE

...(読み書き処理)...

CLOSE IN-FILE1
CLOSE IN-FILE2
CLOSE OUT-FILE

6. 実行結果のイメージ

6. 実行結果のイメージ
6. 実行結果のイメージ

上の例では、2つの入力ファイルの中身が交互に出力ファイルに書き込まれます。結果のイメージは次のようになります。


山田 太郎,1980年生まれ
佐藤 花子,1990年生まれ
田中 一郎,1975年生まれ
鈴木 次郎,1985年生まれ

7. よくある質問(FAQ)

7. よくある質問(FAQ)
7. よくある質問(FAQ)

Q. マルチファイルって何に使うの?

A. たとえば「売上データ」と「顧客データ」など、複数の情報を同時に処理したいときに使います。

Q. ファイル形式が違ってもいいの?

A. ファイルごとにレイアウトを設定できるので、形式が違っても問題ありません。

Q. 3つ以上のファイルも処理できるの?

A. はい、必要な数だけファイルを定義すれば可能です。ただし、プログラムが複雑になるので注意が必要です。

カテゴリの一覧へ
新着記事
C#でタイムスタンプの精度を上げるためのテクニックを徹底解説!(初心者向け)
C#のコーディング規約(C# Coding Conventions)とは?読みやすいコードを書くための基本ルール
C#のデストラクタ(ファイナライザ)の使い方と注意点をやさしく解説!
COBOL資産のバージョン管理とは?初心者でもわかる保守と管理の基本
人気記事
No.1
Java&Spring記事人気No1
COBOLで学ぶSELECT文のORDER BY・GROUP BY活用法!初心者でもわかるデータ集計
No.2
Java&Spring記事人気No2
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.3
Java&Spring記事人気No3
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法
No.4
Java&Spring記事人気No4
COBOLで学ぶカーソル操作と複数行データ取得の基本
No.5
Java&Spring記事人気No5
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.6
Java&Spring記事人気No6
C#の数値型をマスターしよう!int・double・decimalの違いと使い方
No.7
Java&Spring記事人気No7
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.8
Java&Spring記事人気No8
C#の日付型(DateTime)と基本的な使い方を解説|初心者向け入門ガイド