Dictionary パーツ
Dictionary パーツは、キーを介してアクセス可能なデータのリストを含みます。 例えば、データベースから読み込んだキーおよびメッセージが取り込まれた辞書を含む、メッセージ処理機能を作成することができます。
Dictionary パーツは、常時使用可能であり、定義を必要としません。 Dictionary パーツに基づいた変数には、一連のキーとそれらに関連する値が含まれます。実行時に「キー/値」エントリーを追加したり除去したりできます。レコード内でフィールド名を使用するのと同じように、プログラム内のキー名を使用します。 辞書変数は、エントリーを入力した順序で保持します。
次の例は、辞書変数の宣言を示しています。
myRef Dictionary
{
ID = 5,
lastName = "Twain",
firstName = "Mark"
};
宣言の中にエントリーを組み込むとき、各キー名は EGL 識別子であり、EGL の命名規則に従っている必要があります。 実行時にエントリーを追加する場合には、かなり柔軟性があります。『動的な型と動的アクセス』を参照してください。
辞書に新規に「キー/値」のペアを追加する代入例を次に示します。
myRef.age = 30;
myRef["Credit"] = 700;
既に存在するキーの代入を試みると、既存の「キー/値」エントリーがオーバーライドされます。
次の代入は有効であり、「Twain」が「Clemens」に置き換えられます。
myRef.lastname = "Clemens";
代入を使用してデータを取り出すこともできます。
lastname STRING
age, credit INT;
lastname = myRef.lastname;
age = myRef["age"];
credit = myRef.credit;
「キー/値」エントリーの値は、ANY 型です。つまり、1 つの辞書にさまざまな種類の情報を入れることができます。 辞書エントリーには、以下のどの値でも入れることができます。
- 前もって宣言されているレコードまたはその他の変数
- 定数またはリテラル
変数を辞書に追加すると、その変数のコピーが割り当てられます。次のレコード・パーツを考えてみます。
Record ExampleRecord
x int;
end
次の例では、ExampleRecord 変数を辞書に入れてから、元の変数に含まれる値を変更します。
testValue int;
myRecord ExampleRecord;
// 変数の値を設定し、
// その変数のコピーを辞書に入れる。
myRecord.x = 4;
myRef Dictionary
{
theRecord = myRecord
};
// 元のレコードに新規の値を入れる。
myRecord.x = 700;
// 辞書のレコードのコピーにアクセスし、
// testValue に 4 を代入する。
testValue = myRef.theRecord.x;
1 つの辞書を別の辞書に代入すると、代入先の内容が代入元の内容で置き換えられ、代入先辞書のプロパティーがオーバーライドされます (『Dictionary プロパティー』を参照してください)。
例えば、次のコード内の条件文は、true です。
myRef Dictionary { age = 30 };
newRef Dictionary { age = 50 };
newRef = myRef;
// 結果は true
if (newRef.age == 30)
;
end
宣言の中で指定するプロパティーは、辞書の処理方法に影響を与えます。 『Dictionary プロパティー』を参照してください。辞書に固有の関数は、コードにデータとサービスを提供します。 『Dictionary 関数』を参照してください。
互換性
| プラットフォーム | 問題 |
|---|---|
| COBOL 生成 | Dictionary パーツはサポートされていません。 |