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

プロトタイプ (インターフェイス・ブロック) を Fortran ソースコードで定義することにより、Fortran コンパイラーに対して、外部参照用にどの言語規則を使用するかを指示できます。インターフェイス・ブロックは、INTERFACE 文で宣言します。INTERFACE 文に関する詳細は、「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 および STDCALL (Windows* の場合) など) は、プロトタイプ文に含まれるルーチンに対して、どの呼び出し規則、命名規則、および引数渡し規則を適用するかを決定します。省略可能な 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, DECORATE, ALIAS:'My_Proc' :: my_Proc
     INTEGER I
    END SUBROUTINE my_Proc
  END INTERFACE

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