宣言式は、文字長や配列境界などの項目を指定するために使用する制限を指定した式です。
制限式 とは、各演算が組み込みタイプで、各 1 次子が次のような式です。
+---------------------------------Fortran 95---------------------------------+
+------------------------------Fortran 95 の終り------------------------------+
+----------------------------------IBM 拡張----------------------------------+
+--------------------------------IBM 拡張の終り-------------------------------+
+---------------------------------Fortran 95---------------------------------+
宣言関数 は、宣言式内で使用することができます。関数は、組み込み、内部、またはステートメント関数でない純粋な関数である場合、宣言関数です。宣言関数は、仮プロシージャーの引き数を持つことはできず、再帰的にすることもできません。
+------------------------------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
+------------------------------Fortran 95 の終り------------------------------+