Visual Fortran と Visual Basic プログラミングの例

次の短いコードは,Fortran のサブルーチンと関数のためのインタフェースを示しています (Fortran 自由形式ソース)。

  1. ビジュアル開発環境で,Fortran Dynamic-Link Library タイプの新しいプロジェクトを作成します。プロジェクトに FCALL という名前を付けます。

  2. プロジェクト内で,次のコードを含む FCALL.F90 という名前の新しい自由形式ソース・ファイルを作成します (「Project」メニューの「Add to Project」から「New」を選択)。

    	! Fortran コード:サブルーチンを定義
    	! r1 と 256.0 の MOD を計算し,
    	! 引数 NUM に結果を保存します。
    
    	SUBROUTINE FortranCall (r1, num)
    	  ! DLL を呼び出す側で利用可能になるようにルーチン名を指定します。
    	  ! 接頭辞,接尾辞を持たない外部名を指定します。
    	  !DEC$ ATTRIBUTES DLLEXPORT :: FortranCall
    	  !DEC$ ATTRIBUTES ALIAS:'FortranCall' :: FortranCall
    	  REAL,INTENT(IN) :: r1	! 入力引数
    	  REAL,INTENT(OUT) :: num
    	  num = MOD (r1, 256.0)
    	END SUBROUTINE
    
  3. ダイナミック・リンク・ライブラリーのビルドと使用」の説明に従い,Fortran DLL をビルドします。

  4. Visual Basic を起動し,新しい「標準 EXE」プロジェクトを作成します。

  5. フォーム上の「Command」ボタンをダブルクリックします。コード・ウィンドウが表示されます。次のコードを入力します。

    	Private Sub Command1_Click()
    	  r1 = 456.78
    	  Call FortranCall(r1, Num)
    	  Text1.Text = Str$(Num)
    	End Sub
    
  6. 「プロジェクト」メニューの「標準モジュールの追加」を選択し,「開く」をクリックして新しいモジュールを作成します。モジュールに次のコードを追加します。

    	Declare Sub FortranCall Lib"c:\MyProjects\Fcall\Debug\Fcall.dll"
    				(r1 As Single, Num As Single)
    

    ファイル名は,Fortran DLL の場所に置き換えます (場所が異なる場合)。

  7. F5 キーを押して,Basic プログラムを実行します。「Do it!」ボタンをクリックします。Fortran ルーチンが呼び出され,比率が計算されて,結果が Basic コードに返されます。その後,Basic コードは結果を文字列に変換して,テキストボックスに表示します。

Visual Basic は,Fortran と同様に,(整数や実数などの) 数値を参照で渡すので,どちらの側でも引数渡しの機構を変更する必要はありません。ALIAS 属性が必要なのは,Visual Basic が,STDCALL 呼び出し機構を使用していても,ルーチン名を @n の接尾辞で修飾しないからです。その Fortran ルーチンが他の Fortran コードからも呼び出される場合,Basic の側で Alias オプションを使って,正しい接尾辞が付いた名前を指定する方がいいでしょう。