基本的なCOBOLの文法(2)~IDENTIFICATION/ENVIROMENT/DATA DIVISION~
COBOLでは4つのDIVISION(部)があります。IDENTIFICATION DIVISION(見出し部)、ENVIROMENT DIVISION(環境部)、DATA DIVISION(データ部)、PROCEDURE DIVISION(手続き部)で、順番に記述していく必要があります。それぞれ、どのように記述すればいいか、順を追って説明します。
A.IDENTIFICATION DIVISION
見出し部と呼ばれる部分です。4つのDIVISIONのうち最初に記述します。このDIVISIONは省略することできません。ここには、プログラム名や作成者、作成日時など当該プログラムの見出しを記述します。OpenCOBOLでは、プログラム名の記述は必須で、その他は特に必要ではありません。見出し部の記述例は以下になります。
000010 IDENTIFICATION DIVISION. 000020 PROGRAM-ID. SAMPLE-PG.
PROGRAM-ID句で指定した名称とソースファイル名は異なっていても問題ありません。
B.ENVIROMENT DIVISION
環境部と呼ばれる部分です。IDENTIFICATION DIVISIONの次に記述し、構成節(CONFIGURATION SECTION)と入出力節(INPUT-OUTPUT SECTION)の2つの節からなります。すべての節で指定すべき事が無ければ、記述を省略できます。
(A) 構成節
構成節には翻訳用計算機と実行用計算機の情報を記述しますが、OpenCOBOLでは指定する必要はありません。デバッグ行をコンパイル対象とする場合は翻訳計算機情報に記述する必要があります。
000040 CONFIGURATION SECTION. 000050 SOURCE-COMPUTER. LINUX WITH DEBUGGING MODE.
(B) 入出力節
プログラムで使用する入出力ファイルなどの情報を記述します。
(C) 環境部記述例
環境部の記述例は以下になります。
000030 ENVIRONMENT DIVISION. 000040 CONFIGURATION SECTION. 000050 SOURCE-COMPUTER. LINUX WITH DEBUGGING MODE. 000060 INPUT-OUTPUT SECTION. 000070 FILE-CONTROL. 000080 SELECT INPUT-FILE-1 ASSIGN TO DISK "test.txt" 000090 ACCESS MODE SEQUENTIAL.
C.DATA DIVISION
データ部と呼ばれる部分です。ENVIROMENT DIVISIONの次に記述し、プログラム処理で使用するデータを定義します。ファイル節、作業場所節、連絡節、報告書節があります。すべての節の使用が無ければ、記述を省略できます。ここでは、ファイル節(FILE SECTION)と作業場所節(WORKING-STRAGE SECTION)について簡単に説明し、他の節は割愛いたします。
(A) ファイル節
環境部の入出力節で定義した入出力ファイルのファイル構造とレコードのデータ構造を記述します。環境部入出力節で定義したファイルとそれに伴うファイル節の定義例は以下になります。
000080 SELECT INPUT-FILE-1 ASSIGN TO DISK "test.txt" 000090 ACCESS MODE SEQUENTIAL. ...... 000100 DATA DIVISION. 000110 FILE SECTION. 000120 FD INPUT-FILE-1 LABEL RECORDS ARE STANDARD. 000130 01 INPUT-FILE-RECORD. 000140 03 PHONE-NO PIC X(12). 000150 03 POST-NO PIC X(7).
(B) 作業場所節
プログラム処理で使用するデータ構造を記述します。作業場所節の記述例は以下になります。
000100 DATA DIVISION. 000210 WORKING-STRAGE SECTION. 000220 77 LINE-COUNT PIC 9(2). 000230 77 PAGE-COUNT PIC 9(3). 000300 01 IN-RECORD. 000310 03 TOP-CUR X(30). 000320 03 FILLER X(3). 000330 03 NEXT-CUR X(20).
(C) データ部記述例
データ部の全体を通した記述例は以下になります。
000100 DATA DIVISION. 000210 FILE SECTION. 000220 FD INPUT-FILE-1 LABEL RECORDS ARE STANDARD. 000230 01 INPUT-FILE-RECORD. 000240 03 PHONE-NO PIC X(12). 000250 03 POST-NO PIC X(7). 000300 WORKING-STORAGE SECTION. 000310 77 LINE-COUNT PIC 9(2). 000320 77 PAGE-COUNT PIC 9(3). 000330 01 IN-RECORD. 000340 03 TOP-CUR X(30). 000350 03 FILLER X(3). 000360 03 NEXT-CUR X(20). 000500 LINKAGE SECTION. 000600 REPORT SECTION. 000700 SCREEN SECTION.