カテゴリ: COBOL 更新日: 2026/01/26

COBOLのシーケンシャルファイルとは?基本構造と処理フローを初心者向けに完全ガイド!

シーケンシャルファイルの基本構造と処理フロー
シーケンシャルファイルの基本構造と処理フロー

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

生徒

「先生、COBOLでファイルを使うって聞いたんですけど、どうやって使うんですか?」

先生

「COBOLでは、ファイルを読み書きするのに『シーケンシャルファイル』というものをよく使います。」

生徒

「シーケンシャルファイル?なんだか難しそう…」

先生

「大丈夫ですよ。今回は、初心者の方でも理解できるように、シーケンシャルファイルの基本構造と処理の流れを、わかりやすく説明しますね!」

1. シーケンシャルファイルとは?

1. シーケンシャルファイルとは?
1. シーケンシャルファイルとは?

COBOLでよく使われる「シーケンシャルファイル」とは、データを1行ずつ、順番に読み書きするファイル形式のことです。

たとえば、ノートに1行ずつ名前や年齢を書いていくイメージです。1ページ目から順番に読み進める必要があります。途中の行だけ読みたい場合でも、最初から順番に読まないといけません。

この形式は、銀行の取引記録や名簿など、大量のデータを順番に処理する場面で使われます。

2. シーケンシャルファイルの基本構造

2. シーケンシャルファイルの基本構造
2. シーケンシャルファイルの基本構造

COBOLでファイルを扱うには、まずプログラム内でファイルの情報を定義する必要があります。シーケンシャルファイルでは以下の3つの定義が重要です:

  • SELECT句(セレクト):ファイル名と物理ファイルの関連付けをします
  • FD句(ファイル記述句):ファイル内の1レコード(1行)の形を定義します
  • OPEN・READ・WRITE・CLOSE文:ファイルを開いて読み書きし、最後に閉じます

これらを使うことで、ファイルの読み書きがスムーズに行えるようになります。

3. シーケンシャルファイルの処理フロー

3. シーケンシャルファイルの処理フロー
3. シーケンシャルファイルの処理フロー

シーケンシャルファイルを使った基本的な処理の流れは次のようになります:

  1. SELECT句でファイルを指定する
  2. FD句でレコードの中身を定義する
  3. OPEN文でファイルを開く
  4. READまたはWRITE文でデータを読み書きする
  5. CLOSE文でファイルを閉じる

この流れをきちんと守ることで、安全にファイルを操作できます。

4. 実際のサンプルプログラム(読み込み編)

4. 実際のサンプルプログラム(読み込み編)
4. 実際のサンプルプログラム(読み込み編)

ここでは、シーケンシャルファイルを読み込んで、名前と年齢を表示する簡単な例を紹介します。


IDENTIFICATION DIVISION.
PROGRAM-ID. READ-FILE-SAMPLE.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT INPUT-FILE ASSIGN TO 'USER.DAT'
        ORGANIZATION IS SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD  INPUT-FILE.
01  USER-RECORD.
    05 USER-NAME  PIC A(20).
    05 USER-AGE   PIC 9(3).

WORKING-STORAGE SECTION.
01  EOF-FLAG     PIC X VALUE 'N'.
    88 END-OF-FILE VALUE 'Y'.
    88 NOT-END-OF-FILE VALUE 'N'.

PROCEDURE DIVISION.
    OPEN INPUT INPUT-FILE
    PERFORM UNTIL END-OF-FILE
        READ INPUT-FILE
            AT END
                SET END-OF-FILE TO TRUE
            NOT AT END
                DISPLAY USER-NAME
                DISPLAY USER-AGE
        END-READ
    END-PERFORM
    CLOSE INPUT-FILE
    STOP RUN.

このプログラムでは、ユーザーデータを1件ずつ順番に読み込み、画面に表示しています。

5. 実際のサンプルプログラム(書き込み編)

5. 実際のサンプルプログラム(書き込み編)
5. 実際のサンプルプログラム(書き込み編)

次に、シーケンシャルファイルにデータを書き込むサンプルです。


IDENTIFICATION DIVISION.
PROGRAM-ID. WRITE-FILE-SAMPLE.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
    SELECT OUTPUT-FILE ASSIGN TO 'USER.OUT'
        ORGANIZATION IS SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD  OUTPUT-FILE.
01  USER-RECORD.
    05 USER-NAME  PIC A(20).
    05 USER-AGE   PIC 9(3).

WORKING-STORAGE SECTION.
01  USER-NAME-IN  PIC A(20) VALUE 'TANAKA TARO'.
01  USER-AGE-IN   PIC 9(3)  VALUE 025.

PROCEDURE DIVISION.
    MOVE USER-NAME-IN TO USER-NAME
    MOVE USER-AGE-IN TO USER-AGE
    OPEN OUTPUT OUTPUT-FILE
    WRITE USER-RECORD
    CLOSE OUTPUT-FILE
    STOP RUN.

この例では、「TANAKA TARO(25歳)」というデータを新しいファイルに書き出しています。

