こんにちは!COBOL学習のStep 2へようこそ🎉
前回はCOBOLプログラムの骨組みである4つのDIVISION(部)について学びましたね。今回は、その2番目にあたる ENVIRONMENT DIVISION(環境部) の基本的な役割について見ていきましょう。
IDENTIFICATION DIVISION(見出し部)がプログラム自身の情報を書く場所だったのに対し、ENVIRONMENT DIVISIONは、そのプログラムがどのような「環境」で動くのか、特にどのファイルを使うのかといった、プログラムの外の世界との関わりを定義する場所です。
ENVIRONMENT DIVISIONの構造 🧱
ENVIRONMENT DIVISIONは、主に以下の2つのSECTION(節)で構成されます。
- CONFIGURATION SECTION (構成節): プログラムを動かすコンピュータ環境に関する設定をします 💻
- INPUT-OUTPUT SECTION (入出力節): プログラムが利用するファイルに関する設定をします 📄
必ずしも両方の節が必要なわけではありません。特にファイルを使わない簡単なプログラムでは、ENVIRONMENT DIVISION自体を省略することもあります。
CONFIGURATION SECTION (構成節) ⚙️
CONFIGURATION SECTIONでは、プログラムをコンパイル(翻訳)するコンピュータと、実行するコンピュータの種類を指定します。
- SOURCE-COMPUTER.: プログラムをコンパイルするコンピュータ名を記述します。
- OBJECT-COMPUTER.: プログラムを実行するコンピュータ名を記述します。
最近の環境では、コンパイルと実行を同じコンピュータで行うことが多いため、これらの記述は形式的なものとなり、省略されることもあります。
また、この節には SPECIAL-NAMES. という段落もあり、通貨記号(例:`¥`)の指定や、小数点としてカンマを使う(ヨーロッパなどで見られる)といった、特殊な環境設定を行うこともできますが、まずは基本的な役割だけ覚えておきましょう。
ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER. FUJITSU-GS. *> コンパイルするコンピュータ
OBJECT-COMPUTER. FUJITSU-GS. *> 実行するコンピュータ
INPUT-OUTPUT SECTION (入出力節) ↔️
INPUT-OUTPUT SECTIONは、プログラムがデータを読み書きするために使用するファイルを定義する、非常に重要な部分です。
このセクションの中心となるのが FILE-CONTROL 段落です。ここでは、プログラムの中で使う「論理ファイル名」と、実際にコンピュータ上に存在する「物理ファイル名」を結びつけます。
- SELECT句: プログラム内でファイルを参照するときの名前(論理ファイル名)を定義します。
- ASSIGN句: SELECT句で定義した論理ファイル名を、実際のファイル(物理ファイル)に対応付けます。この物理ファイル名は、実行環境(JCLなど)で指定されることが多いです。
他にも、ファイルの編成(データの並び方、例えば`ORGANIZATION IS SEQUENTIAL`(順編成)など)やアクセスモード(読み書きの方法)を指定しますが、これらはStep 4のファイル処理で詳しく学びます。
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT INPUT-FILE ASSIGN TO "INFILE". *> 論理名INPUT-FILEを物理名"INFILE"に対応付け
SELECT OUTPUT-FILE ASSIGN TO "OUTFILE". *> 論理名OUTPUT-FILEを物理名"OUTFILE"に対応付け
* ORGANIZATION IS SEQUENTIAL などもここに記述するが、詳細はStep 4で!
この例では、プログラム中では `INPUT-FILE` という名前で `INFILE` という物理ファイルを、`OUTPUT-FILE` という名前で `OUTFILE` という物理ファイルを扱えるようになります。
INPUT-OUTPUT SECTIONには、他に I-O-CONTROL 段落もありますが、これはより高度なファイル制御(例えば、複数のファイルで記憶領域を共有するなど)に使われるため、初学者の段階ではあまり意識する必要はありません。
まとめ ✨
今回はENVIRONMENT DIVISIONの基本的な役割について学びました。
- ENVIRONMENT DIVISIONは、プログラムと外部環境(コンピュータ、ファイルなど)を結びつける役割を持つ。
- CONFIGURATION SECTIONで、実行環境(コンピュータの種類など)を定義する(省略されることも多い)。
- INPUT-OUTPUT SECTIONのFILE-CONTROL段落で、プログラムで使うファイル(論理ファイル名)と実際のファイル(物理ファイル名)をSELECT句とASSIGN句で対応付ける。
特にINPUT-OUTPUT SECTIONは、COBOLが得意とするファイル処理の基礎となる部分です。ここで定義したファイルを実際に操作するのは、PROCEDURE DIVISIONやDATA DIVISIONの役割になります。
次のステップでは、DATA DIVISIONでプログラムが扱うデータを定義する方法を学びます。お楽しみに!🚀
参考情報 📚
- COBOL言語のプログラム構成を理解しよう!|基礎ガイド: COBOLプログラムの4つのDIVISIONの概要とENVIRONMENT DIVISIONの役割について解説されています。
https://www.cobol.co.jp/cobol-guide/guide-003.html - 環境部(ENVIRONMENT DIVISION) – COBOLプログラミング入門: ENVIRONMENT DIVISIONに含まれる節と段落、および簡単な記述例が紹介されています。
https://www.cobol-programming.com/introduction/environment-division.html - File-Control Paragraph (Micro Focus): FILE-CONTROL段落内のSELECT句やASSIGN句の詳細な構文と説明があります(英語ですが詳細です)。
https://www.microfocus.com/documentation/extend/10.4.1/GUID-9A5E444C-D760-4204-868F-96C2A84147A4.html
コメント