1. 導入:なぜPICTURE句が重要なのか
COBOLの世界では、プログラムを動かす前に「どんなデータを、どこに、どれくらいの大きさで入れるか」を正確に定義する必要があります。この定義が間違っていると、計算結果がおかしくなったり、プログラムが異常終了したりする原因になります。PICTURE句(略してPIC句)は、データの「型」と「長さ」を指定する、いわばデータの設計図です。これをマスターすることが、バグのないプログラムを作る第一歩となります。
2. 基礎知識:PIC句が扱う3つの基本属性
PIC句で定義する主なデータ型には、大きく分けて以下の3種類があります。
・英字(A):アルファベットのみを扱います。
・英数字(X):数字、アルファベット、記号など、何でも入れられる万能型です。
・数字(9):数値計算を行うための型です。
また、数字を扱う際には、符号(S)や小数点(V)を組み合わせることが非常に重要です。これらを理解することで、メモリを効率よく使い、正確な計算処理が可能になります。
3. 実装/解決策:定義の基本ルール
PIC句を記述する際は、PIC 9(5)のように記述します。カッコ内の数字は「繰り返し回数」を意味し、PIC 99999と同じ意味です。
特に現場でよく使うのは、「S(符号付き)」と「V(小数点位置の指定)」です。
例えば、金額を扱う場合、PIC S9(7)V99と定義します。これは「合計7桁の整数部と、2桁の小数部を持つ(合計9桁)、符号付きの数値」という意味になります。ここで注意すべきは、Vは「仮想的な小数点」であり、実際のメモリ上には小数点記号は保存されないという点です。COBOLは定義されたVの位置を勝手に解釈して計算してくれるのです。
4. サンプルプログラム
以下のコードをコピーして、ご自身の環境で試してみてください。
IDENTIFICATION DIVISION.
PROGRAM-ID. PIC-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
- 符号付き数値:整数7桁、小数2桁
05 WS-AMOUNT PIC S9(7)V99 VALUE 12345.67.
- 英数字:10文字分
05 WS-NAME PIC X(10) VALUE ‘COBOL’.
PROCEDURE DIVISION.
- データの表示
DISPLAY “金額を表示します: ” WS-AMOUNT.
DISPLAY “名称を表示します: ” WS-NAME.
STOP RUN.
5. 応用・注意点:現場で役立つポイント
現場で最も多いミスは、「定義した桁数より大きい値を入れてしまうこと」です。例えばPIC 9(3)と定義した変数に1000を入れると、上の桁が切り捨てられたり、予期せぬ挙動を招いたりします。
また、「編集用PIC句」というものがあります。例えば PIC ZZZ,ZZ9 と定義すると、数値の前のゼロを表示させない(ゼロサプレス)など、見栄えを整えた出力が可能です。これらは帳票作成などで非常に重宝します。
最初は難しく感じるかもしれませんが、まずは「S」と「V」を正しく使いこなすことから始めてみてください。それが、ベテランへの入り口です。

コメント