Dictionary パーツ は、常時使用可能なパーツであり、定義を必要としません。 辞書パーツに基づいた変数には一連のキーとそれらに関連した値を組み込むことができ、実行時に「キーおよび値」エントリーを追加したり除去したりできます。それらのエントリーは、レコード内のフィールドのように扱われます。
row Dictionary { ID = 5, lastName = "Twain", firstName = "Mark", };
宣言の中にエントリーを組み込むとき、各キー名は EGL 識別子であり、EGL の命名規則に従っている必要があります。実行時にエントリーを追加するときは、さらに柔軟性が増し、文字列リテラル、定数、または変数を指定できます。また、その場合、内容は EGL の予約語でもよく、識別子の中では無効となる文字を含めることもできます。詳細については、『動的アクセス用の大括弧構文』を参照してください。
row.age = 30; row["Credit"] = 700; row["Initial rating"] = 500
row.lastname = "Clemens";
lastname String age, credit, firstCredit int; lastname = row.lastname; age = row.age; credit = row.credit; credit = row["Credit"]; firstCredit = row["Initial rating"];
Record myRecordPart x int; end
次のコードは、myRecordPart タイプの変数を辞書に入れ、その後、元の変数内の値を変更します。
testValue int; myRecord myRecordPart; // 変数の値を設定し、 // その変数のコピーを辞書に入れる。 myRecord.x = 4; row Dictionary { theRecord myRecord; } // 元のレコードに新規の値を入れる。 myRecord.x = 700; // 辞書のレコードのコピーにアクセスし、 // testValue に 4 を代入する。 testValue = row.theRecord.x;
row Dictionary { age = 30 }; newRow Dictionary { }; newRow = row // 結果は真 if (newRow.age == 30) ; end
宣言の中のプロパティー・セットは、その辞書が処理される方法に影響を及ぼします。辞書固有の一連の関数は、コードにデータとサービスを提供します。
row Dictionary { // プロパティー caseSensitive = no, ordering = none, // フィールド ID = 5, lastName = "Twain", firstName = "Mark" age = 30; };
row Dictionary { // プロパティー caseSensitive = no, ordering = none, // フィールド row.caseSensitive = "yes" row.ordering = 50, age = 30 };
age = row.age; age = row.AGE; age = row["aGe"];
age = row.age; age = row.AGE; age = row["aGe"];
プロパティー caseSensitive の値は、この後のセクションで説明するいくつかの関数の振る舞いに影響を及ぼします。
以下のオプションがあります。
プロパティー ordering の値が None の場合、(関数 getKeys が呼び出されたときの) キーの順序は、(関数 getValues が呼び出されたときの) 値の順序と異なる場合があります。
if (row.containsKey(age)) ; end
dictionaryName.containsKey(key String in) returns (Boolean)
この関数は、入力ストリング (key) が辞書内のキーであるかどうかに応じて、真または偽へと解決されます。辞書プロパティー caseSensitive が no に設定されている場合、大/小文字の区別は考慮されません。それ以外の場合、関数は大/小文字の一致も含め、完全に一致するものを探します。
containsKey は、論理式でのみ使用されます。
dictionaryName.getKeys ( ) returns (String[ ])
この関数は、各ストリングが辞書内のキーである、ストリングの配列を戻します。
辞書プロパティー caseSensitive が no に設定されている場合、戻される各キーは小文字になります。それ以外の場合、戻される各キーは、そのキーが格納されたときと同じ大/小文字になります。
辞書プロパティー ordering が no に設定されている場合、戻されるキーの順序を当てにすることはできません。それ以外の場合、順序は、このプロパティーの説明の中で指定されたとおりになります。
dictionaryName.getValues ( ) returns (ANY[ ])
この関数は、あらゆる型の値の配列を戻します。各値は、辞書内のキーに関連付けされます。
dictionaryName.insertAll(sourceDictionary Dictionary in)
この関数は、一連の assignment 文が、ソース辞書 (sourceDictionary) 内の「キーおよび値」エントリーを target (これは関数名を修飾している名前を持つ辞書です)にコピーするかのように動作します。
キーがソース内に存在してターゲット内に存在しない場合、その「キーおよび値」エントリーは、ターゲットへコピーされます。キーがソースとターゲットの両方に存在する場合、ソース・エントリーの値がターゲット内のエントリーをオーバーライドします。ターゲット内のキーがソース内のキーに一致するかどうかの判別は、各辞書の caseSensitive プロパティーの値によって影響を受けます。
dictionaryName.removeElement(key String in)
この関数は、入力ストリング (key) が辞書内のキーであるエントリーを除去します。辞書プロパティー caseSensitive が no に設定されている場合、大/小文字の区別は考慮されません。それ以外の場合、関数は大/小文字の一致も含め、完全に一致するものを探します。
dictionaryName.size( ) returns (INT)
辞書内の「キーおよび値」エントリーの数を示す整数を戻します。
関連する概念
パーツ
EGL での変数の参照
関連する参照項目
論理式