6. よくある間違いと注意点

6. よくある間違いと注意点
6. よくある間違いと注意点
  • ファイルをOPENしないでREADWRITEを使おうとするとエラーになります
  • CLOSEを忘れると、データが正しく保存されなかったり、次にファイルを使えなくなることがあります
  • ファイル名は実際に存在しているもの、または書き込み可能な場所でないと動作しません

7. シーケンシャルファイルとテキストファイルの違いは?

7. シーケンシャルファイルとテキストファイルの違いは?
7. シーケンシャルファイルとテキストファイルの違いは?

初心者の方から「テキストファイルとどう違うの?」という質問をよく受けます。実は、COBOLのシーケンシャルファイルもテキストファイルの一種です。ただし、COBOLでは1行=1レコードとして扱い、その構造をしっかり定義して読み書きする点が特徴です。

8. ファイルの組織(ORGANIZATION)とは?

8. ファイルの組織(ORGANIZATION)とは?
8. ファイルの組織(ORGANIZATION)とは?

ORGANIZATION IS SEQUENTIALという書き方が出てきましたね。これは「順番に処理するファイルですよ」という意味です。他にもインデックス付きファイルなどがありますが、今回はシーケンシャル(順次)に限定しています。

まとめ

まとめ
まとめ

COBOLでファイル処理を行ううえで、シーケンシャルファイルは最も基本的でありながら実用的な手段です。順番通りに1行ずつ読み込んだり書き込んだりするこのファイル形式は、名簿・取引履歴・売上データなど、大量のデータを処理する現場で長年使われ続けています。

今回の記事では、シーケンシャルファイルの定義から処理の流れ、そして実際の読み書きのサンプルプログラムまでを丁寧に確認しました。SELECT句FD句といった構文でファイルの定義を行い、OPENしてからREADまたはWRITEし、最後にCLOSEで終了するという一連の処理は、COBOLプログラムの基本中の基本です。

また、ファイルからデータを読み込むときには88レベルの条件名を使ってEOF(終端)を判定したり、書き込むときにはWORKING-STORAGEに入力値をあらかじめMOVEしてからWRITEするなど、正確な手順を理解することが安定したプログラム作成につながります。

たとえば、以下のようなサンプルは、複数人のユーザー情報を読み込みながらメッセージを出力する場面を想定しています。


PROCEDURE DIVISION.
    OPEN INPUT INPUT-FILE
    PERFORM UNTIL END-OF-FILE
        READ INPUT-FILE
            AT END
                SET END-OF-FILE TO TRUE
            NOT AT END
                DISPLAY "ようこそ、" USER-NAME "さん(年齢:" USER-AGE ")"
        END-READ
    END-PERFORM
    CLOSE INPUT-FILE
    STOP RUN.

このように、ファイルに保存された複数行のデータを1つずつ処理していくことができ、プログラムとしての応用力が高まります。また、ASSIGN TOで指定するファイル名は、実行環境に依存するため、パスやファイル存在確認も事前にしておくと良いでしょう。

さらに、シーケンシャルファイルの中身は一般的なテキストファイルに近いため、他の言語やOSとも比較的相性がよく、他システムとのデータ連携にも活かせます。

最後に、ORGANIZATION IS SEQUENTIALという指定によって、ファイルの扱い方が「順番どおり」であることを明示しています。これはCOBOLにおける「ファイルの組織」の一種であり、他には「インデックス付きファイル(INDEXED)」「相対ファイル(RELATIVE)」なども存在しますが、初心者の方はまずこのシーケンシャル形式から慣れていくのがよいでしょう。

実際の業務プログラムでは、入力ファイルを1つ読み込み、加工して出力ファイルに書き出すという流れがとてもよく使われます。その基本となる構文と流れをしっかり身につけておけば、複雑なバッチ処理にも対応できるようになります。

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

生徒

「先生、シーケンシャルファイルって思ったより簡単だったんですね!ファイルを開いて、読んで、閉じるって流れがしっかりわかりました!」

先生

「うん、その流れを正しく覚えることがとても大切なんだよ。SELECT句やFD句での定義も忘れずにね。」

生徒

「88レベルでEOFをチェックするのも便利でした!あれがあると、読み込みループがすっきり書けますね。」

先生

「その通り。COBOLの構文はルールが多いけれど、きちんと守れば動きはとても安定してるよ。」

生徒

「あと、テキストファイルとの違いもなんとなく分かってきました。1行=1レコードって感覚が大事なんですね。」

先生

「うん、それがわかればファイル操作はもう怖くない。次はインデックス付きファイルにもチャレンジしてみようか。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

COBOLのシーケンシャルファイルとは何ですか?

COBOLにおけるシーケンシャルファイルとは、データを1行ずつ順番に処理するファイル形式です。レコードを順に読み書きするため、途中の行だけ読みたい場合も最初から順に処理します。銀行の取引記録や名簿など、大量データ処理に向いています。
カテゴリの一覧へ
新着記事
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
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.5
Java&Spring記事人気No5
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
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を使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法