2020-12-04に更新

COBOLの基本構文その2

この記事は COBOL アドベントカレンダー2020 4日目の記事です。

当分は COBOL についての基本的な話をする予定なので、
多くの部分で wikipedia などの記述とカブると思います。

TL;DR

COBOLのプログラム 4つのDIVISION 続き

では、

  • IDENTIFICATION DIVISION :見出し部
  • ENVIRONMENT DIVISION:環境部

についてお話しました。
本日はこの続きからやっていきます。

DATA DIVISION:データ部

COBOL プログラムの3番目に記述する DIVISION です。
実行用プログラムが入力として受け取り、操作し、作り出し又は出力として書き出すデータについて記述します。
データ部は COBOL プログラムではオプショナルであり、
(実際にはほぼありませんが)データを宣言し、使用することのない COBOL プログラムでは省略可能です。

現代のプログラミング言語では変数などは必要に応じて都度宣言することができますが、
COBOL プログラムにおいてはプログラム内で取り扱う変数や定数については
全てデータ部で宣言しておいてから使用することになります。

変数や定数といいましたが、COBOL プログラムにおけるデータは以下の3種類があります。

  • 変数
  • 定数
  • 表意定数
    • あらかじめ名称が定められている特定の意味を持つ定数
    • HIGH-VALUES, LOW-VALUES など

そして、 DATA DIVISION は以下4つの SECTION = 節 からなります。

  • FILE SECTION
  • WORKING-STORAGE SECTION
  • LOCAL-STORAGE SECTION
  • LINKAGE SECTION

DATA DIVISION では COBOL プログラムにおける変数宣言を用いてデータの定義を行いますが、
ここでは各節の簡単な説明に留めます。

FILE SECTION:ファイル節

ファイルのレコード構造を定義します。
ENVIRONMENT DIVISION =環境部で定義したファイルに対し、データ部にてファイルのブロック長やレコード長、
レコードの詳細を記述する節です。ファイルを利用する場合には必須となります。

WORKING-STORAGE SECTION:作業ストレージ節

プログラムで使用される一時変数とファイル構造を宣言します。

LOCAL-STORAGE SECTION:ローカルストレージ節

WORKING-STORAGE SECTION と似た節です。
唯一の違いは、プログラムが実行を開始するたびに変数が割り当てられ、初期化されることです。

LINKAGE SECTION:連絡節

外部プログラムから受信したデータ名を説明するために使用します。
一番利用されるのはサブルーチンです。
サブルーチンとは、ある特定の処理をパッケージ化して、各プログラム内で共通利用できるプログラムのことです。
呼ばれたプログラムが呼んだプログラムから引数でデータを受け取る内容を記述します。
実務的な COBOL プログラムには単独の COBOL プログラムで完結する処理は少ないため、
利用頻度は高いといえます。

PROCEDURE DIVISION:手続き部

COBOL プログラムの4番目に記述する DIVISION です。

COBOL プログラムの実行は、手続き部の宣言ではない最初の文から始まります。
原則としてCOBOLプログラムに書いてある順序で実行されます。
その順序と異なる場合は、規則として示されます。
手続き部は、次に実行される COBOL ソース・プログラムの先頭の手前、
またはプログラムにおいてこれ以上ステートメントが現れない物理的な位置で実行が終了します。

上記3つのDIVISIONを記述したあとやっとこの DIVISION にて
実行されるプログラムを記述するのが COBOL プログラムです。
現代のプログラミング言語に比べると、随分前置きが長く感じますね。

ここまでの例:

000100****************************
000200* ここはコメント
000300****************************
000400 IDENTIFICATION                DIVISION. 
000500 PROGRAM-ID.                   COBOL_SAMPLE01. 
000600 AUTHOR.                       JUNYA KITAYAMA. 
000700 DATE-WRITTEN.                 12/03/2020. 
000800 ENVIRONMENT                   DIVISION. 
000900 CONFIGURATION                 SECTION. 
001000 SOURCE-COMPUTER.              IBM-I. 
001100 OBJECT-COMPUTER.              IBM-I. 
001200 SPECIAL-NAMES. 
001300   CONSOLE IS CONSL. 
001400 WORKING-STORAGE SECTION. 
001500 01 HELLO1      PIC X(15).
001600 PROCEDURE DIVISION. 
001700   MOVE 'HELLO, WORLD!!!' TO HELLO1.
001800   STOP RUN.

COBOL の具体的な言語記述に関しては、明日以降触れていきましょう。

ツイッターでシェア
みんなに共有、忘れないようにメモ

北山淳也

アプリケーションエンジニアをやっています。専門はバックエンドです。リモートワーク歴2年目。 C#, TypeScript, Java, C++, Flutter, COBOL, SQLServer, AWS, Azure

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント