COBOLのEDITING(編集)項目をマスター!帳票の表示フォーマットを美しくする工夫
生徒
「先生、COBOLで計算した数字を画面に出すと、なんだか読みづらいんです。0がたくさん並んだり、カンマがなかったり……。」
先生
「それは『編集(EDITING)項目』を使っていないからかもしれませんね。COBOLには数字を見やすく整える特別な仕組みがあるんですよ。」
生徒
「編集項目?難しそうに聞こえますが、どうやって使うんですか?」
先生
「特定の記号を組み合わせるだけで、金額に¥マークを付けたり、余分な0を消したりできます。詳しく解説しますね!」
1. EDITING(編集)項目とは?
COBOLの編集項目(EDITING項目)とは、コンピュータが計算するために使っている「生の数字」を、人間がパッと見て理解しやすい「表示用の形式」に変換するための特別な変数のことです。
例えば、コンピュータの内部では「00012345」と保持されている数字を、帳票(印刷物や画面報告書)に出す時に「12,345」と表示させたい場合がありますよね。このように、カンマを入れたり、不要なゼロを消したり、通貨記号を付けたりする操作を、COBOLでは「編集(EDIT)」と呼びます。この編集機能こそが、事務処理に特化したCOBOLの最大の強みの一つです。
2. なぜ表示フォーマットの工夫が必要なのか?
プログラミング未経験の方が驚くことの一つに、「コンピュータは気を利かせてくれない」という点があります。ただ数字を表示させるだけでは、銀行の通帳や給与明細のような美しい見た目にはなりません。
以下の理由から、表示フォーマットの工夫は欠かせません。
- 誤読を防ぐ: 「1000000」よりも「1,000,000」の方が、桁数を間違えずに済みます。
- 不正を防ぐ: 金額の前に「¥」をピッタリ付けることで、後から数字を書き足される改ざんを防げます。
- プロフェッショナルな印象: 揃っていない数字の列は信頼感を損ないます。
これから紹介する編集記号をマスターすれば、パソコンを触ったことがない人でも、プロが作ったような帳票レイアウトが作れるようになります。
3. ゼロサプレスの基本「Z」記号
最初におぼえてほしいのがゼロサプレスです。サプレス(Suppress)とは「抑える・消す」という意味です。数字の先頭にある「0」を空白(スペース)に置き換える処理のことを指します。
COBOLでは、数字の桁を定義する「9」の代わりに「Z」を使います。例えば、5桁の数字で「ZZ,ZZ9」と定義すると、以下のようになります。
(内部の数値) -> (表示結果)
00123 -> 123
00005 -> 5
00000 -> 0
一番右の桁だけ「9」にしているのは、数値が「0」だった時に、何も表示されない(真っ白になる)のを防ぎ、最低限「0」と表示させるための工夫です。これだけで、列の右側が綺麗に揃い、非常に読みやすくなります。
4. カンマと小数点の挿入「,」と「.」
大きな数字を扱う事務作業では、3桁ごとのカンマ区切りは必須です。COBOLの編集項目では、PICTURE句の中に直接「,」を書くだけで、自動的にカンマが挿入されます。さらに賢いことに、先ほどの「Z」と組み合わせると、数字がない桁のカンマは自動的に消してくれます。
また、小数を扱う場合は「.(ドット)」を使います。これも列の位置を固定する役割を持ち、計算用変数から編集用変数へ「MOVE(移動)」するだけで、小数点の位置をピタリと合わせてくれます。これを静的挿入と呼び、あらかじめ決められた場所に記号を置くテクニックです。
5. 通貨記号とプラス・マイナス符号の工夫
お金を扱うプログラムなら「¥(円)」マークや「$(ドル)」マークが必要ですね。COBOLでは「¥」マークを複数並べて書くことで、数字のすぐ左側にマークを移動させる浮動挿入という技が使えます。
また、プラスやマイナスの符号も工夫できます。数字の右側に「CR(クレジット)」や「DB(デビット)」と表示させたり、マイナスの時だけ「-」を出したりすることが可能です。これにより、赤字か黒字かが一目でわかる帳票が作れます。
WORKING-STORAGE SECTION.
01 NUM-DATA PIC 9(06) VALUE 12345.
01 EDIT-DATA-1 PIC \ZZZ,ZZ9.
01 EDIT-DATA-2 PIC \-ZZZ,ZZ9.
PROCEDURE DIVISION.
MOVE NUM-DATA TO EDIT-DATA-1.
DISPLAY "編集後1:" EDIT-DATA-1.
MOVE -500 TO NUM-DATA.
MOVE -500 TO EDIT-DATA-2.
DISPLAY "編集後2:" EDIT-DATA-2.
STOP RUN.
※注意:実際のCOBOL環境により、円マークの表示はバックスラッシュ(\)や通貨記号設定に依存する場合があります。
6. アスタリスク充填「*」による保護編集
小切手の印字などでよく使われるのが、空白部分を「*(アスタリスク)」で埋める方法です。これをチェック保護と呼びます。ゼロサプレスの「Z」の代わりに「*」を使うことで、先頭の余白をすべて「*」で埋め尽くし、後から数字を書き足す隙間をなくします。
(定義例)PIC **,**9
(数値 150 の場合) -> ***150
このように、編集項目は単に見栄えを良くするだけでなく、ビジネス上の信頼性やセキュリティを守る役割も担っているのです。これこそが、古くから銀行や政府機関でCOBOLが愛用されてきた理由の一つでもあります。
7. 編集項目へデータを移す「MOVE」の仕組み
ここで初心者が間違えやすいポイントを説明します。EDITING項目(編集用)は、あくまで表示のためのものです。そのため、編集項目同士で計算をすることはできません。
正しい手順は以下の通りです。
- 計算用の変数(PIC 999など)で足し算や引き算を行う。
- 計算結果を
MOVE命令で編集用の変数(PIC ZZZなど)に移す。 - 編集用の変数を
DISPLAY(表示)したりファイルに出力したりする。
この「MOVE」をした瞬間に、COBOLが裏側で「えーっと、先頭の0を消して、ここにカンマを入れて……」と、一生懸命に整形作業を代行してくれるのです。この役割分担を理解することが、COBOL上達の近道です。
8. 実際に出力結果を確認してみよう
それでは、学んだことを踏まえて、簡単な帳票風の出力をシミュレーションしてみましょう。以下のコードは、商品の金額を綺麗に整えて表示する例です。
IDENTIFICATION DIVISION.
PROGRAM-ID. EDIT-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 WK-PRICE PIC 9(07) VALUE 1500300.
01 WK-DISP PIC \ZZ,ZZZ,ZZ9.
PROCEDURE DIVISION.
DISPLAY "--- 商品売上報告書 ---".
MOVE WK-PRICE TO WK-DISP.
DISPLAY "売上単価:" WK-DISP.
MOVE 0000123 TO WK-PRICE.
MOVE WK-PRICE TO WK-DISP.
DISPLAY "小計 :" WK-DISP.
STOP RUN.
実行結果は、以下のように桁が揃って表示されます。
--- 商品売上報告書 ---
売上単価:¥1,500,300
小計 : ¥123
9. 表示フォーマットをさらに良くするヒント
最後に、より使いやすい帳票を作るための工夫を紹介します。ただ数字を出すだけでなく、以下の点に気を配ってみてください。
- 単位を添える: 数字の横に「個」や「円」などの単位を付けると、文脈が明確になります。
- 日付の編集: 「20260112」という数字を「2026/01/12」と編集するだけで、格段に読みやすくなります(記号「/」も挿入可能です)。
- 右詰め・左詰めの意識: 数字は右詰め、名前などの文字は左詰めに揃えるのが、帳票デザインの鉄則です。
COBOLは古い言語と言われることもありますが、こうした「事務データの見せ方」に関しては、現代の新しい言語にも負けないほど洗練されています。編集項目の記号を自由に操れるようになれば、あなたも立派なCOBOLプログラマの仲間入りです!