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

COBOLのFILE SECTIONとレコードレイアウトをやさしく解説!初心者にもわかるファイル処理の基本

FILE SECTIONの記述とレコードレイアウトの設計
FILE SECTIONの記述とレコードレイアウトの設計

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

生徒

「COBOLでファイルを読み込むときって、どうやってデータの形を決めるんですか?」

先生

「それにはFILE SECTIONと呼ばれる部分で、データのレコードレイアウトを定義します。」

生徒

「レコードレイアウトって、なにか図のようなものですか?」

先生

「その通りです!ファイルの中に並んでいるデータの“設計図”みたいなものですね。今からやさしく説明していきますよ!」

1. FILE SECTIONとは?

1. FILE SECTIONとは?
1. FILE SECTIONとは?

FILE SECTION(ファイルセクション)は、COBOLプログラムの中でファイルの中身をどのように取り扱うかを定義する場所です。

ファイルとは、パソコンの中に保存されているデータのことで、「名前・年齢・住所」などの情報が1行ずつ入っていることが多いです。

FILE SECTIONでは、その1行を「どういう項目でできているか」をCOBOLに教える必要があります。それをレコードレイアウトと呼びます。

2. レコードレイアウトとは?

2. レコードレイアウトとは?
2. レコードレイアウトとは?

レコードレイアウトとは、ファイルの1行の中にどんなデータが、どの位置に、どれくらいの長さで入っているかを決めた設計図です。

例えば、次のような1行のテキストがあるとします:


001たなか  020

このデータを分解すると:

  • 最初の3文字:社員番号(001)
  • 次の6文字:名前(たなか)
  • 最後の3文字:年齢(020)

このように「何文字目から何文字分が何のデータか」を定義するのがレコードレイアウトです。

3. FILE SECTIONの基本的な書き方

3. FILE SECTIONの基本的な書き方
3. FILE SECTIONの基本的な書き方

実際にCOBOLでFILE SECTIONを書くと、以下のようになります。


FILE SECTION.
FD 社員ファイル.
01 社員レコード.
   05 社員番号     PIC 9(3).
   05 氏名         PIC X(6).
   05 年齢         PIC 9(3).

それぞれの意味を説明します:

  • FD:File Description(ファイルの説明)の略で、ファイル全体を定義する部分です。
  • 01:レコード全体の名前を決めます。
  • 05:そのレコードの中の項目(社員番号・氏名・年齢)を定義します。
  • PIC(ピクチャ):データの種類と長さを表します。
    • 9(3):数字を3桁
    • X(6):文字を6文字

4. FDと01と05の違いと関係

4. FDと01と05の違いと関係
4. FDと01と05の違いと関係

このあたりが初心者にとって混乱しやすいポイントです。簡単にたとえてみましょう。

FDは、ファイルそのもの。たとえば「書類フォルダ」です。

01は、そのフォルダの中の1枚の書類=1レコード。

05は、その書類の中の個々の情報=社員番号や氏名や年齢などの項目です。

つまり:

  • FD:ファイルの入り口(大きな箱)
  • 01:その中の1枚分の情報
  • 05:その1枚に書かれている情報の項目

5. PIC(ピクチャ)の基本

5. PIC(ピクチャ)の基本
5. PIC(ピクチャ)の基本

PICは「ピクチャ句」と呼ばれ、データが数字か文字か、どれくらいの長さかを指定します。

  • PIC 9(3):半角数字3桁(例:123)
  • PIC X(6):任意の文字6文字(例:たなか )

COBOLでは、スペースも文字としてカウントします。なので名前が5文字で、スペース1つを入れて6文字にするといった調整が必要です。

6. 空白やゼロで埋まるってどういうこと?

6. 空白やゼロで埋まるってどういうこと?
6. 空白やゼロで埋まるってどういうこと?

ファイルの中のデータが決まった文字数より短い場合、残りは自動的にスペース(空白)やゼロで埋められます。

