Visual Basic のフォームで Fortran のサブルーチンと関数を設定すると,Fortran ルーチンが Basic モジュールから呼び出されます。Fortran ルーチンを Basic から呼び出すには,ルーチンが DLL (ダイナミック・リンク・ライブラリー) になっていなくてはなりません。DLL についての詳細は,「Fortran Dynamic-Link Library プロジェクト」と「Fortran DLL の作成」を参照してください。
呼び出し規約の ALIAS コンパイラ指示文 (または ATTRIBUTES オプションの ALIAS) は,名前に含まれる大文字と小文字を保存しなければならない場合に必要です (基本設定では,Fortran は名前をすべて大文字に変換します)。ただし,2 つの特殊なケースでは,これとは違う扱いをする必要があります。
可変個の引数が渡される場合,C 呼び出し規約と名付け規約を使用するために,Fortran 手続定義では C および VARYING オプション,Basic の DECLARE 文では CDECL キーワードが必要です。
文字引数を渡すとき,たとえば,ATTRIBUTES オプションの STDCALL を使うことによって,Fortran ルーチンは文字引数の隠された文字長を渡してはなりません。STDCALL は Fortran の名前を小文字に変換するので,Fortran 副プログラムを Visual Basic プログラムから参照するときには,小文字で参照する必要があります。
次の Fortran と Visual Basic の文は,Basic から呼び出される Fortran 関数を設定しています。
Fortran コード:
! Fortran 関数を定義する Fortran 副プログラム INTERFACE DOUBLE PRECISION FUNCTION GetFVal (r1) !DEC$ ATTRIBUTES ALIAS:'GetFVal' :: GetFVal !DEC$ ATTRIBUTES VALUE :: r1 REAL r1 END FUNCTION END INTERFACE
Basic コード:
'FORM.FRM Basic Form to establish Fortran function Declare Function GetFVal Lib "C:\f90\FVAL.DLL" (ByVal r1 As Single) As Double