Java ラッパー名の別名の割り当て方法

EGL 生成プログラムは、以下の規則を適用して Java™ ラッパーに別名を割り当てます。

  1. EGL 名がすべて大文字の場合は、それを小文字に変換します。
  2. 名前がクラス名またはメソッド名の場合は、最初の文字を大文字にします。(例えば、x に対する getter メソッドは、getx() ではなく、getX() です。)
  3. 下線 (_) およびハイフン (-) をすべて削除します。(VisualAge® Generator 互換モードを使用している場合は、EGL 名内のハイフンは有効です。)下線またはハイフンの後に文字が続く場合は、その文字を大文字に変更します。
  4. 名前が、区切り文字としてピリオド (.) を使用する修飾名の場合は、すべてのピリオドを下線で置き換え、名前の先頭に下線を追加します。
  5. 名前にドル記号 ($) が含まれている場合は、そのドル記号を 2 つの下線で置き換え、名前の先頭に下線を追加します。
  6. 名前が Java キーワードの場合は、名前の先頭に下線を追加します。
  7. 名前が * (充てんフィールドを表すアスタリスク) の場合は、最初のアスタリスクを Filler1 に変更し、2 番目のアスタリスクを Filler2 に変更します。以降も同様にします。

さらに、プログラム・ラッパー、レコード・ラッパー、および副構造化されている配列フィールドの Java ラッパー・クラス名には、特別な規則が適用されます。残りのセクションでは、これらの規則について説明し、例を示します。一般に、生成されたラッパー・クラス内のフィールド間で名前が競合している場合は、クラス名と変数名を判別するために修飾名が使用されます。それでも競合が解決しない場合は、生成時に例外がスローされます。

プログラムのラッパー・クラス

レコードのパラメーター・ラッパーは、型定義名に適用される上記の規則を使用して命名されます。レコードのラッパー・クラス名がプログラムのクラス名またはプログラムのラッパー・クラス名と競合している場合は、そのレコードのラッパー・クラス名の終わりに Record が追加されます。

変数名に対する規則は以下のとおりです。
  1. レコード・パラメーター変数は、パラメーター名に適用される上記の規則を使用して命名されます。したがって、get() メソッドおよび set() メソッドには、クラス名ではなくこれらの名前が含まれます。
  2. get メソッドおよび set メソッドは、get または set の後に、上記の規則が適用されたパラメーター名を続けることにより命名されます。

レコードのラッパー・クラス

副構造化された配列フィールドのクラス名に対する規則は以下のとおりです。
  1. 副構造化された配列フィールドは、レコードのラッパー・クラスの内部クラスになり、そのクラス名は、フィールド名に上記の規則を適用して得られます。このクラス名が、それを包含しているレコード・クラス名と競合している場合、Structure がフィールドのクラス名に付加されます。
  2. いずれかのフィールド・クラス名が互いに競合している場合は、修飾されたフィールド名が使用されます。
get メソッドおよび set メソッドの名前に対する規則は以下のとおりです。
  1. メソッドは、get または set の後に、上記の規則が適用されたフィールド名を付けて命名されます。
  2. いずれかのフィールド名が互いに競合している場合は、修飾されたフィールド名が使用されます。

副構造化された配列フィールド・クラス

副構造化された配列フィールドのクラス名に対する規則は以下のとおりです。
  1. 副構造化された配列フィールドは、それを包含している副構造化された配列フィールドに対して生成されたラッパー・クラスの内部クラスになり、そのクラス名は、上記の規則をフィールド名に適用することにより得られます。
  2. このクラス名が、それを包含している副構造化された配列フィールドのクラス名と競合している場合は、Structure がフィールドのクラス名に付加されます。
get メソッドおよび set メソッドの名前に対する規則は以下のとおりです。
  1. メソッドは、get または set の後に、上記の規則が適用されたフィールド名を付けて命名されます。
  2. いずれかのフィールド名が互いに競合している場合は、修飾されたフィールド名が使用されます。

以下のサンプル・プログラム、および生成された出力は、ラッパー生成時に何が予測されていたかを示しています。

サンプル・プログラム

Program WrapperAlias(param1 RecordA)
  
end

Record RecordA type basicRecord
	10 fieldA CHAR(10)[1];
	10 field_b CHAR(10)[1];
	10 field$C CHAR(10)[1];
	10 static CHAR(10)[1];
	10 fieldC CHAR(20)[1];
		15 field CHAR(10)[1];
		15 fieldD CHAR(10)[1];
	10 arrayField CHAR(20)[5];
		15 innerField1 CHAR(10)[1];
		15 innerField2 CHAR(10)[1];
end

生成される出力

生成される出力の名前
Output 名前
プログラムのラッパー・クラス WrapperaliasWrapper。フィールド param1 を含む、レコードのラッパー・クラス RecordA のインスタンス。
パラメーターのラッパー・クラス RecordA。以下のメソッドからアクセスできます
  • getFieldA (fieldA から)
  • getFieldB (最初の field-b から)
  • get_Field__C (field$C から)
  • get_Static (static から)
  • get_FieldC_itemB (fieldC 内の fieldB から)
  • getFieldD (fieldD から)
  • getArrayField (arrayField から)
ArrayField は、getInnerField1 および getInnerField2 を介してアクセスできるフィールドを含む RecordA の内部クラスです。

フィードバック