すべての手続は,手続の名前と特性,個々の仮引数の名前と特性,および手続引用に使用できる総称識別子 (存在する場合) から構成されるインタフェースを持っています。手続の特性は固定されていますが,インタフェースの他の部分は有効域によって変わることができます。
これらすべてのプロパティが呼び出し側プログラムの有効範囲内で既知である場合,その手続インタフェースは明示的です。そうでなければ,手続インタフェースは暗黙的です (その引用と宣言から導き出されます)。次表は,手続の種類ごとに,そのインタフェースが暗黙的/明示的のどちらなのかを示しています。
手続の種類 | インタフェース |
---|---|
外部手続 | 暗黙的 1 |
モジュール手続 | 明示的 |
内部手続 | 明示的 |
組込み手続 | 明示的 |
仮手続 | 暗黙的 1 |
文関数 | 暗黙的 |
1 手続に対してインタフェース宣言が用意されていない場合 |
再帰的なサブルーチンまたは関数のインタフェースは,それを定義する副プログラム中で明示的です。
明示的インタフェースは,手続の定義中,インタフェース宣言中,またはこの両方に置くことができます (内部手続はインタフェース宣言中に置くことはできません)。
ここでは,以下について説明します。
例
インタフェース宣言の例を示します。
INTERFACE SUBROUTINE Ext1 (x, y, z) REAL, DIMENSION (100,100) :: x, y, z END SUBROUTINE Ext1 SUBROUTINE Ext2 (x, z) REAL x COMPLEX (KIND = 2) z (2000) END SUBROUTINE Ext2 FUNCTION Ext3 (p, q) LOGICAL Ext3 INTEGER p (1000) LOGICAL q (1000) END FUNCTION Ext3 END INTERFACE