INTERFACE

:外部または仮手続のための明示的インタフェースを定義します。これらはまた,手続の総称名,関数の新しい演算子,およびサブルーチンのための新しい代入書式を定義するためにも使用できます。

形式

INTERFACE [ generic-spec ]

[ interface-body ] ...
[ MODULE PROCEDURE name-list ] ...
END INTERFACE [ generic-spec ]

generic-spec
(省略可能) 以下のいずれか。

interface-body
1 つまたは複数の関数またはサブルーチン副プログラム。関数は END FUNCTION で,サブルーチンは END SUBROUTINE で終わらなくてはなりません。

副プログラムは,文関数や,DATAENTRY,または FORMAT 文を含んでいてはなりません。エントリ・ポイント名を手続名として使用することができます。

副プログラムは USE 文を含むことができます。

name-list
親プログラム内で参照可能な 1 つまたは複数のモジュール手続の名前。MODULE PROCEDURE 文は,インタフェース宣言が generic-spec を指定しており,モジュールである親プログラムを持っている (または参照結合によってモジュールを参照している) 場合にのみ使用できます。

モジュール手続の特性は,インタフェース宣言内で与えられるのではなく,モジュール副プログラム定義をもとに決定されます。

規則と振る舞い

インタフェース宣言は,外部または仮手続を呼び出すプログラム単位の宣言部に置くことができます。

generic-spec は,INTERFACE 文中にある場合に限って,END INTERFACE 文 (Fortran 95 の機能) にも置くことができます。この場合,両者は一致していなくてはなりません。

外部または仮手続に対して指定された特性は,手続の定義中で指定されたものと一貫性がなくてはなりません。

インタフェース宣言は,初期値設定プログラム単位中に置くことはできません。

インタフェース宣言は独自の有効域を持ち,その親プログラムから親子結合を通しての継承は行いません。

内部,モジュール,および組込み手続は,すべて明示的インタフェースを持つと考えられます。外部手続は,基本設定では暗黙的インタフェースを持ちます。それらにインタフェース宣言を指定すると,それらのインタフェースは明示的になります。手続は,与えられた有効域ないで複数の明示的インタフェースを持つことはできません。これは,それらに総称名を定義したいとしても,インタフェース宣言に内部,モジュール,または組込み手続を含めることができないことを意味しています。

generic-spec を含んでいるインタフェース宣言は,以下の手続のための総称インタフェースを指定します。

インタフェース宣言を (USE 文を通して) 複数のプログラム単位から使用できるようにするには,インタフェース宣言をモジュール中に置きます。

純粋手続を含んでいるインタフェース宣言には,以下の規則が適用されます。

互換性

CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB

関連情報

CALLFUNCTIONMODULEMODULE PROCEDUREPURESUBROUTINE参照結合と親子結合総称演算子の定義総称代入の定義手続インタフェース手続が明示的インタフェースを必要とするかどうかの判定手続の総称名の定義

次の例は,総称宣言を持たない単純手続インタフェース宣言を示しています。

	SUBROUTINE SUB_B (B, FB)
	  REAL B
	  ...
	  INTERFACE 
	    FUNCTION FB (GN)
	      REAL FB, GN
	    END FUNCTION 
	  END INTERFACE

以下に他の例を示します。

	! ヘッダを持つ外部サブルーチン SUB1 に対するインタフェース
	!SUBROUTINE SUB1(I1,I2,R1,R2)
	!INTEGER I1,I2
	!REAL R1,R2

	INTERFACE
	  SUBROUTINE SUB1(int1,int2,real1,real2)
	    INTEGER int1,int2
	    REAL real1,real2
	  END SUBROUTINE SUB1
	END INTERFACE

	INTEGER int
	. . .