Fortran プロシージャーは、そのインターフェースが相互運用可能な場合に相互運用可能です。 Fortran プロシージャーのインターフェースは、BIND 属性を持つ場合に 相互運用可能です。 Fortran プロシージャーのインターフェースは、以下の場合に、C 関数プロトタイプと 相互運用可能です。
次に、Fortran プロシージャー・インターフェースの例を示します。
INTERFACE FUNCTION FUNC(I, J, K, L, M) BIND(C) USE, INTRINSIC :: ISO_C_BINDING INTEGER(C_SHORT) :: FUNC INTEGER(C_INT), VALUE :: I REAL(C_DOUBLE) :: J INTEGER(C_INT) :: K, L(10) TYPE(C_PTR), VALUE :: M END FUNCTION FUNC END INTERFACE
この例では、Fortran プロシージャー・インターフェースは C 関数プロトタイプと相互運用可能です。
short func(int i, double *j, int *k, int l[10], void *m);
C データ・ポインターは、C_PTR の型の Fortran 仮引き数、
または VALUE 属性を持たない Fortran スカラーに対応可能です。
例では、C ポインター j および
k は、それぞれ Fortran スカラー
J および K に対応します。
C ポインター m は、C_ PTR の型の
Fortran 仮引き数 M に対応します。