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

COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法

帳票出力における条件付き表示の活用方法
帳票出力における条件付き表示の活用方法

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

生徒

「COBOLで請求書を作っているのですが、在庫がゼロの時だけ『在庫なし』という文字を出したり、金額がマイナスの時にだけ△マークを付けたりすることはできますか?」

先生

「もちろんですよ!それを『条件付き表示(じょうけんつきひょうじ)』と呼びます。帳票を見やすくするために欠かせないテクニックですね。」

生徒

「プログラムでどうやって書き分けるんですか?難しそうです……。」

先生

「基本のIF文と、帳票用の『編集項目』を組み合わせるだけです。初心者の方でもすぐに覚えられる方法を教えますね!」

1. 帳票における条件付き表示とは?

1. 帳票における条件付き表示とは?
1. 帳票における条件付き表示とは?

プログラミングで言う帳票(ちょうひょう)とは、仕事で使う書類のことです。例えば、レシート、請求書、銀行の取引明細などがこれに当たります。これらの書類をよく見ると、データの内容によって表示の仕方が変わっていることに気づくはずです。

条件付き表示とは、「もし売上が目標を超えていたら『達成』と印字する」「もし支払いが遅れていたら文字を赤くする(コンピュータの処理では特定の記号を出す)」といった、ルールに基づいた表示の切り替えを指します。これを使いこなすことで、人間にとって圧倒的に読みやすい書類を作ることができるようになります。

2. IF文を使った基本的な文字の切り替え

2. IF文を使った基本的な文字の切り替え
2. IF文を使った基本的な文字の切り替え

一番分かりやすい方法は、前回学習したIF文を使って、出力する文字そのものを入れ替える方法です。例えば、商品の在庫数を確認して、文字を出すプログラムを考えてみましょう。

プログラミング未経験の方にとって、コンピュータは「言われたことしかできない」機械です。そのため、「在庫が0なら文字を変えて」とはっきり命令する必要があります。以下のコードはその基本形です。


IF ZAIKO-SU = 0 THEN
    MOVE "在庫なし" TO HYOJI-MESSAGE
ELSE
    MOVE "在庫あり" TO HYOJI-MESSAGE
END-IF.

このように、条件分岐(じょうけんぶんき)を使うことで、データの状態に合わせた最適なメッセージを帳票に載せることができます。これは、事務処理プログラムにおいて最も頻繁に使われる手法の一つです。

3. 数値のプラス・マイナスによる編集記号の活用

3. 数値のプラス・マイナスによる編集記号の活用
3. 数値のプラス・マイナスによる編集記号の活用

お金の計算結果がマイナスになったとき、帳票では「-100」と書くよりも「△100」や「100-」と書く方が一般的ですよね。COBOLには、数値がマイナスの時だけ特定の記号を出す編集記号(へんしゅうきごう)という便利な道具があります。

例えば、PIC(ピクチャ)句の中で「-」記号を最後に置くと、数値がマイナスの時だけマイナス記号が表示され、プラスの時は空白になります。さらに、簿記でよく使われる「CR(クレジット)」や「DB(デビット)」といった表示も、定義一つで自動的に切り替えることが可能です。


01  KINGAKU-HYOJI    PIC ZZZ,ZZ9-.

このように書くだけで、プログラムが自動でプラスかマイナスかを判断し、表示を整えてくれます。これを「編集機能による条件付き表示」と呼びます。

4. 値がゼロの時に表示を消す「BLANK WHEN ZERO」

4. 値がゼロの時に表示を消す「BLANK WHEN ZERO」
4. 値がゼロの時に表示を消す「BLANK WHEN ZERO」

帳票に数字が並んでいるとき、値が「0」の場所がすべて「0」と印字されると、かえって表が見づらくなることがあります。重要な数字だけを目立たせるために、「0の時は何も表示しない(空白にする)」という設定ができます。これがBLANK WHEN ZERO(ブランク・ウェン・ゼロ)句です。

これをデータ定義に付け加えるだけで、難しい計算やIF文を書かなくても、自動的にゼロの場所をスッキリと空白にしてくれます。未経験の方でも、定義を一行書き換えるだけで見た目がプロ級に変わるので、非常に重宝する機能です。


01  URIAGE-AMOUNT    PIC 9(06) BLANK WHEN ZERO.

