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

COBOLのREPORT SECTION完全ガイド!帳票設計の基本と使い方

REPORT SECTIONを使った帳票設計の基本
REPORT SECTIONを使った帳票設計の基本

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

生徒

「COBOLで綺麗な報告書を作りたいのですが、一行ずつプログラムを書くのは大変そうです……もっと簡単な方法はありませんか?」

先生

「それなら『REPORT SECTION(報告書節)』を使うのが一番ですよ。あらかじめ報告書のレイアウトを定義しておけば、COBOLが自動的にページめくりや合計計算をしてくれるんです。」

生徒

「自動でページをめくってくれるんですか!それは便利ですね。初心者でも設計できますか?」

先生

「大丈夫です!設計図を描くような感覚で進められます。さっそく、REPORT SECTIONの魔法を見ていきましょう!」

1. REPORT SECTIONとは?

1. REPORT SECTIONとは?
1. REPORT SECTIONとは?

COBOL(コボル)というプログラミング言語は、企業の売上データや給与明細といった帳票(ちょうひょう)、つまり紙に印刷するための報告書を作成するのが非常に得意です。その中でも、最も高度で便利な機能がREPORT SECTION(報告書節)です。

通常、報告書を作るには「何行書いたら次のページへ行くか」「合計金額はどう計算するか」といった細かい手順をすべて自分でプログラミングしなければなりません。しかし、REPORT SECTIONを使えば、「この位置にタイトル」「この位置に合計」といった設計図を定義するだけで、残りの面倒な処理はコンピュータが勝手にやってくれます。プログラミング未経験の方にとって、最も強力な味方になる機能の一つです。

2. 帳票の「骨組み」を決めるRD句

2. 帳票の「骨組み」を決めるRD句
2. 帳票の「骨組み」を決めるRD句

帳票設計の第一歩は、報告書の全体的なルールを決めることです。これをRD句(Report Description:報告書記述項)と呼びます。ここでは、1ページの行数や、見出しを何行目に書くかといった「外枠」を設定します。

パソコンのWordやExcelで「余白の設定」や「行の高さ」を決める作業をイメージしてください。COBOLではこれをコードで指定します。例えば、PAGE LIMIT 60と書けば、「1ページは60行までですよ」という命令になります。これによって、データがたくさんあっても、60行に達した時点で自動的に次のページへ移ってくれるようになります。これを改ページ処理と呼び、手動でプログラミングすると非常に複雑な部分を自動化できるのです。

3. 報告書のパーツ「報告集団」を理解しよう

3. 報告書のパーツ「報告集団」を理解しよう
3. 報告書のパーツ「報告集団」を理解しよう

REPORT SECTIONでは、報告書をいくつかの「パーツ」に分けて考えます。これを報告集団(ほうこくしゅうだん)と呼びます。主なパーツは以下の通りです。

  • REPORT HEADING (RH):報告書の最初の一回だけ出る表紙のような部分です。
  • PAGE HEADING (PH):各ページの最初に出る「見出し」です。日付やページ番号を書きます。
  • DETAIL (DE):商品の名前や金額など、メインとなる明細データです。
  • CONTROL FOOTING (CF):データの区切り(例えば支店ごと)に出る「小計」です。
  • PAGE FOOTING (PF):各ページの一番下に出る部分です。

これらのパーツを組み合わせて一枚の報告書が構成されます。パズルのピースを組み合わせて、理想の書類を作る感覚で設計していきます。

4. 明細行(DETAIL)の設計方法

4. 明細行(DETAIL)の設計方法
4. 明細行(DETAIL)の設計方法

最も重要なパーツが、実際のデータが表示されるDETAIL(明細行)です。ここでは、どのデータをどの位置(何文字目)に表示するかを細かく指定します。COBOLではCOLUMN NUMBERという言葉を使って、「左から20番目に商品名を書く」といった指示を出します。

ここで便利なのが、前回の学習で登場した「編集記述子」をそのまま使えることです。例えば、金額を表示する位置にPIC Z,ZZZ,ZZ9と書いておけば、自動的にコンマが入った見やすい数字で印刷されます。設計図の中に「ここはこの形式で表示してね」と書き込むだけで、データの加工まで終わってしまうのがREPORT SECTIONの凄いところです。


REPORT SECTION.
RD  SALES-REPORT
    PAGE LIMIT 60.
01  DETAIL-LINE TYPE IS DETAIL.
    05  LINE NUMBER IS PLUS 1.
    05  COLUMN NUMBER 10  PIC X(20) SOURCE IS ITEM-NAME.
    05  COLUMN NUMBER 40  PIC ZZZ,ZZ9 SOURCE IS ITEM-PRICE.

5. 自動計算の魔法!小計と合計の出し方

5. 自動計算の魔法!小計と合計の出し方
5. 自動計算の魔法!小計と合計の出し方

報告書に欠かせないのが「合計」です。普通なら、データを読み込むたびに数字を足していくプログラムを書きますが、REPORT SECTIONならSUM句(合計句)を使うだけで自動計算が可能です。

