DataItem socSecNum INT {
displayName = "Social Security Number"}
end
この文書では「プロパティー」という用語を、上記すべてを指す広い意味で使用します。
これらのプロパティーは値の設定ブロックで設定することができます。値の設定ブロックについては、値の設定ブロックで詳しく説明します。 特定のパーツまたは文で使用可能なプロパティーおよび値について詳しくは、それらのパーツおよび文に関する個々のプロパティーのトピックを参照してください。
パーツがステレオタイプ化されている場合、そのパーツだけでなく、パーツ内のフィールドに対しても、 追加プロパティーが使用可能です (ステレオタイプを参照してください)。詳しくは、ステレオタイプがそのパーツを特殊化する固有のデータ・アクセスまたは UI テクノロジーを参照してください。
DataItem IDNumber CHAR(9)
{
minimumInput = 9, // 9 文字の入力が必要
isDecimalDigit = yes, // 数字でなければならない
column = "SSN" // 列へ関連付けられている
}
end
次の文は、IDNumber 型の UI フィールドを宣言しますが、
この文はユーザーによる数字入力を必要としません。
myID IDNumber { isDecimalDigit = no };
この例では、オーバーライドは minimumInput と column プロパティーには影響しません。
Record TestRecord
y int {color = red};
end
この定義に基づいて変数を宣言する場合、以下のように、color プロパティーの値を指定変更することができます。myRec TestRecord {y{color = black}};
実行時にシンプル・プロパティーまたは複合プロパティーにアクセスすることはできません。(暗黙フィールドにはアクセスできます。) 例えば、リレーショナル・データベース・レコード用にステレオタイプ化された変数を作成する場合、 レコードがアクセスするデータベース表を識別する tableNames プロパティーに 割り当てられた名前の取り出しや変更を行う論理を作成することはできません。 変数宣言の中でプロパティー値をオーバーライドしたとしても、プログラム・ロジックで開発時に指定した値を変更することはできません。
そうしたプロパティー値へのランタイム・アクセスが行われないことは、変数の内容を代入したり、 その変数をパラメーターとして使用したりするときに、プロパティー値が内容と一緒に転送されないことを意味します。 同様に、レコードを EGL 関数に渡す場合、パラメーターはフィールド内容を受け取りますが、 開発時に割り当てられていたプロパティーは保存します。 つまり、関数からはプログラムがレコード・プロパティーに対して行った指定変更を識別することができません。
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、色は赤になります。
変数を引数として関数に渡す場合も、同様になります。 関数は変数の値を受け取りますが、そのプロパティーの内容は受け取りません。
myDictionary1 Dictionary { caseSensitive=NO };
myDictionary2 Dictionary { caseSensitive=YES };
myDictionary1 = myDictionary2;
代入後は、myDictionary1 は、同じ Dictionary パーツである myDictionary2 として示されるので、myDictionary1 が大/小文字を区別するようになります。