5. フラグの状態による印字項目の制御

5. フラグの状態による印字項目の制御
5. フラグの状態による印字項目の制御

実務では「フラグ」という考え方をよく使います。フラグとは、ある状態を「1(オン)」か「0(オフ)」で表す旗振りの役割をする変数のことです。例えば、「優待顧客フラグ」が「1」の人だけに特別なメッセージを印字する、といったケースです。

パソコンを触ったことがない方でも、学校の出席簿で「欠席」に丸をつけるような作業をイメージすれば分かりやすいでしょう。COBOLでは、このフラグを見て、印字する内容を細かく制御します。以下の例では、顧客の区分によって印字する敬称を変えています。


IF KOKYAKU-KBN = "1" THEN
    MOVE "様" TO KEISHO
ELSE
    MOVE "御中" TO KEISHO
END-IF.
DISPLAY KOKYAKU-NAME KEISHO.

このように条件を組み合わせることで、一通のプログラムで個人向けと法人向けの両方の帳票に対応できるようになります。

6. 複数条件を組み合わせた高度な表示

6. 複数条件を組み合わせた高度な表示
6. 複数条件を組み合わせた高度な表示

条件は一つとは限りません。「金額が10万円以上」かつ「支払いが遅れている」場合のみ、目立つ警告文を出すといった、複雑なルールも必要になります。COBOLでは、AND(かつ)やOR(または)を使って、条件を連結させることができます。

複雑な条件になればなるほど、書類を受け取った相手にとって親切な情報を提供できます。ただし、条件が増えすぎるとプログラムを作る人も混乱しやすいので、一つひとつ「どんな時に何を表示するか」を紙に書き出してからコードを作るのが、プロのコツです。

7. 条件付き表示の実践例:請求書のステータス

7. 条件付き表示の実践例:請求書のステータス
7. 条件付き表示の実践例:請求書のステータス

では、具体的なシミュレーションをしてみましょう。売上データをもとに、状況に応じて印字内容を変えるプログラムの断片です。未経験の方も、プログラムが「判断」している様子を感じ取ってみてください。


* 購入金額によってランクを表示する例
IF PURCHASE-AMOUNT >= 1000000 THEN
    MOVE "★★★ プラチナ" TO RANK-DISP
ELSE
    IF PURCHASE-AMOUNT >= 500000 THEN
        MOVE "★★ ゴールド" TO RANK-DISP
    ELSE
        MOVE "★ レギュラー" TO RANK-DISP
    END-IF
END-IF.

実行結果として、金額に応じた星のマークが帳票に印字されます。これにより、どの顧客が重要なのかが一目でわかるようになります。


(出力例)
顧客名:山田太郎  購入金額:1,200,000円
ランク:★★★ プラチナ

8. エラー時の「空白」や「アスタリスク」表示

8. エラー時の「空白」や「アスタリスク」表示
8. エラー時の「空白」や「アスタリスク」表示

データに不備があったり、想定外の値が入っていたりする場合、あえて「***」のような記号を出すことで、チェック漏れを防ぐ工夫も大切です。条件付き表示は、単に綺麗に見せるためだけでなく、データの異常を知らせるアラートとしても活用されます。

例えば、日付が不正な場合に「日付エラー」と表示させる処理を入れておけば、後で書類を確認した人がすぐに気づくことができます。事務処理の自動化が進む現代において、こうした「人間への気づき」を与える工夫は、プログラミングにおいて非常に高い価値を持ちます。

9. 表示を工夫する際の注意点:文字幅のズレ

9. 表示を工夫する際の注意点:文字幅のズレ
9. 表示を工夫する際の注意点:文字幅のズレ

最後に、表示を切り替える際の落とし穴についてお話しします。日本語(全角文字)と英数字(半角文字)を切り替えて表示する場合、文字の幅が変わってしまうことがあります。

例えば、IF文で「OK」と「要確認」を切り替えると、文字数が違うため、後ろに続く項目が左右にガタガタとズレてしまうことがあります。これを防ぐには、あらかじめ「表示用の枠(サイズ)」を一定にしておき、短い文字を入れるときは余った部分を空白で埋めるなどの配慮が必要です。こうしたレイアウトの美しさへのこだわりが、良い帳票プログラムを生みます。

カテゴリの一覧へ
新着記事
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を使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法