COBOL言語の「TYPE句」とは?データ型機能について知ろう|用語辞典
COBOL(コボル)言語の予約語TYPE句を使った命令文の書き方とは
COBOL(コボル)言語のTYPE句とは?
TYPE句は報告書や帳票などを作成するときに、報告集団の情報を記述する報告集団記述項の1つです。
TYPE句は報告書集団記述項の中でも、主に報告書集団のデータ型や種類、出力位置などを宣言するときに、データ部(DATA DIVISION)に記述します。
TYPE句で指定する項目は主に「REPORT HEADING (報告書頭書き)」「PAGE HEADING(ページ頭書き)」「CONTROL HEADING (制御頭書き)」「DETAIL(明細報告)」「CONTROL FOOTING(制御脚書き)」「PAGE FOOTING(ページ脚書き)」「REPORT FOOTING (報告書脚書き)」などがあります。
また、報告書を作成するにはTYPE句の他にも印字位置を指定するCOLUMN NUMBER句や制御切れ、改ページを指定するGROUP INDICATE句、報告集団の縦の位置を指定するLINE NUMBER句など、さまざまな機能があります。
書き方:
TYPE IS {REPORT HEADING または RH}
{PAGE HEADING または PH}
{CONTROL HEADING または CH} {データ-1 または FINAL}
{DETAIL または DE}
{CONTROL FOOTING または CF} {データ-1 または FINAL}
{PAGE FOOTING または PF}
{REPORT FOOTING または RF}
※TYPE句の各項目は、それぞれRH、PHなどの省略形で記述することもできます。
TYPE句は以下のように記述します。
※サンプルでは報告書記述項(RD)も記述しています。RD句では報告書のページ形式や制御用データ項目について指定します。
TYPE句のCOBOL(コボル)言語における基本事項やルールについて
- TYPE IS 各項目などの間の空白や改行は、自由に指定できます。
- REPORT HEADINGには報告書頭書き報告集団を指定します。
- PAGE HEADINGにはページ頭書き報告集団を指定します。
- CONTROL HEADINGには制御頭書き報告集団を指定します。
- DETAILには明細報告集団を指定します。
- CONTROL FOOTINGには制御脚書き報告集団を指定します。
- PAGE FOOTINGにはページ脚書き報告集団を指定します。
- REPORT FOOTINGには報告書脚書き報告集団を指定します。
- データ-1、データ-2およびFINALは、報告書記述項のCONTROL句で指定します。また、両方を省略することもできます。
COBOL(コボル)言語のTYPE句を扱う上での注意点
- TYPE IS 各項目の報告集団は複数指定できません。
- TYPE句で参照する型は同じでなければいけません。
- 制御脚書きおよび報告書脚書きでは、SOURCEおよびUSE句は、制御(CONTROL)項目または制御項目に従属する項目を参照することはできません。
- ページ頭書きまたは頭書きグループでは、制御(CONTROL)項目または制御項目に従属する項目を参照することはできません。
- 1つの報告書の記述には、1つの本体集団の記述がなければいけません。
TYPE句を使ったCOBOL(コボル)プログラムの活用法
TYPE句を指定すれば、報告書を作成する上で必要な報告集団を宣言することができます。ここでは、帳票を出力するための簡単なサンプルを紹介します。
(TYPE句以外のプログラムの詳細な処理内容については、ここでは省略します。)
- IDENTIFICATION DIVISION.
- PROGRAM-ID. TYPE_SAMPLE.
- ENVIRONMENT DIVISION.
- INPUT-OUTPUT SECTION.
- FILE-CONTROL.
- SELECT REPORT-FILE ASSIGN TO 'report.txt'
- …
- DATA DIVISION.
- FILE SECTION.
- FD REPORT-FILE
- …
- WORKING-STORAGE SECTION.
- …
- *>報告書節
- REPORT SECTION.
- *>報告書記述項
- RD URIAGE-HOKOKUSHO-LIST
- LINE LIMIT 100
- FIRST DETAIL 5
- PAGE LIMIT 50
- CONTROL IS HOKOKUSHO.
- *>制御頭書き報告集団を指定
- 01 TYPE IS CONTROL HEADING URIAGE.
- 02 LINE NUMBER PLUS 3.
- 03 COLUMN 10 PIC X(5) VALUE '-----'.
- 03 COLUMN 20 PIC X(5) VALUE 'URIAGE'.
- 03 COLUMN 30 PIC X(5) VALUE 'REPORT'.
- 03 COLUMN 46 PIC X(5) VALUE '-----'.
- *>制御頭書き報告集団を指定
- 01 TYPE IS CONTROL HEADING REPORT.
- 02 LINE NUMBER PLUS 2.
- 03 COLUMN 13 PIC X(2) VALUE '--'.
- 03 COLUMN 20 PIC X(5) VALUE 'TOKYO'.
- 03 COLUMN 30 PIC X(11) VALUE 'URIAGE-DAKA'.
- 03 COLUMN 46 PIC X(2) VALUE '--'.
- *>明細報告集団を指定
- 01 URIAGE-DAKA TYPE IS DETAIL.
- 02 LINE NUMBER PLUS 1.
- 03 COLUMN 15 PIC X(15) SOURCE SHOHIN.
- 03 COLUMN 30 PIC 99,999 SOURCE ITEM02.
- *>制御脚書き報告集団を指定
- 01 TYPE IS CONTROL FOOTING TOKUYAKU.
- 02 LINE NUMBER PLUS 2.
- 03 COLUMN 15 PIC X(7) VALUE "GOUKEI".
- 03 COLUMN 25 PIC ¥¥,¥¥9 SUM URIAGE.
- 03 COLUMN 35 PIC X(6) VALUE "RUIKEI".
- 03 COLUMN 45 PIC ¥,¥¥¥,¥¥9 SUM URIAGE.
- PROCEDURE DIVISION.
- …
- STOP RUN.
※【¥】は全角表記ですが、実際の入力は半角で入力ください。
帳票への出力例:
サンプルでは、それぞれのTYPE句の項目に出力するためのデータを指定しています。
「TYPE IS CONTROL HEADING URIAGE」CONTROL HEADINGではURIAGEの値に変更があったときに、印刷します。
「TYPE IS CONTROL HEADING REPORT」では、REPORTの値が変わったときに印刷します。
「URIAGE-DAKA TYPE IS DETAIL」では、明細報告集団を印刷します。
「TYPE IS CONTROL FOOTING TOKUYAKU」では、TOKUYAKUの値が変わったときに印刷します。
各TYPE句では指定した位置に帳票へ出力するために、COLUMNでカラムの位置を指定しています。
この記事を読んだ人は、こちらの記事も読んでいます
【未経験者歓迎】COBOLプログラマー・システムエンジニアの募集
COBOL入門のカテゴリー