COBOLのデータ型について解説します。
COBOLには主に3種類のデータ形式が存在します。
文字項目、数字項目、数字編集項目の3種類です。
役割を簡単に説明すると、
文字項目 – 計算に使用することはできない。
数字項目 – 計算に使用することができる。
数字編集項目 – 数値データの受け取り項目として使用することができる。計算には使用できない。
以上の特徴を持っています。
文字項目
タイプ識別子 | 説明 |
---|---|
X | 任意の文字 |
A | 英字または空白 |
B | 空白を挿入すべき位置 |
/ | スラッシュ文字が挿入される位置 |
「B」や「/」を指定した位置には、空白やスラッシュが挿入されるため、下記例の通り、「COBOL」という文字列を「PIC XXBXX」で定義した変数に代入すると、「CO BO」という文字列が代入されることとなる。
注意点としては、「B」で定義された位置に文字列が来ると空白で消されるのではなく、指定した文字位置に空白が入りそこから指定した数横に移動するということ。桁溢れする可能性があるため確認が必要だ。
それぞれの項目の使用例は以下の通り
IDENTIFICATION DIVISION.
program-id. Hello.
data division.
working-storage section.
01 ONE PIC XXXXX.
01 TWO PIC AAAAA.
01 THR PIC BBBBX.
01 FOU PIC ////X.
*> 合わせ技の例
01 RES1 PIC XXBXX.
01 RES2 PIC XAB/X.
01 RES3 PIC //XXX.
01 RES4 PIC A/B/A.
procedure division.
MOVE "COBOL" TO ONE.
MOVE "COBOL" TO TWO.
MOVE "COBOL" TO THR.
MOVE "COBOL" TO FOU.
DISPLAY ONE. *> 「COBOL」
DISPLAY TWO. *> 「COBOL」
DISPLAY THR. *> 「 C」
DISPLAY FOU. *> 「////C」
*> 合わせ技の例
MOVE "COBOL" TO RES1.
MOVE "COBOL" TO RES2.
MOVE "COBOL" TO RES3.
MOVE "COBOL" TO RES4.
DISPLAY RES1. *>「CO BO」
DISPLAY RES2. *>「CO /B」
DISPLAY RES3. *>「//COB」
DISPLAY RES4. *>「C/ /O」
数字項目
説明 | |
---|---|
9 | 数字 |
S | 符号、左端に記述する。Sの指定がなければ正として扱う |
V | 少数点 |
数字項目は下記で紹介する数字編集項目とは異なり、計算に使用することができる。
少数点の「V」を指定していると、Vより左側に整数が入るため、下記例では、桁溢れが発生している。
また、「S」を指定していない変数に負の値を代入すると正の値になってしまうため注意が必要。
IDENTIFICATION DIVISION.
program-id. Hello.
data division.
working-storage section.
01 ONE PIC 99999.
01 TWO PIC S9999.
01 THR PIC 99V99.
procedure division.
MOVE 12345 TO ONE.
MOVE 12345 TO TWO.
MOVE 12345 TO THR.
DISPLAY ONE. *>「12345」
DISPLAY TWO. *>「+2345」
DISPLAY THR. *>「45.00」
MOVE -234 TO TWO.
MOVE -234 TO THR.
DISPLAY TWO. *>「-0234」
DISPLAY THR. *>「34.00」
数字編集項目
識別子 | 説明 |
---|---|
P | 少数部の位どり位置 |
Z | Z部分が「0」の場合、その0はスペースとなる |
, | カンマが挿入される位置 |
. | 位置合わせ用の小数点の位置 |
* | 金額変造防止シンボル、この位置に0があると「*」が挿入される |
$ | 通過記号が入る位置 |
数字編集項目は数字項目とは異なり、計算に用いることはできない。
使用例は以下の通り
IDENTIFICATION DIVISION.
program-id. Hello.
data division.
working-storage section.
01 ONE PIC P9999.
01 TWO PIC ZZZZ9.
01 THR PIC 999,99.
01 FOU PIC 999.99.
01 FIV PIC *99999.
01 SIX PIC $99999.
procedure division.
MOVE 1.234 TO ONE.
MOVE 12 TO TWO.
MOVE 12345 TO THR.
MOVE 12345 TO FOU.
MOVE 12345 TO FIV.
MOVE 12345 TO SIX.
DISPLAY ONE. *>「.03400」
DISPLAY TWO. *>「 12」
DISPLAY THR. *>「123,45」
DISPLAY FOU. *>「345.00」
DISPLAY FIV. *>「*12345」
DISPLAY SIX. *>「$12345」