+----------------------------------IBM 拡張----------------------------------+
目的
DOUBLE COMPLEX 型宣言ステートメントは倍精度複素数型 のオブジェクトと関数の長さと属性を指定します。 オブジェクトには初期値を割り当てることができます。
構文
>>-DOUBLE COMPLEX--+-----------------------+--entity_decl_list->< +-::--------------------+ '-,--attr_spec_list--::-' |
それぞれの意味は次のとおりです。
attr_spec |
---|
ALLOCATABLE AUTOMATIC BIND DIMENSION (array_spec) EXTERNAL INTENT (intent_spec) INTRINSIC OPTIONAL PARAMETER POINTER PRIVATE PROTECTED PUBLIC SAVE STATIC TARGET VALUE VOLATILE |
>>-a--+------------------+--+------------------------------+--->< '-(--array_spec--)-' '-+-/--initial_value_list--/-+-' +-=--initialization_expr---+ '- => --NULL()-------------'
規則
派生型の定義について、以下のことが該当します。
変数に => を指定する場合、 オブジェクトに POINTER 属性を指定しなければなりません。
変数に initialization_expr を指定する場合、 オブジェクトに POINTER 属性を指定できません。
型宣言ステートメント中のエンティティーは、 エンティティーに対して指定された属性の規則によって制限されます。 詳細は対応する属性ステートメントを参照してください。
型宣言ステートメントは、事実上暗黙の型の規則をオーバーライドします。 組み込み関数の型を確認する型宣言ステートメントを 使用することができます。型 宣言ステートメントの中に組み込み関数の総称名または特定名が 使用されていても、その名前は組み込み関数の特性を失うことはありません。
オブジェクトが仮引き数、割り振り可能オブジェクト、関数結果、無名共通ブロック内のオブジェクト、 整数ポインター、外部名、組み込み名、または自動オブジェクトである場合は、そのオブジェクトを 型宣言ステートメントの中で初期化することはできません。 AUTOMATIC 属性を持っているオブジェクトも初期化することはできません。 ブロック・データ・プログラム単位内の 名前付き共通ブロックにある場合、またはモジュール内の名前付き共通ブロックにある場合、 オブジェクトは初期化することができます。
Fortran 95 では、ポインターは初期化することができます。 ポインターを初期化するには、=> NULL() を使用する方法しか ありません。
インターフェース本体、あるいはサブプログラムの指定部分に宣言式がある 場合、array_spec の宣言式を非定数式にすることができます。この非定数式を使用する宣言オブジェクトのうち、仮引き数または ポインティング先でないものを自動オブジェクト といいます。
1 つの属性を 1 つの型宣言ステートメントの中で繰り返すことはできません。 また、1 つの有効範囲単位内でエンティティーに同じ属性を明示的に複数回与えることもできません。
ステートメントが PARAMETER 属性を 持つときは、initialization_expr を指定する必要があります。宣言するエンティティーが変数で、initialization_expr または NULL() を指定した場合、 変数は最初に定義されます。 宣言するエンティティーが派生型のコンポーネントで、initialization_expr または NULL() を 指定した場合は、派生型にはデフォルトの初期化があります。 a は、組み込み割り当ての規則に従って、 initialization_expr によって決まる値により定義されます。エンティティーが配列である場合は、型宣言ステートメントか、または同じ有効範囲単位内の前の仕様ステートメントで、その配列の形状を指定する必要があります。変数または変数サブオブジェクトを複数回初期化することはできません。a が変数で、initialization_expr か => NULL() がある場合、 名前付き共通ブロックの中のオブジェクト以外は、a が保管済みオブジェクトであることを意味します。 オブジェクトの初期化はオブジェクトの基本的なストレージ・クラスに影響を与える場合もあります。
entity_decl の中で 指定されている array_spec は DIMENSION 属性の 中の array_spec よりも優先します。
ALLOCATABLE または
POINTER 属性を持たない配列関数の結果は、明示的形状配列の仕様を持つものでなければなりません。
宣言されたエンティティーが関数の場合、アクセス可能な明示インターフェース を持つことはできません。組み込み関数の場合は、この限りではありません。
事前に定数の名前として定義されている T または F が型 宣言ステートメントにある場合、それは省略された論理定数ではなく 名前付き定数の名前になります。
例
SUBROUTINE SUB DOUBLE COMPLEX, STATIC, DIMENSION(1) :: B END SUBROUTINE
関連情報
+------------------------------End of IBM 拡張-------------------------------+