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

動的アクセスが有効であるすべての場所で、ストリング変数、定数、またはリテラルを大括弧で囲んで使用することにより、フィールドを参照できます。 中身が入っている 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.(C) Copyright IBM Japan 2005.