例えば、支店コードが切り替わったタイミングで自動的にその支店の売上を合計して表示する、といった指示ができます。これを制御切れ(せいぎょぎれ)と呼びます。コンピュータが「あ、支店コードが変わったな」と判断した瞬間に、計算していた合計値を印刷し、また次の支店のために合計をリセットしてくれます。プログラムが自分で判断してくれるので、計算ミスが起こる心配もありません。

6. 報告書を出力する手順:INITIATE, GENERATE, TERMINATE

6. 報告書を出力する手順:INITIATE, GENERATE, TERMINATE
6. 報告書を出力する手順:INITIATE, GENERATE, TERMINATE

設計図ができたら、次はプログラムの実行部分(PROCEDURE DIVISION)で実際に報告書を作ります。ここで使う命令はたったの3種類です。

  1. INITIATE(イニシエイト):報告書作成の開始を宣言します。合計を0にリセットするなどの準備をします。
  2. GENERATE(ジェネレート):データを一行分作成します。この命令を出すたびに、必要に応じてページ見出しが出たり、明細が書かれたりします。
  3. TERMINATE(ターミネート):報告書作成を終了します。最後に全体の合計を印刷して締めくくります。

この3つの命令を呼ぶだけで、複雑な設計図が現実の報告書ファイルとして書き出されます。まるで見えない印刷屋さんに指示を出しているかのような感覚で操作できます。


PROCEDURE DIVISION.
    OPEN OUTPUT PRINT-FILE.
    INITIATE SALES-REPORT.
    
    * データの数だけ繰り返すイメージ
    GENERATE DETAIL-LINE.
    
    TERMINATE SALES-REPORT.
    CLOSE PRINT-FILE.
    STOP RUN.

7. 初心者がハマるポイント:行指定のコツ

7. 初心者がハマるポイント:行指定のコツ
7. 初心者がハマるポイント:行指定のコツ

帳票設計で初心者が一番悩むのが、行の間隔指定です。COBOLではLINE NUMBER IS PLUS 1(今の行から1行下へ)や、LINE NUMBER 10(上から数えて10行目へ)といった書き方をします。

特におすすめなのが「PLUS(相対指定)」です。これを使えば、「前の行から2行あける」といった指定ができるため、全体の行数が変わってもレイアウトが崩れにくくなります。一方、絶対にこの位置にタイトルを書きたい!という時は、具体的な数字で指定します。この「固定」と「相対」を使い分けることが、パソコン初心者でも綺麗な帳票を作るプロのコツです。

8. 報告書作成の全体像を確認しよう

8. 報告書作成の全体像を確認しよう
8. 報告書作成の全体像を確認しよう

最後に、ここまでの流れを整理しましょう。REPORT SECTIONを使った開発は、まさに「家を建てる」プロセスに似ています。まずRD句で土地(ページ)のサイズを決め、報告集団で部屋(見出しや明細)のレイアウトを描き、最後にGENERATEで実際に建築(出力)していきます。

プログラムのコード自体は少し長く見えるかもしれませんが、一つ一つの部品の意味はとてもシンプルです。一度この型を覚えてしまえば、どんなに複雑なビジネス文書も自由自在に作れるようになります。事務処理の王道であるCOBOLの真髄を、ぜひこのREPORT SECTIONで体感してください!


* 実行結果のイメージ(印刷される内容)
PAGE: 01   DATE: 2026/01/12
----------------------------
  商品名              価格
----------------------------
  ノートパソコン      150,000
  マウス                3,500
  キーボード            8,000
----------------------------
  ページ合計          161,500
カテゴリの一覧へ
新着記事
New1
COBOL
COBOLのIDENTIFICATION DIVISIONを完全ガイド!初心者でも理解できる基本構造の書き方と使い方
New2
C#
C#のLINQ(リンク)とは?基本概念とデータ操作を初心者向けに徹底解説!
New3
COBOL
COBOLのACCEPT文の使い方を完全解説!初心者でもわかる基本的な入力方法
New4
COBOL
COBOLのDISPLAY文の使い方を完全ガイド!初心者でもわかる出力方法
人気記事
No.1
Java&Spring記事人気No1
C#
C#の日付型(DateTime)と基本的な使い方を解説|初心者向け入門ガイド
No.2
Java&Spring記事人気No2
C#
C#のrefとoutキーワードとは?引数の参照渡しを理解しよう
No.3
Java&Spring記事人気No3
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.4
Java&Spring記事人気No4
C#
C#で型を調べる方法!GetType()・typeof演算子の違いと使い方
No.5
Java&Spring記事人気No5
C#
C#のCancellationTokenを使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法
No.6
Java&Spring記事人気No6
C#
C#のpartialクラスとは?初心者でも理解できるクラス分割の基本
No.7
Java&Spring記事人気No7
COBOL
COBOLのCOPY句の使い方を完全ガイド!初心者でもわかる共通部品の再利用方法
No.8
Java&Spring記事人気No8
C#
C#でswitch式を使う方法!C# 8.0以降の新機能を解説