COBOLのEDITING記述子を完全解説!初心者でもわかるPIC Z・\*・\$による整形出力
生徒
「先生、COBOLで数字をきれいに表示する方法ってありますか? たとえばカンマを入れたり、前にドルマークを付けたりとか…」
先生
「とても良い質問ですね。COBOLではPIC句の中で“編集記述子(EDITING記述子)”という機能を使って、数字の見た目を整えることができるんです。」
生徒
「編集記述子?なんだか難しそうですね…」
先生
「大丈夫。使い方を覚えれば、誰でも簡単にできるようになりますよ。今日はPIC Z、*、$などを使って、きれいな数値の整形出力を学びましょう!」
1. EDITING記述子とは?
COBOLのEDITING記述子(エディティング記述子)とは、数値を画面や帳票などに表示するときに「どんな見た目で表示するか」を指定する仕組みです。たとえば、カンマ区切りや先頭の0を消す、ドル記号を付けるといった整形を自動で行ってくれます。
この整形は、PIC句(ピクチャ句)に特別な記号を使って指定します。これを「編集記述子」と呼びます。代表的なものには次のような記号があります。
- Z:不要な先頭の0を空白にします。
- 9:通常の数字をそのまま表示します。
- ,:カンマ(,)を自動で入れます。
- *:先頭の空白を「*」で埋めます。
- $:金額表示などに使うドル記号を付けます。
- + / -:正負の符号を表示します。
このようにPIC句に記号を組み合わせることで、見た目を自由に整えることができます。
2. PIC Zで先頭の0を消して表示する
まずは、最も基本的なZの使い方を見てみましょう。これは数値の先頭にある不要な「0」を消して、空白にしてくれます。
IDENTIFICATION DIVISION.
PROGRAM-ID. EDIT-Z-DEMO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 PRICE PIC 9(5) VALUE 00456.
01 PRICE-DISP PIC ZZZZ9.
PROCEDURE DIVISION.
MOVE PRICE TO PRICE-DISP
DISPLAY "表示結果:" PRICE-DISP
STOP RUN.
このプログラムの出力は次のようになります。
表示結果: 456
数字の前にあった0が消えて、きれいに表示されています。先頭の0を消して空白にするのがZの役割です。
3. PIC ,(カンマ)で3桁区切りにする
次に、金額などでよく使う3桁ごとのカンマ区切りの表示をしてみましょう。これもPIC句に「,」を入れるだけです。
IDENTIFICATION DIVISION.
PROGRAM-ID. EDIT-COMMA-DEMO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 SALES-AMOUNT PIC 9(7) VALUE 1234567.
01 SALES-DISPLAY PIC ZZ,ZZZ,ZZ9.
PROCEDURE DIVISION.
MOVE SALES-AMOUNT TO SALES-DISPLAY
DISPLAY "売上金額:" SALES-DISPLAY
STOP RUN.
出力結果はこうなります。
売上金額: 1,234,567
自動的にカンマが入って見やすくなっています。会計処理や帳票出力では必須の機能です。
4. PIC *(アスタリスク)で空白を*に置き換える
金額などを印刷するとき、空白部分を「*」で埋めたい場合があります。これは改ざん防止や見た目を整える目的で使われます。そのときに使うのが*です。
IDENTIFICATION DIVISION.
PROGRAM-ID. EDIT-STAR-DEMO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 AMOUNT PIC 9(5) VALUE 123.
01 AMOUNT-EDITED PIC **,**9.
PROCEDURE DIVISION.
MOVE AMOUNT TO AMOUNT-EDITED
DISPLAY "出力結果:" AMOUNT-EDITED
STOP RUN.
実行結果は次のようになります。
出力結果:**1,23
このように、空白が「*」で埋められ、きれいに整った印象になります。帳票印刷などで「見せ方」を工夫したいときに使われます。
5. PIC $(ドル記号)で金額表示を行う
金額データに「ドルマーク」や「円記号」を付けたいときは、$を使います。これを指定すると、自動的に金額の前に「$」が付きます。
IDENTIFICATION DIVISION.
PROGRAM-ID. EDIT-DOLLAR-DEMO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 PRICE PIC 9(6) VALUE 12345.
01 PRICE-DISP PIC $ZZ,ZZ9.
PROCEDURE DIVISION.
MOVE PRICE TO PRICE-DISP
DISPLAY "商品価格:" PRICE-DISP
STOP RUN.
実行結果は次の通りです。
商品価格:$12,345
簡単に「$」付きの金額表示ができます。日本円で使う場合は、「¥」を文字列として付けてもOKです。
6. 符号(+ / -)を表示する
数値がプラスかマイナスかを見せたいときは、「+」や「-」を編集記述子に含めます。
IDENTIFICATION DIVISION.
PROGRAM-ID. EDIT-SIGN-DEMO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 BALANCE PIC S9(5) VALUE -2500.
01 BALANCE-DISP PIC +ZZ,ZZ9.
PROCEDURE DIVISION.
MOVE BALANCE TO BALANCE-DISP
DISPLAY "残高:" BALANCE-DISP
STOP RUN.
出力結果は次のようになります。
残高:-2,500
符号が自動で付いているのがわかります。会計処理などでは、この形式がよく使われます。
7. 編集記述子の組み合わせでプロ並みの出力を作る
ここまで紹介した記述子は、組み合わせることでより高度な整形ができます。たとえば、ドルマーク付きでカンマ区切り、さらに不要な0を消す、というようなことも可能です。
IDENTIFICATION DIVISION.
PROGRAM-ID. EDIT-COMBO-DEMO.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 SALES-TOTAL PIC 9(7) VALUE 0004567.
01 SALES-FORMAT PIC $**,***,ZZ9.
PROCEDURE DIVISION.
MOVE SALES-TOTAL TO SALES-FORMAT
DISPLAY "売上合計:" SALES-FORMAT
STOP RUN.
出力結果:
売上合計:$**4,567
このように、複数の編集記述子を組み合わせて使うことで、見やすくて実用的な表示を作ることができます。
8. 実務での活用例
実際の企業システムでは、帳票やレポート、画面出力などでこれらの編集記述子がよく使われます。特に金融システムや販売管理システムでは、数字の桁数が多くなるため、見やすさと信頼性が重要です。
たとえば売上報告書などで「$***12,345」と表示すれば、ぱっと見ただけで桁や金額が明確に分かります。こうした細かい表示の工夫が、業務の正確性を高めるのです。
9. まとめ:COBOLの編集記述子で美しい数値出力を作ろう
COBOLのEDITING記述子を使うことで、数字をきれいに整形して出力できます。Zで0を消し、,で桁区切り、*や$でデザイン性を加えれば、実務で使える見やすい帳票を作ることができます。これらをマスターすることで、COBOLの数値表示の幅が大きく広がります。