COBOLプログラミング入門

COBOLプログラミングについてはじめての方でもわかるように図解を取り入れわかりやすく解説しているCOBOL入門サイトです。

第1章 COBOL概要

COBOLとは

COBOL(COmmon Business Oriented Language)はアメリカで生まれた事務処理のための高級言語です。

COBOLが開発されたのが1959年9月。

誕生したのがもう半世紀以上も前のことです。

その当時、COBOL以外にもさまざまなプログラミング言語が存在しています。

高級言語としてはFORTRANやLIPSが代表例と言えるでしょう。

現在のように音楽や動画などのマルチメディアをコンピュータで楽しむことなんてまったくない時代。

インターネットもまだ生まれていません。

そんな時代にどんなシステムが開発されていたのかというと、弾道計算に代表される科学技術計算などの研究者向けのシステムと給与計算に代表される事務処理系システムが主だったそうです。

FORTRANは科学技術計算用、LIPSは人工知能の研究・開発に主に使われていたプログラミング言語でしたが、それらの言語はその特性上、事務処理系のプログラム開発には向いていません。

しかし、事務処理系のプログラムのニーズも高く、効率良く開発できるプログラミング言語が求められるようになりました。

そのような背景のもと、事務処理系のプログラム開発に最適化されたCOBOLが開発されました。

高級言語の誕生年表[図1]

第2章 COBOLプログラムの構成

COBOLプログラムの全体構成

COBOLプログラムは、全体が4つの部に分かれて構成されます。

さらに各部にはいくつかの節や段落に分けられています。

それぞれの部で、それぞれの役割が明確になっているのがCOBOLのひとつの特徴であり、COBOLソースは可読性が高いと言われるひとつの要因と言えます。

しかしその点が、他言語プログラマがはじめてCOBOLを用いるときにつまづきやすいところでもあります。

例えば、VBでは変数をソース上のどこででも宣言することができますが、COBOLではデータ部でしかできません。

ささいなことのようですが、VBプログラマにとって意外と不便に感じられる点と言えるでしょう。

下図はCOBOLプログラムの全体構成になります。

まずは見出し部(IDENTIFICATION DIVISION)からはじまり、環境部(ENVIRONMENT DIVISION)、データ部(DATA DIVISION)、手続き部(PROCEDURE DIVISION)と続きます。

見出し部(IDENTIFICATION DIVISION)
環境部(ENVIRONMENT DIVISION)
データ部(DATA DIVISION)
手続き部(PROCEDURE DIVISION)

見出し部(IDENTIFICATION DIVISION)

見出し部(IDENTIFICATION DIVISION)はCOBOLプログラムで最初に記述する部になります。

見出し部には、プログラム名やその作成者、作成日などのプログラムのメンテナンス情報を記述します。

それらを見出し部内の段落として記述していくことになります。

見出しに含まれる段落
見出し部段落
IDENTIFICATION DIVISION----PROGRAM-ID プログラム名
 L--AUTHOR プログラムの作成者
 L--DATE-WRITTEN プログラム作成日
 L--DATE-COMPILED コンパイル日
 L--INSTALLATION インストール先
 L--SECURITY 機密事項

なお、見出し部には節(SECTION)は存在しません。

下記は実際の記述例です。

000010 IDENTIFICATION                   DIVISION.
000020 PROGRAM-ID.                      SAMPLE001.
000030 AUTHOR.                          T-KATO.
000040 DATE-WRITTEN.                    2012/3/16.
000050 DATE-COMPILED.                   2012/3/16.

環境部(ENVIRONMENT DIVISION)

環境部(ENVIRONMENT DIVISION)はCOBOLプログラムで2番目に記述する部になります。

環境部には、作成しようとしているプログラムを翻訳(コンパイル)するコンピュータ名や実行するコンピュータ名、さらに使用する環境変数の受け渡し情報やプログラムから読み書きするファイルの名前や種類などを定義します。

通信部に含まれる節と段落

環境部段落
ENVIRONMENT DIVISION------ CONFIGURATION SECTION 構成節 
  L-- SOURCE-COMPUTER 翻訳するコンピュータ名
  L-- OBJECT-COMPUTER 実行するコンピュータ名
 L-- INPUT-OUTPUT SECTION 入出力節 
  L-- FILE-CONTROL ファイル管理

下記は実際の記述例です。

