アプリケーション
本章では、COBOLプログラムの構造を紹介し、COBOLプログラムの記述内容について説明します。
1. COBOLプログラムの構造
業務を構成するアプリケーションは、COBOL、PL/I、Assemblyなどの言語を使用して作成できます。メインフレームのアプリケーション・プログラムの大半はCOBOLで作成されています。OpenFrame AIMは、COBOLで作成されたアプリケーションの実行をサポートします。
OpenFrame AIMは、COBOL 85標準に準拠しており、ユーザーがOpenFrame/AIMの機能を簡単に利用するための追加文法をサポートしています。汎用COBOLコンパイラーでコンパイルできるように前処理を実行するプログラムが提供されるため、別途の修正なしで使用することができます。
以下は、COBOLプログラムの構造です。

COBOLプログラムは、以下の4つの部(Division)で構成されます。
-
見出し部(Identification Division)
プログラムの開始を示します。プログラム名、作成者、作成日などのプログラムを識別できる内容を記述します。
プログラムIDは必須項目であり、アプリケーションからの呼び出し時にこの名前を参照するので、別のプログラムIDと重複しないように注意してください。
-
環境部(Environment Division)
プログラムをコンパイルおよび実行するための環境を定義する構成節(configuration section)と入出力ファイルの情報を定義する入出力節(input-output section)を記述します。
-
データ部(Data Division)
プログラムで使用されるデータを定義します。
以下の節で構成されます。
節 説明 file section
ファイルの構造を記述します。
working-storage section
プログラムによって実行されるデータ・レコードを記述します。
linkage section
サブプログラムから呼び出されるときに使用できるパラメータを記述します。
-
手続き部(Procedure Division)
プログラムの処理内容を記述します。手続き部の始めには宣言部分(declaratives)を記述します。
2. COBOLプログラムの形式
フォーマット定義ソースと同様に、COBOLプログラムもレコード形式に応じて固定長レコードと可変長レコードに分けられます。
以下の図は、固定長レコードと可変長レコードのCOBOLプログラムの記述形式を示しています。

以下は、COBOLプログラムの5つの領域についての説明です。
-
一連番号領域(Sequence number area)
プログラムの各行を識別するためのシーケンシャル番号を記述します。
-
標識領域(Indicator area)
標識領域には以下の記号を使用できます。
記号 説明 空白
A領域、B領域の記述の開始を示します。
*
コメント行として処理されます。
/
改ページ行であることを示します。コメントとして処理されます。
-
前行からの継続を示します。
-
A領域
各部の開始、節、段落の宣言およびFD句、レベル番号などを記述します。
-
部(Division)、節(Section)、段落(Paragraph)
-
レベル・インジケーターFD、SD
-
レベル番号01、77
-
宣言部分の始まりと終わり(DECLARATIVES、END DECLARATIVES)
-
プログラムの終わり
-
-
B領域
段落を構成する文やステートメントなどを記述します。
3. COBOLプログラムの機能
COBOLプログラムを作成して使用できる機能について説明します。
3.1. 標準機能
以下は、COBOLの標準機能です。
-
基本機能
4つの部(Division)で構成された基本構造をサポートします。データを処理するために変数を定義し、使用する機能を提供します。
-
ファイル入出力機能
順ファイル、相対ファイル、索引ファイルの入出力をサポートします。ファイルの構成によってさまざまなアクセス方法があります。
-
プログラム間呼び出し機能
1つのプログラムから他のプログラムを呼び出して実行することができます。呼び出されたプログラム間のデータ共有が可能です。
-
ソート/マージ機能
ファイル内のレコードをソートしたり、2つ以上のファイル・レコードをマージしたりすることができます。
-
原始文操作機能
プログラムの一部を挿入したり、置き換えたりします。
-
報告書作成機能
報告書を簡単かつ標準化された形式で作成できる機能です。
3.2. 拡張機能
以下は、COBOLの拡張機能です。
-
日本語処理
日本語プログラミングおよび日本語データを処理することができます。日本語データを処理するために、ADJUST(Advanced Japanese User Support Software)で提供されるコード変換機能を使用します。
-
ビット操作機能
内部ブーリアン(Boolean)項目、外部ブーリアン項目、ブーリアン定数、ブーリアン演算をサポートし、ビット項目のデータ処理が可能です。
3.3. システム機能
システム機能とは、COBOLが使用できるインターフェースのことをいい、インターフェースを介してOpenFrame AIMの機能を使用することができます。COBOLプログラムで使用できるOpenFrame AIM機能は以下のとおりです。
-
通信のための仮想ファイルのインターフェース
外部端末またはアプリケーション間通信をサポートするためのファイルを定義し、その通信ファイルへの入出力を指示することで通信を行うことができます。通信ファイルは、定義タイプに応じて表示ファイルとメッセージ・ファイルに分けられます。プログラムは、通信ファイルを使用してさまざまな装置にレコードを表示または印刷し、プログラム間通信を行います。
-
関係型データベース
関係型データベースを使用できるインターフェースを介してデータを使用できます。SQLまたは索引ファイルの入出力方式を使用します。
-
ネットワーク・データベース
ネットワーク・データベースを使用できるインターフェースを介してデータを使用できます。ネットワーク・データベースのデータを処理するための操作言語を使用します。
-
システム情報の取得機能
データベース・システムや通信管理システムなど複数のシステム制御情報を参照できる機能を提供します。他のプログラムに拡張された領域または複数のプログラムから、ポインターを使用して共通領域を参照することができます。
-
トランザクション管理
トランザクションの開始、終了、停止などを実行できます。また、デッドロック発生時の手続きを宣言部に指定して、デッドロック処理を行うことができます。
4. COBOLプログラム関連のリソース
COBOLプログラムでCOPY文またはINCLUDE文を使用して外部ファイルの内容を内部にコピーして使用できます。このような外部ファイルをコピーブック(Copybook)といいます。使用するコピーブックは、COBOLプログラムのコンパイル時に指定されたCOPYライブラリに存在する必要があります。コピーブックは、既存のものを使用するか、新しく作成して使用することもできます。
コピーブックは、作成目的に応じて以下のように3つに分けられます。
-
ユーザー・コピーブック
ユーザーが直接作成したコピーブックです。ユーザー・コピーブックには、データ定義およびプログラム・コードを記述することができ、マクロとみなされます。OpenFrame AIMでは、既存のコピーブックを修正せずにそのまま使用します。
-
フォーマット定義コピーブック
画面または帳票のようなフォーマット定義体を使用する場合は、データ入出力のためのレコードが必要です。このレコード情報を別途ファイルに記述したものがフォーマット定義コピーブックです。フォーマット定義コピーブックはフォーマット定義ソースから抽出され、OpenFrame AIMが提供するjybfg000ツールを使用して作成します。
-
サブスキーマ・コピーブック
ネットワーク・データベースを使用する場合は、データ入出力のためのレコードが必要です。レコード情報は、ADLのSCHEMAコマンドとSUBSCHEMAコマンドで定義され、定義されたレコード情報を別途ファイルに記述したものがサブスキーマ・コピーブックです。OpenFrame/NDBが提供するsubscツールを使用して作成します。サブスキーマ・コピーブックは、既存システムでは存在しないリソースです。