Fortran でのプロシージャのプロトタイピング

プロトタイプ (インターフェイス・ブロック) を Fortran ソースコードで定義することにより、Fortran コンパイラに対して、外部参照用にどの言語規則を使用するかを指示できます。インターフェイス・ブロックは、INTERFACE 文で宣言します。INTERFACE 文に関する詳細は、『Language Reference』(英語) の「Program Units and Procedures」を参照してください。

INTERFACE 文の一般的な形式を次に示します:

INTERFACE

routine statement

[routine ATTRIBUTE options]

[argument ATTRIBUTE options]

formal argument declarations

END routine name

END INTERFACE

routine statement では、値が返されるかどうかにより、FUNCTION または SUBROUTINE を定義します。 省略可能な routine ATTRIBUTE options (C など) は、プロトタイプ文に含まれるルーチンに対して、どの呼び出し規則、命名規則、および引数渡し規則を適用するかを決定します。省略可能な argument ATTRIBUTE options (VALUE や REFERENCE など) は、個々の引数に付加されるプロパティです。formal argument declarations は、Fortran データ型の宣言を指します。同じ INTERFACE ブロックで複数のプロシージャを指定できます。

例えば、次のプロトタイプを持つ C 関数を呼び出すとします:

  extern void My_Proc (int i);

Fortran からこの関数を呼び出すには、次の INTERFACE ブロックを宣言する必要があります:

  INTERFACE     SUBROUTINE my_Proc (I)      !DEC$ ATTRIBUTES C, ALIAS:'My_Proc_' :: my_Proc      INTEGER I     END SUBROUTINE my_Proc  END INTERFACE

ALIAS 文字列を除き、Fortran プログラムでは、My_Proc の大文字・小文字が区別されないのでご注意ください。