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.
88レベル
レベル番号88を指定すると、条件名を定義することができる。
- 【構文】
- 88 条件名1 VALUE IS {定数1 [THRU 定数2]} ・・・ .
- ・定数1、定数2には、条件名1に対する値、又は値の範囲を指定する
- ・定義した条件名は、条件式として参照する箇所で使用することができる
- 【例】
- 01 W-NUM PIC 9(3).
- 88 N-FLG VALUE 64.
部分参照
部分参照を使えば、項目の一部分を参照することができる。
- 【構文】
- 項目名(開始位置:文字数)
- ・「開始位置」から、「文字数」で指定した桁数分の文字列を参照する
- 【例】
- STR(1:3)
- STR(5:)
- ・文字数を省略すると、開始位置から最後までを参照する
- ・参照範囲が正しくないとエラーになる。
前へ 次へ