たとえば、PIC 9(3)5という数字を入れた場合、「005」となって保存されます。

このように、COBOLでは「文字数」がとても大切なので、正しくレイアウトを決める必要があります。

7. レコードレイアウトはなぜ必要?

7. レコードレイアウトはなぜ必要?
7. レコードレイアウトはなぜ必要?

ファイルの中のデータを正しく読み取ったり書き込んだりするには、「どこに何があるか」をプログラムが理解していないといけません。

レコードレイアウトを作ることで、COBOLが「ここには社員番号がある」「ここには名前がある」と判断できるようになります。

設計図がなければ、プログラムはどこから読み取ればいいかわからず、間違ったデータを表示したり、エラーになります。

8. 実行時にどう使うの?

8. 実行時にどう使うの?
8. 実行時にどう使うの?

このFILE SECTIONで定義したレコードは、実行時にREAD命令などでファイルから読み込まれ、社員レコードに自動的にデータが入ります。

その中の社員番号氏名の部分を使って表示したり、計算したりすることができます。

9. よくある初歩的なミスと注意点

9. よくある初歩的なミスと注意点
9. よくある初歩的なミスと注意点
  • スペースの数が合っていない → 読み取る位置がズレる
  • PICの長さとファイルの実際の長さが合わない → データが切れる
  • 日本語の全角・半角の混在 → X(6) には全角3文字分しか入らない

とくに全角と半角の混ざりは初心者がつまずきやすいので、最初は半角英数字で練習するのがオススメです。

10. FILE SECTIONとCOBOLファイル処理の基本用語まとめ

10. FILE SECTIONとCOBOLファイル処理の基本用語まとめ
10. FILE SECTIONとCOBOLファイル処理の基本用語まとめ
  • FILE SECTION:ファイルの中のデータの形(レイアウト)を決める部分
  • FD:ファイル全体の情報(File Description)
  • 01:レコード全体の名前
  • 05:レコードの中の各項目
  • PIC:データの形式(数字・文字など)と長さを決める
  • レコードレイアウト:ファイル1行の中身をどう区切るかの設計図

まとめ

まとめ
まとめ

COBOLでファイルを扱うときに欠かせないFILESECTIONやレコードレイアウトについてすこしずつ学んできたけれど、あらためて振り返ってみると、この仕組みがいかにしっかりと整理されていて、複雑な処理をわかりやすく表現できるようになっているのかがよく見えてくるようになる。とくにCOBOLでは、ファイルの中の各項目がきちんと決まった長さで並んでいるという前提があるため、その構造を理解することがとても大切になる。文字の区切り幅がほんの少しずれただけでもデータを正しく読み出せなくなるため、FILESECTIONで定義するレコードレイアウトは、まさに設計図そのものとして動作の基盤を支える役割を果たしている。こうした設計図を正確に作ることで、社員番号や氏名や年齢といった情報がどの位置に存在するのかを確実に捉えることができ、プログラム全体が安定して動作するようになるのである。 またCOBOLでは、FDを使ってファイルそのものの入り口を定義し、さらに01でレコード全体の形を決め、その内部で05を使って個々の項目を指定するという階層構造によって、複雑なデータの構成をわかりやすく整理している。この階層があるおかげで、プログラムを読む側も、どこにどの情報があるのかを自然に理解できるようになっている。さらにPICを使えば、数字なのか文字なのか、どれくらいの長さなのかを細かく決められるため、意図しないデータが入ってしまうことを防いだり、処理の流れをわかりやすくしたりすることもできる。とくに数字の場合はゼロ埋め、文字の場合はスペース埋めが行われるため、レコードの長さが常に一定であることが保証され、ファイル処理全体の安定性につながっている。 こうした特徴は、たとえば固定長ファイルを扱う企業向けの基幹システムなどでとても役に立つ。読み取る位置がずれてしまうと業務に支障が出てしまうような場面では、レコードレイアウトの正確さが欠かせない。とくに全角と半角が混ざると文字数が思ったようにならないことが多いため、最初は半角で練習してから徐々に複雑なデータに移っていくと理解しやすくなる。また実際にプログラムを書きながら、自分でレコードの構造を作り、そのレイアウトに従ってデータを読み書きしてみると、その重要性がより深く実感できるようになる。 下記のようなFILESECTIONのサンプルを眺めながら、それぞれの項目がどのように並んでいるのかを具体的に理解していくと、全体像がさらに見えやすくなるはずだ。

