+-------------------------Fortran 2003 ドラフト標準--------------------------+
目的
ASSOCIATE ステートメントは、ASSOCIATE 構文の最初のステートメントです。これは、各エンティティーと変数または式の値との関連を設定します。
構文
.-,----------------------------. V | >>-+-----------------------------+--ASSOCIATE--(----associate_name--=>--selector-+--)->< '-associate_construct_name--:-' |
規則
selector がベクトルの添え字を持つ式または変数の場合、エンティティーにはその式または変数の値が割り当てられます。この場合、関連するエンティティーを再定義 にすることも、未定義にすることもできません。
selector がベクトルの添え字を持たない変数である場合は、エンティティーは指定された変数と関連付けられます。この変数の値が変更されると常に、関連したエンティティー の値も変更されます。
selector が ALLOCATABLE 属性を持つ場合、関連するエンティティーは ALLOCATABLE 属性を持ちません。selector が POINTER 属性を持つ場合、エンティティーはポインターのターゲットと関連付けられ、POINTER 属性を持ちません。 selector が INTENT、TARGET、または VOLATILE 属性を持つ場合、関連するエンティティーが変数であれば、このエンティティーは同じ属性を持ちます。
selector が OPTIONAL 属性を持つ場合は、これを指定する必要があります。
関連するエンティティーは、selector と同じ型、型付きパラメーター、およびランクを持ちます。selector が配列の場合、関連するエンティティーは配列となり、それぞれの次元の下限は組み込み LBOUND(selector) の値と等しくなります。 各次元の上限は、エクステントから 1 を引いた値を下限に加算したものと等しくなります。
associate_name は、その有効範囲単位内で固有でなければなりません。
associate_construct_name を ASSOCIATE 構文ステートメントに指定する場合、対応する END ASSOCIATE ステートメントにも指定しなければなりません。
ASSOCIATE 構文ステートメントは、並列領域の動的エクステントまたは字句エクステント内には指定できません。
例
test_equiv: ASSOCIATE (a1 => 2, a2 => 40, a3 => 80) IF ((a1 * a2) .eq. a3) THEN PRINT *, "a3 = (a1 * a3)" END IF END ASSOCIATE test_equiv END
関連情報
+----------------------End of Fortran 2003 ドラフト標準----------------------+