EGL ファイルには、次のような一連のパーツ
が含まれています。
各パーツは、個別の名前付きの単位です。
一部のパーツ (例えば、プログラム) は、生成可能パーツ
であり、個々の生成可能パーツがコンパイル可能単位の基礎になります。生成可能パーツは、
そのパーツを含んでいる EGL ソース・ファイルと同じ名前を持っている必要があります。
この場合、名前の大/小文字の区別は重要であり、例えば、myPart は MYPART とは異なります。
EGL ソース・ファイル (拡張子 .egl) には、ゼロ個または 1 個の生成可能パーツと、
ゼロ個以上の他のパーツを組み込むことができます。
パーツは、次のように分類することもできます。
- ロジック・パーツ は、EGL プロシージャー型言語で作成した
ランタイム・シーケンスを定義します。
- 生成不可能なパーツである関数 は、ロジックの基本単位です。その他の種類のロジック・パーツすべてに、関数を組み込むことができます。
- 以下のいずれかのタイプのプログラム を定義でき、
これらはインターフェース・タイプによって異なります。
それぞれが 1 つの生成可能パーツです。
上のどのタイプのプログラムでも、
メインプログラムとして定義できます。
この種類のプログラムは、オペレーティング・システム・プロセスによって、
または場合によってはユーザーによって、呼び出し以外のプログラム転送によって開始されます。
さらに、基本または textUI プログラムを、
呼び出しによってのみ起動できる呼び出し先プログラムとして宣言できます。
メインプログラムおよび呼び出し先プログラムのランタイム・デプロイメントについて
詳しくは、『ランタイム構成』を参照してください。
- PageHandler は、生成可能パーツの 1 つであり、ユーザーと
Web ページの間の相互作用を制御します。
- JasperReport 型の Handler
は、カスタマイズされた関数が入っている生成可能パーツであり、それらの関数は、JasperReport
の設計ファイルの実行中にさまざまな時点で呼び出されます。
それぞれの関数から戻されたデータは、出力レポートに組み込まれます。出力レポートは、PDF、XML、テキスト、CSV、または HTML フォーマットで提供されます。
- サービスは、以下のようにアクセスされるコードを含んだ生成可能パーツです。
- TCP/IP 接続経由で EGL コードから
(この場合、パーツには、EGL サービス の実装の詳細が含まれる)、または
- HTTP 接続経由で任意のコードから
(この場合、パーツには、EGL Web サービス の実装の詳細が含まれる)。
- ライブラリーも生成可能パーツです。
これは、共用される関数や変数のコレクションであり、それらの関数や変数をプログラム、
pageHandler、EGL サービス、および他のライブラリーからローカルで使用できるようにすることができます。
- データ・パーツ は、ユーザー・プログラムが利用可能なデータ構造を定義します。
以下の種類のデータ・パーツが変数宣言内でタイプとして使用されます。
- DataItem パーツ には、最も基本的な種類のデータに関する情報が含まれています。
これらのパーツは、システム範囲のデータ辞書内のエントリーによく似ており、それぞれのパーツにデータのサイズ、
型、フォーマット設定規則、入力妥当性検査規則、および表示の提案に関する詳細が組み込まれています。
DataItem パーツを 1 回定義しておけば、そのパーツを任意の数のプリミティブ変数または
レコード・フィールドの基礎として使用できます。
DataItem パーツは、プリミティブ型から変数を作成するのに便利です。
例えば、次のような myStringPart の定義を考えてみます。
これは、String 型の DataItem パーツです。
DataItem
MyStringPart String { validValues = ["abc", "xyz"] }
end
関数を開発する際に、次のように MyStringPart 型の変数を宣言できます。
myString MyStringPart;
次の宣言は、上記の宣言と同じ効果があります。
myString STRING { validValues = ["abc", "xyz"] };
このように、DataItem
パーツの名前は、特定のプロパティー設定値を持つプリミティブ型の単なる別名といえます。
- Record パーツ は、複雑なデータの基礎となります。タイプが
レコード・パーツである変数は、フィールドを含んでおり、レコードと呼ばれます。
固定および非固定の 2 つのカテゴリーのレコード・パーツを使用することができます。
後者のカテゴリーのほうが、より広範囲に使用されるので、それを最初に説明します。
非固定レコード・パーツにある各フィールドは、以下のいずれを
基礎とすることができます。
- STRING などのプリミティブ型
- DataItem パーツ
- 固定レコード・パーツ (後述)
- 別のレコード・パーツ
- 上記のいずれかの種類の配列
それぞれのフィールドは、Dictionary か ArrayDictionary (後述)、または
Dictionary か ArrayDictionary の配列とすることができます。
非固定レコード・パーツを使用して、汎用処理のための変数を作成したり、
リレーショナル・データベースにアクセスしたりすることができます。
非固定レコード内のデータの長さは、実行時に変化する場合があります。
- 固定レコード・パーツ は、固定長の複雑なデータの基礎となります。
タイプが固定レコード・パーツである変数は、フィールドを含んでおり、各フィールドは、以下のいずれかを型として持つことができます。
- CHAR などのプリミティブ型
- dataItem パーツ
各フィールドは、副構造を持つことができます。
例えば、電話番号を指定するフィールドは、次のように定義できます。
10 phoneNumber CHAR(10);
20 areaCode CHAR(3);
20 localNumber CHAR(7);
固定レコード・パーツはあらゆる種類の処理に使用できますが、最良の用途は、VSAM ファイル、MQSeries® メッセージ・キュー、およびその他の順次ファイルに対する入出力操作です。
EGL は、ある程度、VisualAge Generator などの以前のプロダクトとの互換性が保たれるよう、固定レコード・パーツをサポートしています。
固定レコードは、リレーショナル・データベースへのアクセスや汎用処理に使用できますが、なるべくそのような目的に固定レコードを使用しないことをお勧めします。
- Dictionary パーツ は、常に使用可能になっており、定義を必要としません。
辞書パーツに基づいた変数には一連のキーとそれらに関連した値を組み込むことができ、実行時に「キーおよび値」エントリーを追加したり除去したりできます。
- ArrayDictionary パーツ は、常時使用可能であり、定義を必要としません。
ArrayDictionary パーツに基づいた変数を使用すると、すべての配列から同じ番号が付いたエレメントを取り出すことで、
一連の配列にアクセスすることができます。
この方法で取り出されたエレメント・セットは、それ自体が 1 つの辞書であり、それぞれの配列名は、配列エレメント内の値と対になったキーとして扱われます。
ArrayDictionary
は、『コンソール・ユーザー・インターフェース』で説明されている表示テクノロジーとの関係で特に便利です。
もう一方のデータ・パーツとして DataTable
があります。
これは、変数の型としてではなく、変数として扱われます。
DataTable は、複数のプログラムで共用できる生成可能パーツです。
これには一連の行と列が入っており、それぞれのセルにはプリミティブ値が組み込まれています。このパーツは、実行単位に対して (ほとんどの場合) グローバルな変数として扱われます。
- UI (ユーザー・インターフェース) パーツ は、
固定フォント画面および印刷書式でユーザーに表示されるデータのレイアウトを記述します。
UI パーツは、さまざまなコンテキストで使用され、以下のタイプがあります。
- 下位型 ConsoleForm のレコード・パーツは、consoleUI
テクノロジーのコンテキストでユーザーに対して提示されるデータ編成です。
他のレコード・パーツと同様に、それぞれが 1 つ以上の変数の型として使用されます。
ただし、その場合、それぞれの変数は、レコードでなくコンソール・フォーム と呼ばれます。
ConsoleUI テクノロジーには、ユーザー用に定義される他のパーツも含まれ、変数の基礎として使用されます。
詳しくは、『コンソール・ユーザー・インターフェース』を参照してください。
- Form も、ユーザーに対して提示されるデータ編成です。
書式には、textUI プログラム内で画面へ送信されるデータを編成するものと、任意の種類のプログラム内でプリンターへ送信されるデータを編成するものがあります。
各書式は、固定レコードのように、固定された内部構造体を含んでいますが、書式に副構造を含むことはできません。
書式は、次に述べるように、FormGroup に含まれるか、それによって参照されている場合にのみ、
プログラム、PageHandler、またはライブラリーで使用できるようになります。
- FormGroup パーツ
は、テキスト書式と印刷書式のコレクションであり、生成可能パーツです。
ほとんどの場合、プログラムには、ヘルプ関連出力用の 1 つの formGroup のほかに、1 つの formGroup のみを組み込むことができます。
同じフォームを複数の formGroup に組み込むことができます。
formGroup 内の各フォームは、プログラム全体からアクセスできます。
ただし、プログラム固有の use 文の中でアクセスを指定する必要があります。
書式は、変数として参照されます。
- サブタイプ VGUIRecord のレコード・パーツは、
VGWebTransaction プログラムのコンテキストでユーザーに表示されるデータ編成です。
Web ユーザー・インターフェースは、Page Designer で作成します。
Page Designer は JSP ファイルをビルドし、
(ユーザーが VGWebTransaction プログラムで作業していないとき)
それを EGL PageHandler に関連付けます。
JSP ファイルは、Web 経由でユーザーと対話するアプリケーションの UI パーツに似ています。
Web アクセスの詳細については、『Web サポート』を参照してください。
- アクセス・パーツ により、以下のように外部コードと対話できます。
- インターフェース・パーツ は、
生成不可能パーツであり、これを使用すると、EGL サービスから、Web サービス (EGL など) から、
または Java™ コードから、機能にアクセスできます。
- レポート・パーツ および ReportData パーツ は、
事前定義されており、実行時にレポートの充てんに役立つ変数の基礎として使用されます。
レポートは、JasperReports と呼ばれるオープン・ソースの Java ベース・ライブラリーを基にしています。
EGL テクノロジーの概要については、『EGL レポートの概要』を参照してください。
- ビルド・パーツ は、EGL ビルド・ファイル (拡張子 .eglbld) で定義され、さまざまな処理特性が定義されます。
- ビルド記述子パーツ は生成プロセスを制御し、
プロセス中に読み取られた他の制御パーツを示します。
- 『リンケージ・オプション・パーツ』では、生成されたプログラムの、
他のプログラムからの転送方法および他のプログラムへの転送方法について、
詳しく説明されています。
また、このパーツは生成された COBOL プログラムがリモートの CICS® 領域のファイルにアクセスする方法に
関する詳細も示します。このパーツ内の情報は、生成時、テスト時、および実行時に
使用されます。
- リソース関連パーツ は、EGL レコードを、特定のターゲット
・プラットフォーム上のファイルにアクセスするために必要な情報に関連付けます
。このパーツ内の情報は、生成時、テスト時、および実行時に使用されます。
- バインド制御パーツ (ターゲット・プラットフォームが
CICS for z/OS® の場合のみ適用) は、1 つ以上のプログラムから DB2® データベースにアクセスする方法を記述します。このパーツ内の情報は、生成時および準備時に使用されます。
- リンク・エディット・パーツ (ターゲット・プラットフォームが
CICS for z/OS の場合にのみ適用) は、
複数のプログラムからロード・モジュールを作成する方法を記述します。
このパーツ内の情報は、生成時および準備時に使用されます。
固定レコード、DataTable、または書式 (テキスト書式および印刷書式) は、固定構造体 を含んでいます。
この構造体は一連のフィールドから構成されており、各フィールドは生成時に既知であるサイズと型を持ち、DataTable
または固定レコードの場合は、フィールドに副構造を持たせることができます。