サンプルプログラム


FILE SECTION.
FD 取引ファイル.
01 取引レコード.
   05 取引番号        PIC 9(5).
   05 顧客名          PIC X(10).
   05 金額            PIC 9(7).
   05 状態コード      PIC X(2).

このように番号や名前や状態といった情報がきちんと並んでいることで、COBOLのREAD命令によってデータが取引レコードに取り込まれたとき、プログラムはその区切りを正確に理解することができる。もし金額の桁数がずれていたり、顧客名が全角と半角で混在していたら、読み取り結果が崩れてしまうこともあるため、レイアウト設計の重要性は非常に高い。とくに実務では、他システムから送られてくる固定長ファイルの形式を厳密に守りながら処理する必要があるため、レコードレイアウトを正確に定義できるスキルは必須といえる。 FILESECTIONやFDやPICといった要素は初心者にとっては少し難しく感じられるかもしれないが、構造が理解できるとCOBOLがとても論理的に整理された言語であることがわかるようになる。数字を扱うならPIC9、文字を扱うならPICX、その長さを指定し、項目を階層的にまとめるという基本形さえ理解すれば、どんなファイルでも同じようにレイアウトできるようになる。ファイル処理の基礎をしっかりと押さえておけば、後から検索処理や集計処理を作るときにも役立つため、今回の内容はCOBOL学習の中でも特に重要な部分といえる。

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

生徒「今日の内容を振り返ってみると、レコードレイアウトがほんとうに設計図みたいな役割なんだってよくわかりました。」

先生「その通りです。レコードの枠組みを理解できると、ファイルから読み込むデータの意味が自然に理解できるようになりますよ。」

生徒「PICの数字や文字の指定って最初はむずかしいと思っていたけど、決まりを覚えれば意外とシンプルですね。」

先生「慣れるととても使いやすいですよ。特に固定長のファイルではPICの指定が命綱になるので、しっかり覚えておくと後で苦労しません。」

生徒「FDや01や05が階層になっている理由も、整理して考えると理解しやすかったです。」

先生「階層構造を使うことで、データのまとまりを視覚的にも理解できるようになっています。とても理にかなった仕組みなんですよ。」

生徒「ファイル処理がもっと身近に感じられるようになりました!これなら他のファイルでも応用できそうです。」

先生「今日の理解を大切にして、ぜひ次のステップも楽しんで学んでいきましょう。」

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

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

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

COBOLのFILE SECTIONとは何ですか?ファイル処理にどう関係しますか?

COBOLのFILE SECTION(ファイルセクション)とは、ファイルから読み込むデータの構造を定義する場所で、レコードレイアウトを使って各項目の配置や長さを指定します。ファイル処理の基本です。
カテゴリの一覧へ
新着記事
New1
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
New2
COBOL
COBOLの帳票出力を完全攻略!数値項目のカンマ・小数点編集例を徹底解説
New3
C#
C#の配列とListの違いを比較して理解しよう
New4
COBOL
COBOLのシーケンシャルファイルとは?基本構造と処理フローを初心者向けに完全ガイド!
人気記事
No.1
Java&Spring記事人気No1
C#
C#でJSONファイルを読み書きする方法(JsonSerializer・Newtonsoft.Json)
No.2
Java&Spring記事人気No2
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
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#の非同期処理とUIスレッドをマスター!WPF/WinFormsでアプリが止まる問題を解決
No.7
Java&Spring記事人気No7
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
No.8
Java&Spring記事人気No8
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法