この記事では、PICTURE句(PIC句)の基本構文と意味、よく使う編集記号(Z・*・カンマ・ピリオド・¥・+・-)の使い分けと書き方を、初心者でもつまずかないよう具体例付きでわかりやすく解説します。
実際のCOBOLコードを見ながら一緒に確認していきましょう。
「えっ、こんなに表示がキレイに整うの?COBOL、ちょっと見直したかも」そんな気持ちになるかもしれませんよ。
COBOL PICTURE句とは? その役割と重要性
名前だけ聞くと何か難しそうに感じますが、やっていることはシンプル。データを入れる「箱」の形や大きさを決めるだけなんです。
たとえば、「数字を5桁で入れたい」「名前を20文字分確保したい」といった場面がありますよね。PICTURE句は、そんな要望に応じてデータの種類や長さを決めてくれます。
これは、プログラムがデータをどう扱うかの前提になる部分。PICTURE句がしっかり決まっていないと、データがうまく扱えません。
COBOLを学ぶうえで避けて通れない存在ですが、心配はいりません。箱の作り方をひとつずつ覚えれば、あっという間に慣れてきます。
COBOL PICTURE句の基本の書き方【まずはここから!】
PICTURE句の書き方は、とてもシンプルです。
01 データ名 PIC 定義文字列.
この定義文字列の部分に、「どんな種類のデータを」「何桁で」扱うかを書きます。
たとえば文字なら「X」、数字なら「9」を使います。どちらも後ろに ( ) をつけて桁数を指定できます。
最初は構文を覚えるだけでOK。意味はあとから自然についてきます。
深く考えすぎず、まずは「形を覚える」ところから始めましょう。
文字項目 (英数字) - PIC X
文字や記号を入れる「箱」を作るなら、PIC Xを使います。
アルファベットや数字、記号を1文字ずつ入れられます。桁数を指定するには、後ろに ( ) をつけます。
01 NAME PIC X(20).
この場合、「NAME」という項目に最大20文字まで文字列を格納できることになります。
名前、住所、電話番号など、文章っぽい情報を扱うときによく使います。
「文字をしまうための引き出しが、いくつあるかを決める」そんなイメージです。
数字項目 (数値) - PIC 9
数値を扱いたいときは、PIC 9を使います。
数字専用の「箱」で、1桁につき「9」を1つ使います。たとえば「3桁の数字」は「PIC 9(3)」と書きます。
01 PRICE PIC 9(5).
「PRICE」に5桁の数字が入ります。
小数を扱いたいときは「V」を使います。この「V」は見えない小数点だと思ってください。
01 TAX-RATE PIC 9(3)V9(2).
これは「999.99」のような数値を表せます。小数点は見た目に出ませんが、「ここで区切ってね」とメモリ上で認識させるものです。
件数や金額など、計算に使うデータにはほぼ登場します。COBOLでは「数値といえばPIC 9」、と覚えておくと便利です。
COBOL PICTURE句の「編集記号」を使いこなす【データを見やすく整形】
基本の書き方を覚えたら、次はいよいよデータを「見せる」ためのテクニックです!
PICTURE句における編集記号とは、出力するデータの見た目を整えるために使う特殊な記号です。数字を見やすく並べたり、通貨記号をつけたり、不要なゼロを消したりといったことができます。
こうした編集記号を含むデータ項目は、「数字編集項目」と呼ばれます。見た目は整いますが、計算にはあまり向かないので注意が必要です。出力用と割り切って使うのがコツです。
ゼロ抑制 (Zero Suppression)
数字の先頭にゼロが並ぶと見づらいですよね。そんな時に使うのが「Z」と「*」です。
- Z:不要なゼロを消してスッキリ表示
- *:ゼロの代わりに「*」を入れて金額の改ざん防止に
01 AMOUNT1 PIC ZZZZ9. 01 AMOUNT2 PIC ****9.
実際のデータが「00123」の場合、それぞれの表示はこうなります。
定義 | 表示結果 |
---|---|
PIC ZZZZ9 | 123 |
PIC ****9 | **123 |
伝票や請求書などで「*」を見たことがあるかもしれませんね。
カンマと小数点
桁が多い数字は読みにくい。そんなとき便利なのがカンマとピリオドです。
PICTURE句に「,」を入れると桁区切りに、「.」を入れると小数点を表示できます。
01 TOTAL PIC Z,ZZZ,ZZ9.99.
データが「1234567.89」の場合、表示はこうなります。
1,234,567.89
ポイントは、これらの記号は「表示専用」であって、実際のデータに含まれているわけではないという点です。
ちなみに、小数点を定義する「V」はメモリ上の区切りであり、ピリオドとは役割が違うので混同しないようにしましょう。
通貨記号
金額を扱う場面では通貨記号が欠かせません。
たとえば「¥」や「$」などの記号は、PICTURE句にそのまま入れることで表示できます。
01 FIXED-PAY PIC ¥999. 01 FLOAT-PAY PIC ¥¥¥,¥¥9.
データが「1234」の場合、表示は以下のようになります。
定義 | 表示結果 |
---|---|
¥999 | ¥234 |
¥¥¥,¥¥9 | ¥1,234 |
請求書や給与明細など、実務でよく使う形ですね。
固定形式では記号の位置が決まっていて、浮動形式では数字の動きにあわせて記号の位置も変わります。
符号の表示
数値がプラスかマイナスかを示したいとき、符号を表示する記号が活躍します。
- +:正でも負でも符号を表示
- -:負のときだけ符号を表示
- CR / DB:会計処理で使う貸方・借方表記
01 SIGN1 PIC +999. 01 SIGN2 PIC -999. 01 SIGN3 PIC 999+. 01 SIGN4 PIC 999CR.
データが「123」と「-123」の場合、それぞれ次のように表示されます。
定義 | データ | 表示結果 |
---|---|---|
+999 | 123 | +123 |
+999 | -123 | -123 |
-999 | 123 | 123 |
-999 | -123 | -123 |
999+ | 123 | 123+ |
999CR | -123 | 123CR |
経理業務ではCR(貸方)やDB(借方)もよく見かけます。
どの記号も「何がいつ表示されるか」を理解して使い分けるのがコツです。
サンプルプログラム:編集記号つきPICTURE句の使い方
ここまで学んだ編集記号の使い方をぎゅっと詰め込んだ実行可能なサンプルプログラムを紹介します。
出力結果を見れば、編集記号がどのように働いているか一目で分かります。
IDENTIFICATION DIVISION. PROGRAM-ID. EDIT-PIC-SAMPLE. DATA DIVISION. WORKING-STORAGE SECTION. 01 ORIGINAL-VALUE PIC 9(5)V99 VALUE 12345.67. 01 EDIT-Z PIC ZZ,ZZZ.99 VALUE ZERO. 01 EDIT-STAR PIC **,***.99 VALUE ZERO. 01 EDIT-CURRENCY-FIXED PIC $**,***.99 VALUE ZERO. 01 EDIT-CURRENCY-FLOAT PIC $$$,$$9.99 VALUE ZERO. 01 EDIT-SIGN-PLUS PIC +99999 VALUE 12345. 01 EDIT-SIGN-MINUS PIC -99999 VALUE -12345. 01 EDIT-SIGN-CR PIC 99999CR VALUE -12345. PROCEDURE DIVISION. MOVE ORIGINAL-VALUE TO EDIT-Z MOVE ORIGINAL-VALUE TO EDIT-STAR MOVE ORIGINAL-VALUE TO EDIT-CURRENCY-FIXED MOVE ORIGINAL-VALUE TO EDIT-CURRENCY-FLOAT DISPLAY "元の値(内部データ) : " ORIGINAL-VALUE DISPLAY "ゼロ抑制(Z) : " EDIT-Z DISPLAY "ゼロ抑制(*) : " EDIT-STAR DISPLAY "通貨記号(固定) : " EDIT-CURRENCY-FIXED DISPLAY "通貨記号(浮動) : " EDIT-CURRENCY-FLOAT DISPLAY "符号付き(+) : " EDIT-SIGN-PLUS DISPLAY "符号付き(-) : " EDIT-SIGN-MINUS DISPLAY "会計表記(CR) : " EDIT-SIGN-CR STOP RUN.
表示結果のイメージも改行付きで再掲します。
元の値(内部データ) : 12345.67 ゼロ抑制(Z) : 12,345.67 ゼロ抑制(*) : 12,345.67 通貨記号(固定) : $12,345.67 通貨記号(浮動) : $12,345.67 符号付き(+) : +12345 符号付き(-) : -12345 会計表記(CR) : 12345CR
このサンプルで、編集記号の動作や出力の違いがしっかり実感できるはずです。
自分のCOBOL環境で動かして、アレンジしてみるのもおすすめです!
COBOL PICTURE句 基本と編集記号を使う上での注意点
PICTURE句を使っていて、初心者がよくつまずくポイントをまとめました。
ここを押さえておけば、エラーをぐっと減らせます!
- 編集記号付きの項目はそのまま計算に使えません
見た目を整えるためのデータは「出力専用」。計算したい場合は、編集記号のない項目に転記して使うのが基本です。 - Vとピリオド(.)は役割がまったく違います
Vは「見えない小数点」。メモリ上だけの話です。一方、ピリオドは表示上の小数点です。混同すると表示が変になります。 - Xと9の違いを意識しましょう
Xは文字、9は数字専用です。数値をXで定義すると、計算できなくなります。 - 桁数オーバーのデータは切り捨てや異常表示の原因に
定義より大きな値を入れると、先頭が消えるなど想定外の動きになることがあります。データの桁数は必ず確認を。
どれもよくある質問なので、最初に知っておくだけで安心してPICTURE句を使いこなせます。
【まとめ】PICTURE句を理解してCOBOLを使いこなそう!
PICTURE句は、COBOLの中でも「データをどう扱うか」「どう見せるか」を決める重要なパーツです。
データの型や桁数を決める基本構文と、編集記号で出力を整える方法を理解すれば、帳票や画面出力がグッと見やすくなります。
数字の整形、通貨記号の表示、符号の扱いまで、COBOLの見た目はすべてPICTURE句次第。
これでPICTURE句の基礎はバッチリ!ぜひ、実際のコードで手を動かして試してみてください。
【関連記事】
0 件のコメント:
コメントを投稿
注: コメントを投稿できるのは、このブログのメンバーだけです。