動的アクセス用の大括弧構文

動的アクセスが有効であるすべての場所で、ストリング変数、定数、またはリテラルを大括弧で囲んで使用することにより、フィールドを参照できます。 中身が入っている 1 対の大括弧は、ドットの直後に有効な識別子を置いたものと等価です。

辞書宣言の中で指定されたキーは、EGL 識別子の規則を満たしている必要がありますが、EGL の assignment 文の大括弧構文を使用することにより、より広範囲のキーを指定できます。 次の例では、大括弧構文が必要です。この例では、2 つのエントリーが辞書に追加され、それらの各エントリーに入っている値が取り出されます。
  row Dictionary { lastname = "Smith" };
  category, motto STRING;

  row["Record"] ="Reserved word";
	 row["ibm.com"]="Think!";	

		category = row["Record"];
  motto    = row["ibm.com"]
ドット構文で識別子を使用して値を参照する場合は、その識別子と等価であるストリングを使用することにより、大括弧構文で同じ値を参照できます。 以下の代入には、同じ効果があります。
  row.age = 20;
  row["age"] = 20;

myRecordVar01 というレコードを宣言し、このレコードに myRecordVar02 というフィールドが含まれており、myRecordVar02 は、それ自体が前の辞書を含んでいるレコードであるとします。 次の参照は有効です。

  myRecordVar01.myRecordVar02.row.lastName
この参照では、ほとんどの場合、アクセスは静的です。動的アクセスは、辞書内のフィールドにアクセスしたときに始まります。 ただし、以下の定数が有効範囲内にあるとします。
  const SECOND STRING = "myRecordVar02";
  const GROUP  STRING = "row";
  const LAST   STRING = "lastName";
前の参照は、次のようにコーディングできます。
  myRecordVar01[SECOND][GROUP][LAST]

参照内の最初のシンボルは、常に有効な識別子であることが必要ですが、この例の場合、動的アクセスはその識別子の後で使用されます。

ドット構文と大括弧構文を混在させることもできます。 例えば、次の参照は、前の参照と等価です。
   myRecordVar01[SECOND].row[LAST]
最後の例として、次のような配列指標を使用した参照を考えてみます。
  myRecordVar01.myRecordVar02.myRecordVar03[3][2].myInt
以下の定数が有効範囲内にあるとします。
  const SECOND  STRING = "myRecordVar02";
  const THIRD   STRING = "myRecordVar03";
  const CONTENT STRING = "myInt";
前の参照は、次のような方法でコーディングできます。
   myRecordVar01[SECOND][THIRD][3][2][CONTENT]

   myRecordVar01[SECOND][THIRD][3][2].myInt

   myRecordVar01.myRecordVar02.THIRD[3][2][CONTENT]

関連概念
固定構造体を参照するための簡略構文
動的アクセスと静的アクセス
関数パーツ
パーツ
プログラム・パーツ
パーツの参照
EGL での変数の参照
有効範囲指定の規則と EGL での「this」
固定構造体
Typedef

関連タスク
EGL での変数と定数の宣言

関連リファレンス
配列
関数呼び出し
EGL ソース形式の関数パーツ
MQ レコード用のオプション・レコード
プリミティブ型
使用宣言

フィードバック
(C) Copyright IBM Corporation 2000, 2005. All Rights Reserved.