>>-+------------------+--+-argument------------------+--------->< '-arg_keyword-- = -' | (1) | +-%VAL--(--argument-------)-+ | (2) | '-%REF--(--argument-------)-'
注:
|
+----------------------------------IBM 拡張----------------------------------+
+--------------------------------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を参照してください。
+--------------------------------IBM 拡張の終り-------------------------------+
ステートメント関数定義の仮引き数は、変数名として分類されます。
指定名は、仮引き数リスト内に一度だけ入れることが可能です。
ステートメント関数のステートメントに仮引き数として指定される変数名の有効範囲は、指定されているステートメントの有効範囲と同じです。この変数名のタイプは、有効範囲単位内のステートメント関数を含む変数名である場合に持つタイプおよび型付きパラメーターと同じです。変数名は、アクセス可能な配列と同じ名前にはできません。