Fortran与VB混合编程

吕洪波(作者网页)

1 概述

    在DOS时代,许多水利专业程序用Fortran语言编制,随着WINdows时代的来临,面向对象的编程语言如VB、VC等已成为主流,尤其是VB以其简单实用成为许多水利工作者首选工具,而以前大量Fortran程序重新编写,困难重重,充分利用前人程序资源,较好的解决办法是Fortran 与VB混合编程。

2 操作平台

    Fortran PowerStation 4.0,VB6.0(也可以是Visual Fortran,但本人手头没有,其接口约定不同,但类似)

3 主要方法

(1) 利用动态链接库,实现多语言混合编程。

(2) VB直接调用Fortran执行文件。

4 方法说明

4.1利用动态链接库方法

    (1)在Fortran PowerStation 4.0下,编制可供VB调用的.dll文件,示例代码:

subroutine forcx(a,b,c)

!ms$if .not. defined(linkdirect)

!ms$attributes dllexport :: HWJSVB

!ms$endif

integer a,b,c

a=b+c

end

    (2) 在VB下编写如下代码:

Private Declare Sub forcx B Lib "dll.dll" Alias "_ FORCX @12" (ByRef a As integer, ByRef b As integer, ByRef c As integer)

Sub callfor()

Dim a as integer, b as integer ,c as integer

B=1 : c=2

Call forcx(a,b,c)

End

    Alias 的具体格式:“_函数名(全部大写)@字节数”,其中函数名是.dll中函数名,特别注意须全部大写,字节数指函数中的变量的字节总和,整形为4字节,共12字节。

4.2 直接调用执行文件法

    这是一种最简单明了的办法,很使用,不必修改原程序,接口可通过读取数据文件方法处理,VB中直接调用shell函数即可。

    Shell(pathname[,windowstyle])

    Shell 函数的语法含有下面这些命名参数:

部分

描述

pathname

必要参数。Variant (String),要执行的程序名,以及任何必需的参数命令行变量,可能还包括目录或文件夹,以及驱动器。

Windowstyle

可选参数。Variant (Integer),表示在程序运行时窗口的样式。如果 windowstyle 省略,则程序是以具有焦点的最小化窗口来执行的。

 

        windowstyle 命名参数有以下这些值:

常量

描述

vbHide

0

窗口被隐藏,且焦点会移到隐式窗口。

VbNormalFocus

1

窗口具有焦点,且会还原到它原来的大小和位置。

VbMinimizedFocus

2

窗口会以一个具有焦点的图标来显示。

VbMaximizedFocus

3

窗口是一个具有焦点的最大化窗口。

VbNormalNoFocus

4

窗口会被还原到最近使用的大小和位置,而当前活动的窗口仍然保持活动。

VbMinimizedNoFocus

6

窗口会以一个图标来显示。而当前活动的的窗口仍然保持活动。

 

    例如:call shell(“c:\windows\notpad.exe”,1)

 

    后记:因时间仓促,以上仅给出基本方法说明,希望能给大家提供一种思路,如有不当之处希望同仁指出,谢谢。

 

2001.2.26                      

(转载请注明出处)