文:外部または仮手続のための明示的インタフェースを定義します。これらはまた,手続の総称名,関数の新しい演算子,およびサブルーチンのための新しい代入書式を定義するためにも使用できます。
形式
INTERFACE [ generic-spec ]
generic-spec
(省略可能) 以下のいずれか。
総称名の詳細は,「プログラム単位と手続」を参照してください。
総称演算子 (op) を定義します。ユーザー定義単項演算子,ユーザー定義 2 項演算子,または拡張組込み演算子を宣言することができます。ユーザー定義演算子の詳細は,「プログラム単位と手続」を参照してください。
総称代入を定義します。ユーザー定義代入の詳細は,「Assignment (代入) - 組込み」を参照してください。
interface-body
1 つまたは複数の関数またはサブルーチン副プログラム。関数は END FUNCTION で,サブルーチンは END SUBROUTINE で終わらなくてはなりません。
副プログラムは,文関数や,DATA,ENTRY,または FORMAT 文を含んでいてはなりません。エントリ・ポイント名を手続名として使用することができます。
副プログラムは USE 文を含むことができます。
name-list
親プログラム内で参照可能な 1 つまたは複数のモジュール手続の名前。MODULE PROCEDURE 文は,インタフェース宣言が generic-spec を指定しており,モジュールである親プログラムを持っている (または参照結合によってモジュールを参照している) 場合にのみ使用できます。
モジュール手続の特性は,インタフェース宣言内で与えられるのではなく,モジュール副プログラム定義をもとに決定されます。
規則と振る舞い
インタフェース宣言は,外部または仮手続を呼び出すプログラム単位の宣言部に置くことができます。
generic-spec は,INTERFACE 文中にある場合に限って,END INTERFACE 文 (Fortran 95 の機能) にも置くことができます。この場合,両者は一致していなくてはなりません。
外部または仮手続に対して指定された特性は,手続の定義中で指定されたものと一貫性がなくてはなりません。
インタフェース宣言は,初期値設定プログラム単位中に置くことはできません。
インタフェース宣言は独自の有効域を持ち,その親プログラムから親子結合を通しての継承は行いません。
内部,モジュール,および組込み手続は,すべて明示的インタフェースを持つと考えられます。外部手続は,基本設定では暗黙的インタフェースを持ちます。それらにインタフェース宣言を指定すると,それらのインタフェースは明示的になります。手続は,与えられた有効域ないで複数の明示的インタフェースを持つことはできません。これは,それらに総称名を定義したいとしても,インタフェース宣言に内部,モジュール,または組込み手続を含めることができないことを意味しています。
generic-spec を含んでいるインタフェース宣言は,以下の手続のための総称インタフェースを指定します。
すべての総称名,ユーザー定義演算子,または等号記号が,そのインタフェース宣言中のすべての手続のための総称識別子となります。同じ総称識別子を持つ 2 つの手続がどのように異なっていなくてはならないかという規則については,「総称手続の一義的な引用」を参照してください。
モジュール手続は USE 文によって参照可能でなくてはなりません。
インタフェース宣言を (USE 文を通して) 複数のプログラム単位から使用できるようにするには,インタフェース宣言をモジュール中に置きます。
純粋手続を含んでいるインタフェース宣言には,以下の規則が適用されます。
純粋手続のインタフェース宣言は,ポインタおよび手続引数を除くすべての仮引数の INTENT を宣言しなくてはなりません。
その定義で純粋として宣言されている手続は,インタフェース宣言中でも純粋として宣言することができます。ただし,定義中で純粋として宣言されていない場合,インタフェース宣言中でも純粋として宣言してはなりません。
互換性
CONSOLE STANDARD GRAPHICS QUICKWIN GRAPHICS WINDOWS DLL LIB
関連情報
CALL,FUNCTION,MODULE,MODULE PROCEDURE,PURE,SUBROUTINE,参照結合と親子結合,総称演算子の定義,総称代入の定義,手続インタフェース,手続が明示的インタフェースを必要とするかどうかの判定,手続の総称名の定義
例
次の例は,総称宣言を持たない単純手続インタフェース宣言を示しています。
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 . . .