000070 ENVIRONMENT                      DIVISION.
000080 CONFIGURATION                    SECTION.
000090 SOURCE-COMPUTER.                 MYCOMPUTER.
000100 OBJECT-COMPUTER.                 MYCOMPUTER.
000110 INPUT-OUTPUT                     SECTION.
000120 FILE-CONTROL.
000130     SELECT    IN-FILE            ASSIGN       TO ID01
000140                                  ORGANIZATION IS LINE SEQUENTIAL.
000150     SELECT   OUT-FILE            ASSIGN       TO OD01
000160                                  ORGANIZATION IS LINE SEQUENTIAL.

翻訳するコンピュータ名(SOURCE-COMPUTER)や実行するコンピュータ名(OBJECT-COMPUTER)段落はプログラムの動作に影響することはない段落であるため、省略されることが多いです。

しかし、ファイル管理(FILE-CONTROL)段落などは影響があるのでファイルの入出力を行うのであれば、しっかりと記述する必要があります。

具体的な記述方法に関しては後の記事で紹介します。

データ部(DATA DIVISION)

データ部はCOBOLプログラムで3番目に記述する部になります。

これまでの部がCOBOLプログラムを作り上げていく上での事前準備のようなものと言え、ここからの部がプログラムを実際に作り上げていく箇所になります。

データ部では、入出力ファイルのレイアウト、データ項目(変数)、外部プログラムとのインターフェイス(引数)などプログラム上で取り扱う全てのデータを定義します。

通信部に含まれる節
データ部
DATA DIVISION ------ FILE SECTION ファイル
 L-- WORKING-STORAGE SECTION 作業場所
 L-- LINKAGE SECTION 連絡
 L-- COMMUNICATION SECTION 通信
 L-- REPORT SECTION レポート

作業場所節(WORKING-STORAGE SECTION)ではプログラム上で使用する全ての変数定義を行います。

連絡節(LINKAGE SECTION)は外部プログラムとのデータのやり取りに関する情報を定義します。

(C言語でいう、main()関数の引数にあたります。)

また、COBOLでは入出力ファイルのレイアウトをファイル節(FILE SECTION)で明確に定義します。

他にも通信節とレポート節があります。

下記は実際の記述例です。
000180 DATA                             DIVISION.
000190 FILE                             SECTION.
000200 FD IN-FILE.
000210 01 IN-RECORD.
000220    03  IN-SYOHIN-CODE            PIC  X(6).
000230    03  IN-SYOHIN-NAME            PIC  X(30).
000240    03  IN-SYOHIN-TANKA           PIC  9(8).
000250 WORKING-STORAGE                  SECTION.
000260 77 WRK-COUNT                     PIC  9(2).
000270 LINKAGE                          SECTION.
000280 REPORT                           SECTION.
000290 SCREEN                           SECTION.

各節にはそれぞれ段落があります。

具体的な記述方法に関しては後の記事で紹介します。

手続き部(PROCEDURE DIVISION)

手続き部(PROCEDURE DIVISION)はCOBOLプログラムで最後に記述する部になります。

手続き部では、プログラムが行う処理内容を記述していきます。

これまでの部と違い、手続き部には規定の節や段落は存在しません。

それらはプログラム作成者が必要に応じて作成していくことになります。

節がC言語で言うところの、関数にあたります。

段落は節の中をさらに小さく括った処理のまとまりになります。

下記は実際の記述例です。
000310 PROCEDURE                        DIVISION.
000320     PERFORM  INIT-PROC.
000330*
000340     PERFORM  MAIN-PROC.
000350*
000360     STOP  RUN.
000370*
000380 INIT-PROC                        SECTION.
000390*
000400     MOVE  ZERO                   TO  WRK-COUNT.
000410*
000420     OPEN  INPUT    IN-FILE.
000430     PERFORM  INFILE-READ-PROC.
000440*
000450 INIT-PROC-EXIT.
000460*
000470     EXIT.

行番「000320」から「000360」までが、このプログラムのメイン処理となります。

(C言語で言う、main()関数にあたります。)

行番「000380」(INIT-PROC)から「000450」(INIT-PROC-EXIT)までがひとつの節となります。

(C言語で言う、関数にあたります。)

第3章 COBOLコーディングルール

コーディングフォーマット

コーディングルール

第4章 入出力

COBOLでHello world!

DISPLAY文

ACCEPT文

第5章 制御文

IF~THEN文による条件分岐

IF~THEN文による多岐選択

EVALUATE文による多岐選択

PERFORM UNTILによる繰り返し

PERFORM VARYING UNTILによる繰り返し

PERFORM TIMESによる繰り返し

第6章 データ定義(変数)

COBOLのデータ定義

命名規則と特殊なデータ定義

データ型の種類

データ項目の定義方法(PICTURE句)

定数の種類


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS