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

COBOLの編集記述子を完全ガイド!初心者でもわかるPIC Z・*・$の使い方

編集記述子(PIC Z, \*, \$など)の書き方を解説
編集記述子(PIC Z, \*, \$など)の書き方を解説

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

生徒

「COBOLで数字を見やすく表示する方法ってありますか?」

先生

「はい、COBOLでは『編集記述子』という仕組みを使って、数字を整えて表示することができますよ。」

生徒

「編集記述子って何ですか?使い方も知りたいです。」

先生

「それでは、PIC Z やアスタリスク(*)、ドル記号($)など、基本的な編集記述子の使い方を一緒に学んでいきましょう!」

1. 編集記述子とは?

1. 編集記述子とは?
1. 編集記述子とは?

COBOLの編集記述子とは、プログラム内で数値を表示する際に、桁数や表示形式を整えるための文字や記号のことです。COBOLではPIC句(ピクく)を使ってデータの表示形式を指定します。

例えば、数字の頭にゼロを表示したくなかったり、カンマやドル記号を付けたいときに使います。こうした装飾を施すことで、見やすく分かりやすい出力ができるようになります。

2. PIC Z の基本

2. PIC Z の基本
2. PIC Z の基本

PIC Zは、数値の左側にある不要なゼロ(0)を表示しないための記述子です。たとえば、金額を表示する際に、000123 のようなゼロは不要ですよね。そんなときに便利なのが Z です。

例えば、次のような記述を見てください。


01 KINGAKU     PIC 9(5) VALUE 23.
01 HYOUJI      PIC Z(5).
...
MOVE KINGAKU TO HYOUJI
DISPLAY HYOUJI

このときの出力結果は以下のようになります。


   23

本来「00023」となるところを、「Z」にしたことで左側のゼロが空白になっています。

3. アスタリスク(*)の使い方

3. アスタリスク(*)の使い方
3. アスタリスク(*)の使い方

*(アスタリスク)は、Zと似ていますが、ゼロをアスタリスクに置き換えて表示します。これは通帳や請求書などで金額を隠すときに使われる形式です。

たとえば、以下のように書きます。


01 KINGAKU     PIC 9(5) VALUE 23.
01 HYOUJI      PIC **,**9.
...
MOVE KINGAKU TO HYOUJI
DISPLAY HYOUJI

実行結果は次のようになります。


**,**3

このように、左側のゼロ部分は「*」に置き換えられています。

請求書で「***123」といった表記を見たことがある人もいると思いますが、それをCOBOLで再現できるわけです。

4. ドル記号($)の使い方

4. ドル記号($)の使い方
4. ドル記号($)の使い方

$(ドル記号)は、数値の前に通貨記号(ドルや円)を表示するための記述子です。金額の先頭に自動でドル記号を配置できます。


01 KINGAKU     PIC 9(5) VALUE 2300.
01 HYOUJI      PIC $ZZ,ZZ9.
...
MOVE KINGAKU TO HYOUJI
DISPLAY HYOUJI

実行結果は以下のようになります。


$ 2,300

「$ZZ,ZZ9」と書くことで、「$ 2,300」という分かりやすい表記になります。ドルでなく円やユーロの記号は自動では表示されないので、必要に応じてDISPLAY文の前後で記号を追加する方法もあります。

5. 編集記述子の組み合わせ

5. 編集記述子の組み合わせ
5. 編集記述子の組み合わせ

これらの編集記述子は、単独だけでなく組み合わせて使うこともできます。たとえば、左側のゼロを空白にした上で、金額にカンマやドル記号をつけたいときはこうします。


01 KINGAKU     PIC 9(6) VALUE 7890.
01 HYOUJI      PIC $ZZ,ZZZ.
...
MOVE KINGAKU TO HYOUJI
DISPLAY HYOUJI

実行結果:


$ 7,890

「Z」は不要なゼロを空白に、「,(カンマ)」は3桁区切りに、「$」は通貨記号に、それぞれ役割があります。見た目の整った金額表示が簡単に実現できます。

6. よくある間違いと注意点

6. よくある間違いと注意点
6. よくある間違いと注意点

編集記述子を使うときに注意するポイントもあります。

  • カンマ(,)やドル記号($)の位置:カンマは桁を正しく区切る位置に置かないと表示が崩れます。
  • 表示する数値よりPICの桁数が小さいと、正しく表示されません。
  • Zや*は数字以外のデータ(文字列など)には使えません。

たとえば、「PIC Z(3)」に9999を入れようとすると、桁数オーバーでエラーになります。このような場合は「PIC Z(4)」などにして、十分な桁数を確保する必要があります。

7. 実際の業務での活用例

7. 実際の業務での活用例
7. 実際の業務での活用例

編集記述子は、実際の業務プログラムでも頻繁に使われます。銀行の通帳印字、給与明細、請求書、会計帳簿など、数字を美しく整える必要がある場面で活躍します。

たとえば、下記のように請求書で金額を整えるコードが書かれます。


01 SHOUHIN-KINGAKU   PIC 9(6) VALUE 123456.
01 PRINT-DATA        PIC $**,***.
...
MOVE SHOUHIN-KINGAKU TO PRINT-DATA
DISPLAY PRINT-DATA

出力結果:


$**123,456

このように、読みやすく、間違いにくい出力が可能になります。

まとめ

まとめ
まとめ

COBOLにおける編集記述子は、数値データを視覚的に整えるために非常に重要な機能です。特に、PIC Z*(アスタリスク)$(ドル記号)などは、会計処理や帳票出力に欠かせない記述子であり、実務の現場でも広く活用されています。
初心者が最初に戸惑いやすいのは、数字の桁数や表示形式の違いですが、編集記述子を正しく理解すれば、COBOLの出力処理はぐんと見やすく、正確になります。
また、複数の記述子を組み合わせることで、さらに柔軟な表示が可能になります。たとえば「$ZZ,ZZZ.99」のように記述することで、通貨形式の数値表示が実現できます。

編集記述子の実践例

実際のプログラムでは、数値の出力に編集記述子を活用することで、業務帳票や画面出力の品質が向上します。以下は税込金額を見やすく表示する例です。


IDENTIFICATION DIVISION.
PROGRAM-ID. KINGAKU-HYOUJI.

DATA DIVISION.
WORKING-STORAGE SECTION.
01 SHOUHIN-KINGAKU   PIC 9(5)V99 VALUE 12345.67.
01 HIKAE-HYOUJI      PIC $**,***.99.

PROCEDURE DIVISION.
    MOVE SHOUHIN-KINGAKU TO HIKAE-HYOUJI
    DISPLAY "請求金額:" HIKAE-HYOUJI
    STOP RUN.

このように、金額の整形が簡単にできるのがCOBOLの特徴の一つです。ゼロを空白にしたいときはZを、桁を伏せたいときは*を、通貨記号をつけたいときは$を使う、というパターンを覚えておくと便利です。

間違えやすいポイントも確認しよう

  • 桁数が合わないとエラーになる
  • 表示の中で不要なゼロが消えるため、桁位置がずれる場合がある
  • 文字列には編集記述子は使えない(数値に限定)

特に9Zの違いを混同しやすいため、表示形式に応じた記述子の選定が重要になります。

業務システムでの活用を想定した設計力を養おう

実際の業務では、金額の表示ミスは大きなトラブルにつながります。そのため、金額の整形や桁そろえ、見た目の工夫には非常に慎重な設計が求められます。COBOLの編集記述子はそのニーズに応える強力なツールです。
プログラム内で表示形式を事前に定義しておくことで、ロジックと表示が分離され、保守性も高くなります。これはシステム開発全体におけるベストプラクティスの一部でもあります。

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

生徒

「編集記述子って、最初はちょっと難しく感じましたけど、慣れるととても便利ですね。金額の表示が整うと、印象がぜんぜん違います。」

先生

「そのとおりです。人に見せる出力は“読みやすさ”が命ですからね。COBOLでは編集記述子を使うだけで、プロっぽい出力が実現できますよ。」

生徒

「PIC Zでゼロを空白にできたり、*で伏せたり、$で金額っぽく見せたり。こんなに細かく制御できるなんて思ってませんでした!」

先生

「見た目が整っていると、バグの発見や確認もしやすくなります。実務での帳票出力やエビデンス出力には、こうした整形技術が欠かせませんね。」

生徒

「たしかに、請求書の出力を任されたら、この知識は絶対に役立ちそうです。次は自分でも、さまざまな記述子を組み合わせて試してみます!」

先生

「とても良い姿勢ですね。まずは遊び感覚でいろいろ出力してみると、すぐに理解が深まりますよ。」

カテゴリの一覧へ
新着記事
New1
C#
C#のLINQでAny・Allなど条件確認メソッドの使い方を完全ガイド!初心者でもわかるデータ検証
New2
C#
C#のデフォルト引数と名前付き引数の使い方を解説!初心者でも安心のやさしい入門
New3
C#
C#のオブジェクト初期化子を完全ガイド!初心者でもわかる便利な使い方
New4
COBOL
COBOLの帳票出力と編集を完全マスター!条件付き表示で分かりやすい書類を作る方法
人気記事
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#でswitch式を使う方法!C# 8.0以降の新機能を解説
No.4
Java&Spring記事人気No4
COBOL
COBOLの数値データ型「PIC 9」の使い方と注意点をやさしく解説!
No.5
Java&Spring記事人気No5
C#
C#のLINQクエリ構文の書き方と基本操作をマスターしよう
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を使ったキャンセル処理を完全ガイド!非同期処理を安全に止める方法