2020-12-03に更新

COBOLの基本構文その1

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

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

TL;DR

COBOL の基本構文について

では、COBOL プログラムの第一歩として
1行ごとの書き方についてお話しました。
最後に出てきたコード例はこんな感じでしたね。

例:

000100****************************
000200* ここはコメント
000300****************************
000400 IDENTIFICATION                DIVISION. 
000500 PROGRAM-ID.                   COBOL_SAMPLE01.
000600

今回はここで出てきた
IDENTIFICATION DIVISION. などの
COBOL の基本構文について触れていきましょう。

COBOLのプログラム 4つのDIVISION

COBOL プログラムの基本構造として、
以下に挙げる 4つのDIVISION を順に記述していきます。
COBOL プログラムを構成する基礎となる部分なので、順に追っていきましょう。

IDENTIFICATION DIVISION :見出し部

COBOL プログラムの一番最初に記述する DIVISION です。
見出し部では必須の項目として PROGRAM-ID を記述します。
COBOL プログラムでは、ファイル名などではなくこの PROGRAM-ID を用いてプログラムを区別するため、
他のプログラムと被らない 一意なプログラムID を指定する必要があります。
プログラム名は英字で始まる英数字で構成される文字列を指定します。

また、見出し部では PROGRAM-ID の他に任意の項目として

  • AUTHOR
    • 作成者
  • DATE-WRITTEN
    • 作成日
  • INSTALLATION
    • 設置環境

などがあります。
これら任意の項目は現在のCOBOLでは廃止とされており、
新たにCOBOLプログラムを書くときには記述すべきではないとされていますが、
AUTHORDATE-WRITTEN に関しては引き続き使われているような気がします(要出典)。

例:

000100****************************
000200* ここはコメント
000300****************************
000400 IDENTIFICATION                DIVISION. 
000500 PROGRAM-ID.                   COBOL_SAMPLE01. 
000600 AUTHOR.                       JUNYA KITAYAMA. 
000700 DATE-WRITTEN.                 12/03/2020. 
000800 

ENVIRONMENT DIVISION:環境部

COBOL プログラムの2番目に記述する DIVISION です。
ソース作成マシン名、利用ファイルの定義など、実行に必要な環境を記述します。
あまりありませんが、もし仮に入出力を全く行なわないプログラムであれば省略可能となります。

ENVIRONMENT DIVISION は 大きく
CONFIGURATION SECTION = 構成節 と INPUT-OUTPUT SECTION 入出力節の2つからなります。

CONFIGURATION SECTION:構成節

プログラムの作成・実行環境を提示する節です。
以下の3つの段落があります。

  • SOURCE-COMPUTER 段落
    • ソース・プログラムをコンパイルするコンピューターを記述します。
    • 構文検査は行われますが、実行そのものに影響はありません。
    • IBM-I と記述されるものを多く見かけます。慣例的な表現でしょうか。
  • OBJECT-COMPUTER 段落
    • オブジェクト・プログラムが実行されるシステムを指定します。
    • 構文検査は行われますが、実行そのものに影響はありません。
    • こちらも IBM-I と記述されるものを多く見かけます。慣例的な表現でしょうか。
  • SPECIAL-NAMES 段落
    • CONFIGURATION SECTION における主要な記述となります。
    • 以下のような指定を行います。
    • IBM 指定の環境名とユーザーが定義した簡略名の関連づけ
    • 通貨符号のための、単一または複数の通貨文字ストリングおよび置換文字を指定
    • PICTURE 文節および数字リテラル内のコンマと小数点の機能が交換されることを指定

INPUT-OUTPUT SECTION:入出力節

プログラム上でファイルやプリンターなどを利用する場合には、必須になる項目。
ファイルを扱わない COBOL プログラムはほとんど存在しないため、
ここの節が環境部ではメインの記述となります。

  • FILE-CONTROL 段落
    • ファイルに名前を付け、SELECT 文節を記述することでァイルやプリンターなどの割り当てを記述します。
  • I-O-CONTROL 段落
    • さまざまなファイルが共用する記憶域を指定します。
    • COBOL プログラムではオプショナルな指定となっており、現在使うことはほぼないようです。

環境部のまとめ

標準出力に出力をプリントするような COBOL プログラムの場合、このような指定になります。
(早速 INPUT-OUTPUT SECTION を指定しない例外的なコードになってしまいましたがご容赦ください)

例:

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. 

次回に続く

今回は COBOL 基本構文である 4つの DIVISION の中から
IDENTIFICATION DIVISIONENVIRONMENT DIVISION についてお話しました。
次回は残り2つの DIVISION についてお話します。

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

北山淳也

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

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

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

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

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

コメント