COBOL/データ定義

COBOL/データ定義

■一般形式

レベル番号【項目名1・FILLER】 「PICTURE・PIC」
「USAGE」
「VALUE」
「OCCURS」
「REDEFINES 項目名2」

1.レベル番号

COBOLは、階層構造のデータ定義を可能にする言語です。

階層を表すものがレベル番号で、2桁の数字で記述します。

①01~49
階層形式のデータは、01~49の範囲で記述することが出来ます。
小さい数字ほど上位の階層となります。

②66
02~49のレベル番号の項目名を再定義するレベル番号です。

②77
階層を持たない単一の項目を表すレベル番号です。

③88
条件変数項目を表すレベル番号です。

2.項目名1

レベル番号に対応する項目の名称を記述します。
使用しない項目は、FILLER(名称を定義しない項目)と記述することも可能です。
項目の名称は、先頭はアルファベット(A~Z)、先頭以外は、アルファベット、数字、-のいずれかです。
-は接続詞として、IN-NAMEのように使用されます。

3.PICTURE、PIC

実際に使用されるのはほとんどPICが使用されます。
PICの後に、項目の属性、桁を定義する記述が必要です。
例.
PIC A(1) :英字項目の定義
PIC X(1) :英数字項目の定義
PIC Z(1) :数字編集項目の定義
PIC 9(1) :数字項目の定義(符号無)
PIC S9(1) :数字項目の定義(符号有)
()内の数字は項目の桁数です。

4.USAGE

項目の属性、桁を定義する記述です。
03 A PIC S9(8) USAGE DISPLAY. :十進数形式の項目
03 A PIC S9(8) USAGE COMP. :2進数形式の項目
03 D PIC S9(8) USAGE COMP-3. :パック形式の項目
他にも「USAGE COMP-1」「USAGE COMP-2」の記述もありますが使用頻度が少ないので省略します。
記憶域に格納されている状態がそれぞれ異なります。
理解しずらいところですが、数字項目には十進数、二進数、パックの形式があるということを理解してください。
他にも八進数、十六進数などの種類がありますが、二進数と同じです。

5.VALUE

項目に初期値を設定するための記述です。
例.
03 CST-1 PIC 9(1) VALUE 1.
CST-1に1を設定する記述です。
MOVE 1 TO CST-1と同じ結果になります。

6.OCCURS

項目の繰り返し回数を定義する記述です。

例.
1次元配列の場合
03 TBL PIC X(1) OCCURS 10.
TBLという項目が10個の配列項目であることを定義しています。
TBL(1)と記述すれば1番目、TBL(10)と記述すれば10番目を指します。

2次元配列の場合
03 TBL1 OCCURS 5.
05 TBL2 PIC X(1) OCCURS 10.
TBL1という項目が5個の配列項目であることを定義しています。
TBL2という項目は、TBL1という項目1個に対して10個の配列項目であることを定義しています。
TBL(1,1)と記述すれば1列1行目、TBL(5,10)と記述すれば5列10行目を指します。

7.REDEFINES

項目を再定義するための記述です。
例.
年月日を使用するときに年月日を参照する場合と年だけを参照する場合のケースでは
同じ項目名で参照することはできません。
このような場合に、年月日と年を別々の項目名で定義する必要があります。
下記のように、年月日を参照するときはYMD、年を参照するはYYを使用すれば可能になります。
REDEFINESを記述することで、YMDとYMD-Rは、同じ領域であることを定義しています。
03 YMD PIC 9(8).
03 YMD-R REDEFINES YMD.
05 YY PIC 9(4).
05 MM PIC 9(2).
05 DD PIC 9(2).

8.定数

定数には、文字定数と数字定数があります。
データ定義なしに、直接手続き命令に記述できます。

(1) 文字定数
文字定数の記述は、「”」、「’」で囲われた中に記述されます。
コンパイラーやオプションによって「”」と「’」はいずれか一方が使用されます。
ここでは、「”」に統一して記述しています。
例.
MOVE “A123” TO CNS-MOJI
MOVE “漢字” TO CNS-MOJI
MOVE X”0000″ TO CNS-MOJI(X”0000″は十六進数で4桁の0です)

(2) 数字定数
数字定数の記述は、数字をそのまま記述するだけです。
例.
MOVE 1 TO CNS-SUUJI
MOVE 1.1 TO CNS-SUUJI
MOVE -1 TO CNS-SUUJI

9.表意定数

定数とおなじで、データ定義なしに直接手続き命令に記述できます。
表意定数として決められた文字を記述するだけです。
実際に使うときは、語尾にSが付かないものを使用しましょう。
ほとんどの企業のプログラムでS付を使用していません。

①ZERO,ZEROS,ZEROES
MOVE ZERO TO A(Aの領域全てに0が設定される)

②SPACE,SPACES
MOVE SPACE TO A(Aの領域全てにブランクが設定される)

③LOW-VALUE,LOW-VALUES
MOVE LOW-VALUE TO A(Aの領域全てにNULLが設定される)
MOVE ALL X”00″ TO A(Aの領域全てにNULLが設定される)
Aの領域のBitが全て0になることです。

④HIGH-VALUE,HIGH-VALUES
MOVE HIGH-VALUE TO A(Aの領域全てにX”FF”が設定される)
MOVE ALL X”FF” TO A(Aの領域全てにX”FF”が設定される)
Aの領域のBitが全て1になることです。

⑤ALL
MOVE ALL “A” TO A(Aの領域全てに”A”が設定される)

⑥QUOTE,QUOTES
MOVE QUATE TO A(Aの領域全てに「”」が設定される)
これは使用することはないでしょう。

 

COBOLカテゴリの最新記事

Translate »