Java ラッパー生成の出力

Java™ ラッパー生成の出力は以下のとおりです。

生成される Bean は、サーブレット、EJB、または Java アプリケーションなどの非 EGL Java クラスからのサーバー・プログラムの呼び出しのラップに使用できます。 以下の型のクラスが生成されます。

下の表に、生成される Java ラッパー・パーツのさまざまな型の名前を示します。

表 1. 生成される Java ラッパー・パーツの名前
パーツ型と名前 生成されるもの
P という名前のプログラム PWrapper.java 内の PWrapper という名前のクラス
パラメーターまたは入力レコードとして使用される R という名前のレコード R.java 内の R というクラス
パラメーターとして使用されるレコード R 内の副構造領域 S R.java 内の R.S という名前のクラス
L という名前のリンケージ・オプション・パーツ L.properties という名前のリンケージ・プロパティー・ファイル
  1. 示されたパーツ型では、複数のパーツが同じ名前で存在する可能性があります。 そのような場合、2 番目のパーツの名前には追加の接尾部 $v2 が付加されます。 3 番目のパーツ名には $v3 の接尾部が付加され、4 番目以降も $v4 と続きます。

プログラム・パーツを Java ラッパーとして生成するように要求すると、EGL では以下の実行可能プログラムのそれぞれに対して Java クラスを生成します。

さらに、各レコードに対して生成されたクラスには、以下の特性がある各構造化フィールドごとに内部クラス (または内部クラス内のクラス) が含まれます。
生成される各クラスはファイルに格納されます。 EGL 生成プログラムでは、Java ラッパーで使用される名前を以下のように作成します。

プログラムへのパラメーターのいずれかがレコードである場合、EGL ではその変数に対するラッパー・クラスも生成します。 プログラム Prog に名前が Rec で型定義されたレコード・パラメーターがある場合、そのパラメーターのラッパー・クラスの名前は Rec になります。 パラメーターの型定義がプログラムと同じ名前である場合、そのパラメーターのラッパー・クラスには接尾部「Record」が付加されます。

レコード・パラメーターに配列フィールドがあり、そのフィールドの下に別のフィールドがある場合、生成プログラムはラッパーも生成します。 この副構造配列ラッパーは、レコード・ラッパーの内部クラスになります。 ほとんどの場合、Rec 内の副構造配列フィールド AField は、Rec.AField というクラスによってラップされます。 レコードに同じ名前の 2 つの副構造配列フィールドが含まれていることがあり、その場合のフィールド・ラッパーの名前は各フィールドの修飾名を使用して付けられます。 最初のフィールド AField の修飾名が Top1.AField であり、2 番目のフィールドの修飾名が Top2.Middle2.AField である場合、クラスの名前は Rec.Top1$_aField および Rec.Top2$_middle2$_aField になります。 副構造配列の名前がプログラムの名前と同じ場合、副構造配列のラッパー・クラスには接尾部 Structure が付加されます。

低レベルフィールドの値を設定および取得するメソッドは、各レコード・ラッパーおよび副構造配列ラッパーに生成されます。 レコードまたは副構造配列内の 2 つの低レベル・フィールドが同じ名前である場合、生成プログラムでは上記の段落で説明されている修飾名の方式を使用します。

追加のメソッドは、SQL レコードのラッパー内に生成されます。 そのレコードの各フィールドに対して、生成プログラムでは、そのヌル標識を取得および設定するメソッド、およびその SQL 長さ標識を取得および設定するメソッドを作成します。

クラスのコンパイルが完了すると、Javadoc ツールを使用して classname.html ファイルをビルドできます。 その HTML ファイルには、クラスに対するパブリック・インターフェースが記述されます。 Javadoc によって作成された HTML ファイルを使用する場合は、それが EGL Java ラッパーであることを確認してください。 VisualAge® Generator の Java ラッパーから生成される HTML ファイルは、EGL Java ラッパーから生成される HTML ファイルと異なります。

副構造配列があるレコード・パーツの例を以下に示します。

   Record myRecord type basicRecord
     10 MyTopStructure[3];
       15 MyStructureField01 CHAR(3);
       15 MyStructureField02 CHAR(3);
   end
プログラム・パーツに対して、出力ファイルの名前は以下のようになります。
  aliasWrapper.java
ここで
alias
プログラム・パーツで指定される別名です (存在する場合)。 外部名が指定されていない場合は、プログラム・パーツの名前が使用されます。
プログラム・パラメーターとして宣言された各レコードに対して、出力ファイルの名前は以下のようになります。
recordName.java
ここで
recordName
レコード・パーツの名前です。
副構造配列に対して、内部クラスの名前および位置は以下のように、配列名がレコード内で固有のものかどうかによって決まります。
  • 配列名がレコード内で固有である場合、内部クラスはレコード・クラス内にあり、以下のような名前になります。
    recordName.siName
    ここで
    recordName
    レコード・パーツの名前です。
    siName
    配列の名前です。
  • 配列名がレコード内で固有ではない場合、内部クラスの名前は配列の完全修飾名に基づいて、ドル記号 ($) および下線 (_) の組み合わせによって区別する修飾子が付けられます。 例えば、配列がレコードの第 3 レベルにある場合、生成されるクラスはレコード・クラスの内部クラスであり、次のような名前になります。
    Topname$_Secondname$_Siname    
    ここで
    Topname
    トップレベルの構造化フィールドの名前です。
    Secondname
    第 2 レベルの構造化フィールドの名前です。
    Siname
    副構造配列フィールドの名前です。
    同じ名前の別の配列がレコードの最上位レベルに直接従属する場合は、内部クラスもレコード・クラス内にあり、以下のような名前になります。
    Topname$_Siname
    ここで
    Topname
    最上位レベルの構造化フィールドの名前です。
    Siname
    副構造配列フィールドの名前です。

    最後に、副構造配列の名前がレコード内で固有ではなく、その配列がレコード内で固有ではない名前の別の副構造配列に従属している場合について考えてみます。 従属する配列のクラスは、内部クラスの内部クラスとして生成されます。

Java ラッパーの生成時には、リンケージ・オプションがランタイムに設定されるように要求した場合、Java プロパティー・ファイルおよびリンケージ・プロパティー・ファイルも生成されます。


フィードバック