YCobol-文法の説明



前へ    次へ

データ部



 データ部では、プログラム中で使うデータ項目を定義する。

 データ部は、FILE SECTION(ファイル節)と WORKING-STORAGE SECTION(作業場所節)から構成される。いずれも必要なければ省略できる。

DATA DIVISION.
 データ部の開始を宣言。

FILE SECTION.
 ファイルのレコード様式について定義する。

[FD | SD] ファイル名.
 ファイル名には環境部で定義した「プログラムのファイル名」を記述する。
 FD は、通常のファイルの場合に指定する。
 SD は、整列ファイルの場合に指定する。
 FD句、もしくは、SD句の後に、項目の定義が続く。


WORKING-STORAGE SECTION.
 プログラムで一時的に使用する項目をこの節で定義する。

項目の宣言
 プログラム中で必要になる項目を定義することを「宣言する」という。すべての項目はデータ部で宣言されていなければならない。

 項目は大きく「基本項目」と「集団項目」分類できる。
□ 基本項目
 基本項目には、文字項目、数字項目、編集項目、無名項目がある。

【構文】
レベル番号 一意名 PIC 属性と桁数.

・レベル番号
 レベル番号は、「01」から「49」まで利用できる。

・一意名
 英数字とハイフンを使い、利用者が分かりやすい名前をつける。

・PIC
 「PIC」はピクチャー句といい項類(項目の種類)を定義する命令である。
 項類は、属性の定義(「9」「X」「V」などの文字を使う)で決まる。

【基本項目の種類】
○ 数字項目
数値を格納する項目である。

<使える文字>
9 :数字1桁を表す
V :小数点の位置を表す
S :符合を表す

○ 文字項目
英数字や記号、日本語など文字を格納する項目である。

<使える文字>
X :文字1桁を表す。ただし、日本語などの全角文字を格納したければ2桁分が必要。

○ 編集項目
編集項目は、数字項目を見やすくするために使う。
編集項目に代入できる値は数字定数か数字項目である。

<使える文字>
9 :数字1桁を表す
Z :先頭のゼロ「0」を空白に置き換える。
\ :「\」をつける。
$ :「$」をつける。
. :小数点「.」をつける。
, :コンマ「,」をつける。
+ :符号「+」または「-」をつける。
- :負の値のときに「-」をつける。
/ :「/」をつける。

【例】
01 KINGAKU PIC \\,\\\,\\9

 このとき、「KINGAKU」に「00065000」を代入したとすると。

\65,000

のように編集される。

○ 無名項目
 無名項目は項目のうち、項目名がない(または「FILLER」を書く)ものである。
 文字を出力する際に体裁を整えるのによく使われる。

【例】
02 PIC X(3).
02 FILLER PIC 9(5).

□ 集団項目
 集団項目は複数の項目をひとつにまとめることができる。

【例】
01 S-REC.
     02 S-CODE PIC 9(5).
     02 S-NAME PIC X(20).
     02 S-TANKA PIC 9(6).

・この例では「IN-REC」が集団項目となる。

・集団項目に PIC句 はかけない。

・集団項目のレベル番号は、このレベル番号よりも小さくなるようにする。

VALUE句
 VALUE句を使うと項目を宣言すると同時に、初期値を代入することができる。

【例】
01 END-FLG PIC 9 VALUE 0.
01 NAME PIC X(10) VALUE "なし".

・「VALUE」に続けて定数を指定する

・項類に合う定数を書く

【各項目に代入可能な定数】
文字項目 : すべての定数

数字項目 : 数字定数、HIGH-VALUE、LOW-VALUE、ZERO

編集項目 : 数字項目と同じ

OCCURS句
 OCCURS句を使えばテーブルを宣言することができる。
 テーブルを使えば、同じ項目をまとめて定義できる。

【例】
01 TBL.
     02 CODE PIC 9(6) OCCURS 10.

・「OCCURS」に続けて数字定数を書く

・この例では「CODE」という項目を10個まとめて宣言したことになる

・テーブルにアクセスするには添字を使う

CODE(3)

 カッコ内の数字を添字といい、この場合、先頭から3番目の項目をあらわしている。

・添え字は1からその個数までの範囲に収まるようにする。範囲を超えるとエラーになる。

REDEFINES句
 REDEFINES句を使えば領域を再定義することができる。

【構文】

レベル番号 一意名1 REDEFINES 一意名2.

・一意名2を新たに一意名1として再定義する

・一意名1のレベル番号と一意名2のレベル番号は等しくなければならない

・一意名1と一意名2は集団項目でなければならない

・一意名2は直前の集団項目でなければならない

・一意名2にファイルの親項目を指定できない

【例】
02 S-TBL REDEFINES SHOUHIN-VALUE.

部分参照
 部分参照を使えば、項目の一部分を参照することができる。

【構文】

項目名(開始位置:文字数)

・「開始位置」から、「文字数」で指定した桁数分の文字列を参照する

【例】
STR(1:3)
STR(5:)

・文字数を省略すると、開始位置から最後までを参照する

・参照範囲が正しくないとエラーになる。

前へ    次へ