COBOLのデータ型とは?基本のPIC句の書き方を初心者向けにやさしく解説
生徒
「先生、COBOLでデータを使うときって、どうやって種類を決めるんですか?」
先生
「COBOLでは、データの種類を“データ型”で指定します。特にPIC句というのを使って定義します。」
生徒
「PIC句ってなんですか? 難しそう…」
先生
「大丈夫ですよ。PIC句は、データの形(フォーマット)を指定するものです。数字か文字か、小数かなどを決めるんです。では、順番に見ていきましょう!」
1. COBOLのデータ型とは?
プログラミングでは、数字や文字などの「データ」を扱います。そのとき「このデータは数字ですよ」とか「これは文字列ですよ」といった情報が必要になります。これがデータ型(data type)です。
COBOLでは、他の言語のように「int」や「string」といった名前でデータ型を指定するのではなく、「PIC句(ピックく)」という方法で書きます。
PICとは「PICTURE(ピクチャー)」の略で、「このデータはこんな形ですよ」という“見た目のルール”を決める文です。
2. PIC句の基本構文
基本の構文はこのようになります:
01 変数名 PIC データの形式.
例えば、3桁の数字を扱いたいときは、こう書きます:
01 AGE PIC 999.
ここで使われている「9」は、「数字(0〜9)を1桁分受け取る」という意味です。つまり、「999」と書くと、「3桁の数字」を意味します。
3. PIC句で使われる文字の意味
PIC句でよく使われる文字と意味は以下の通りです:
- 9:数字(0〜9)を1桁
- X:文字(英数字・記号など)を1文字
- A:アルファベット1文字
- V:小数点の位置(実際のデータには表示されない)
- S:符号付き(+や−の意味)
例えば、「S999V99」という定義なら、「符号付きで整数3桁、小数2桁の数値」を扱えます。
4. 数値を扱うPIC句の例
以下に、COBOLで使える数値の例を紹介します。
01 PRICE PIC 999V99.
01 QUANTITY PIC 9(3).
01 TOTAL PIC S9(5)V99.
PRICE
は、整数3桁、小数2桁の金額(例:123.45)QUANTITY
は、「9(3)」で「999」と同じ意味(3桁の数字)TOTAL
は、「符号付き」で最大5桁の整数と2桁の小数(例:-12345.67)
5. 文字を扱うPIC句の例
文字や名前などを扱いたいときは、「X」を使います。
01 NAME PIC X(20).
01 GENDER PIC X.
この例では、NAME
は最大20文字の名前、GENDER
は1文字(例:「M」や「F」)を想定しています。
6. 実行例を見てみよう
次に、簡単なプログラムを作って、PIC句で定義した変数に値を入れて表示してみましょう。
IDENTIFICATION DIVISION.
PROGRAM-ID. PIC-SAMPLE.
DATA DIVISION.
WORKING-STORAGE SECTION.
01 NAME PIC X(10).
01 AGE PIC 99.
01 HEIGHT PIC 999V9.
PROCEDURE DIVISION.
MOVE "YUI" TO NAME
MOVE 25 TO AGE
MOVE 160.5 TO HEIGHT
DISPLAY "名前:" NAME
DISPLAY "年齢:" AGE
DISPLAY "身長:" HEIGHT
STOP RUN.
実行結果:
名前:YUI
年齢:25
身長:1605
ここで、HEIGHT
は「999V9」として小数点付きのつもりでしたが、「V」は表示されないため「160.5」は「1605」と表示されます。Vは“見えない小数点”という点がポイントです。
7. よくある間違いと注意点
- 「V」は実際の表示には出ません。「160.5」は「1605」として扱われます。
- 桁数オーバーすると、エラーになったり正しく表示されません。例えば「PIC 99」に「123」を入れると、入りきらないため注意が必要です。
- 文字型に数字を入れると、そのまま文字列として扱われます(例:「"123"」は数字ではなく文字)
8. 実務での使いどころ
COBOLでは、銀行の取引データや顧客情報、年齢や金額など、いろいろな形式のデータを扱います。これらを正しいフォーマットで扱うためにPIC句を使います。
例えば、給与明細を作るとき、
- 社員名 →
PIC X(30)
- 基本給 →
PIC 9(6)V99
- 控除額 →
PIC S9(5)V99
このように、現実の業務データとピッタリ対応させて、コンピュータに分かる形にするために、データ型の指定とPIC句の理解が大切です。