>>-+------------------+--+-argument------------------+--------->< '-arg_keyword-- = -' | (1) | +-%VAL--(--argument-------)-+ | (2) | '-%REF--(--argument-------)-'
注:
|
+----------------------------------IBM 拡張----------------------------------+
+------------------------------End of IBM 拡張-------------------------------+
実引き数は、プロシージャー参照の引き数リストに入れます。 プロシージャー参照の実引き数は下記のいずれかです。
ステートメント関数参照内で指定される実引き数は、 スカラー・オブジェクトである必要があります。
プロシージャー名は、特定名でない場合、内部プロシージャーの名前、 ステートメント関数、またはプロシージャーの総称名にすることはできません。
プロシージャーの参照の規則および 制約事項は、プロシージャー参照で説明しています。
Fortran 95 では、非組み込みエレメント型プロシージャーを実引き数として
使用することはできません。
引き数キーワードを使用して、実引き数を仮引き数とは異なる順序で指定することができます。 引き数キーワードを使用すると、オプションの仮引き数に対応する実引き数を 省略することができます。つまり、単にプレースホルダーとして機能する 仮引き数を必要としません。
各引き数キーワードは、参照中のプロシージャーの明示的インターフェースにある仮引き数の名前にしてください。 引き数キーワードは、暗黙のインターフェースを持つプロシージャーの 引き数リスト内に入れないでください。
引き数リスト内で、実引き数を引き数キーワードを使用して指定される場合、 リストの次の実引き数も引き数キーワードによって指定されます。
引き数キーワードは、ラベル・パラメーターに対して 指定することはできません。 ラベル・パラメーターは、 そのプロシージャー参照内で引き数キーワードを参照する前に指定しなければ なりません。
INTEGER MYARRAY(1:10) INTERFACE SUBROUTINE SORT(ARRAY, DESCENDING, ARRAY_SIZE) INTEGER ARRAY_SIZE, ARRAY(ARRAY_SIZE) LOGICAL, OPTIONAL :: DESCENDING END SUBROUTINE END INTERFACE CALL SORT(MYARRAY, ARRAY_SIZE=10) ! No actual argument corresponds to the ! optional dummy argument DESCENDING END SUBROUTINE SORT(ARRAY, DESCENDING, ARRAY_SIZE) INTEGER ARRAY_SIZE, ARRAY(ARRAY_SIZE) LOGICAL, OPTIONAL :: DESCENDING IF (PRESENT(DESCENDING)) THEN . . . END SUBROUTINE
>>-+-dummy_arg_name------------------+------------------------->< | (1) | +-%VAL-------(--dummy_arg_name--)-+ | (2) | '-%REF-------(--dummy_arg_name--)-'
注:
|
仮引き数は、ステートメント関数ステートメント、FUNCTION ステートメント、SUBROUTINE ステートメント、または ENTRY ステートメントで指定します。 ステートメント関数、関数サブプログラム、インターフェース本体、およびサブルーチン・サブプログラムの 仮引き数は、実引き数の型や、および各引き数がスカラー値、配列、プロシージャー、または ステートメント・ラベルのいずれであるかを示しています。 外部サブプログラム、モジュール・サブプログラム、内部サブプログラムの 定義内、またはインターフェース本体内の仮引き数は、次のいずれかに 分類されます。
+----------------------------------IBM 拡張----------------------------------+
%VAL または %REF は、インターフェース・ブロックに ある FUNCTION ステートメント または SUBROUTINE ステートメントの仮引き数に対してのみ 指定することができます。 インターフェースは、Fortran 以外のプロシージャー・ インターフェースに合ったものにしてください。 %VAL または %REF が外部プロシージャーのインターフェース・ブロックにある場合、 この引き渡し方法はそのプロシージャーに対する参照ごとに示されます。 外部プロシージャーの参照で実引き数が %VAL または %REF を指定する場合、対応する 仮引き数用のインターフェース・ブロックで同じ引き渡し方法を指定する必要があります。 詳細については、%VAL および %REFを参照してください。
+------------------------------End of IBM 拡張-------------------------------+
ステートメント関数定義の仮引き数は、変数名として分類されます。
指定名は、仮引き数リスト内に一度だけ入れることが可能です。
ステートメント関数のステートメントに仮引き数として指定される
変数名の有効範囲は、指定されているステートメントの有効範囲と同じです。
この変数名の型は、有効範囲単位内のステートメント関数を含む変数名である場合に持つ型および
型付きパラメーターと同じです。
変数名は、アクセス可能な配列と同じ名前にはできません。