プロパティー

プロパティーは、EGL がパーツ、変数、または文に関する具体的な情報をエンコードするために使用する「名前/値」のペアです。EGL はこうしたプロパティーをさまざまな方法で内部的に定義しますが、EGL プログラマーが知っておく必要がある重要な特徴は多くはありません。

この文書では「プロパティー」という用語を、上記すべてを指す広い意味で使用します。

これらのプロパティーは値の設定ブロックで設定することができます。値の設定ブロックについては、値の設定ブロックで詳しく説明します。 特定のパーツまたは文で使用可能なプロパティーおよび値について詳しくは、それらのパーツおよび文に関する個々のプロパティーのトピックを参照してください。

有効なプロパティー・セットは、コンテキストによって変化します。

実行時にシンプル・プロパティーまたは複合プロパティーにアクセスすることはできません。(暗黙フィールドにはアクセスできます。) 例えば、リレーショナル・データベース・レコード用にステレオタイプ化された変数を作成する場合、 レコードがアクセスするデータベース表を識別する tableNames プロパティーに 割り当てられた名前の取り出しや変更を行う論理を作成することはできません。 変数宣言の中でプロパティー値をオーバーライドしたとしても、プログラム・ロジックで開発時に指定した値を変更することはできません。

そうしたプロパティー値へのランタイム・アクセスが行われないことは、変数の内容を代入したり、 その変数をパラメーターとして使用したりするときに、プロパティー値が内容と一緒に転送されないことを意味します。 同様に、レコードを EGL 関数に渡す場合、パラメーターはフィールド内容を受け取りますが、 開発時に割り当てられていたプロパティーは保存します。 つまり、関数からはプログラムがレコード・プロパティーに対して行った指定変更を識別することができません。

変数名とプロパティー

EGL 変数の名前をプロパティーに割り当てた場合は、変数名を直接使用します (名前を引用符で囲みません。引用符はリテラル文字列を示します)。以下のプロパティーについて、この規則を忘れずに適用してください。
基本プログラム
inputRecord
JSF ハンドラー・ステレオタイプ
onConstructionFunctioninitialUI 配列要素。
Rich UI ハンドラー・ステレオタイプ
onConstructionFunctionvalidationByPassFunctionsvalidatorFunctionviewRootVar
SQLRecord ステレオタイプ
keyItems
その他のプロパティー
msgFieldnumElementsItemselectedIndexItemselectedRowItemselectedValueItem selectFromListItemvalidatorDataTablevalidatorFunctionredefines

複合プロパティー

場合によっては、(一連のプロパティー・フィールドで構成された) 複合プロパティーを割り当てることによって生成特性を指定することができます。以下の例では、EGL サービスを宣言し、サービスへのアクセス提供に必要な詳細を含んでいる xml 複合プロパティーを定義します。
myService ExampleService {
   @xml {
      name="HelloWorld",
      namespace="http://my.website/services"} }
...
end

実行時に、複合プロパティーやそのプロパティー・フィールドにアクセスすることはできません。

代入とプロパティー

プロパティーは、ある値変数を他の値変数に代入する場合には、移動を行いません。 次のシナリオを例に挙げてみます。
  myVar1 INT {color = red} = 5;
  myVar2 INT {color = blue} = 2;

  myVar1 = myVar2;

代入後、myVar1 の値は 2、色は赤になります。

変数を引数として関数に渡す場合も、同様になります。 関数は変数の値を受け取りますが、そのプロパティーの内容は受け取りません。

参照変数の振る舞いは異なります。プロパティーを参照変数に代入する場合、これらのプロパティーを変数が示すオブジェクトに代入します。代入後、2 番目の参照変数は、同じオブジェクトを指します。 参照変数の割り当てを次の例で示します。
myDictionary1 Dictionary { caseSensitive=NO };
myDictionary2 Dictionary { caseSensitive=YES };

myDictionary1 = myDictionary2;

代入後は、myDictionary1 は、同じ Dictionary パーツである myDictionary2 として示されるので、myDictionary1 が大/小文字を区別するようになります。


フィードバック