宣言式は、文字長や配列境界などの項目を指定するために使用できる、 制限付きの式です。
宣言式はスカラー、整数、制限式です。
制限式 とは、各演算が組み込み型で、各 1 次子が次のような式です。
+---------------------------------Fortran 95---------------------------------+
+-----------------------------End of Fortran 95------------------------------+
+----------------------------------IBM 拡張----------------------------------+
+------------------------------End of IBM 拡張-------------------------------+
+---------------------------------Fortran 95---------------------------------+
宣言関数 は、宣言式内で使用することができます。 関数は、組み込み、内部、またはステートメント関数でない純粋な関数である場合、宣言関数です。 宣言関数は、ダミー・プロシージャーの引き数を持つことはできず、再帰的にすることもできません。
+-----------------------------End of Fortran 95------------------------------+
同一の有効範囲単位内の前回の宣言、有効範囲単位に対して現在有効な暗黙の入力規則、あるいはホスト関連付けや 使用関連付けによって指定された場合に、宣言式内の変数は、型と型付きパラメーターを持たなければなりません。 宣言式内の変数が暗黙入力規則によって入力される場合、後続の型宣言ステートメントにその変数が入れられるときは 常に、暗黙型および型付きパラメーターを確認しなければなりません。
同一の仕様部分に指定されたエンティティーの配列境界または型付きパラメーターに関する照会関数への参照が式に 含まれる場合、型付きパラメーターまたは配列境界を、前の部分で指定しなければなりません。 宣言式が、同じ仕様部分で指定された配列のエレメントの値に対する参照を含む場合、その配列境界を、前の部分での 宣言で指定しなければなりません。 前の指定部分とは、同じステートメント内の照会関数の左側を指します。
LBOUND(C,2)+6 ! C is an assumed-shape dummy array ABS(I)*J ! I and J are scalar integer variables 276/NN(4) ! NN is accessible through host association
+---------------------------------Fortran 95---------------------------------+
以下の例は、ユーザー定義の関数 fact を、 配列値の関数結果の変数内の宣言式で使用する方法について示しています。
MODULE MOD CONTAINS INTEGER PURE FUNCTION FACT(N) INTEGER, INTENT(IN) :: N ... END FUNCTION FACT END MODULE MOD PROGRAM P PRINT *, PERMUTE('ABCD') CONTAINS FUNCTION PERMUTE(ARG) USE MOD CHARACTER(*), INTENT(IN) :: ARG ... CHARACTER(LEN(ARG)) :: PERMUTE(FACT(LEN(ARG))) ... END FUNCTION PERMUTE END PROGRAM P
+-----------------------------End of Fortran 95------------------------------+