Fortran中此语句的含义

时间:2014-04-09 19:10:43

标签: fortran physics fortran77 fortran95

我正在考虑来自思考实验室的修补分子动力学包中的一些代码: http://dasher.wustl.edu/tinker/

我在其中一个文件alchemy.f中看到了这句话:

    program alchemy
     ...
     ...
     some statements here and there
     ...
     ...
     integer ixyz
     integer freeunit
     ...

然后才有这个令人费解的声明

    ixyz = freeunit ()

   ...

由于两个变量都是整数I类型的标量,因此不确定括号的含义。

谢谢,

2 个答案:

答案 0 :(得分:3)

声明

integer freeunit

可能,特别是在旧代码中,不是声明标量整数变量而是声明返回整数的函数。通常情况下,函数将在另一个编译单元中定义,并且它在程序中的声明为链接器提供了足够的工作。

如果是这种情况,那么

ixyz = freeunit ()

将被解释为对没有参数的函数的调用。

搜索包含

的行的源文件
integer function freeunit 

请注意,我在这里做了有根据的猜测,我从不跟踪SO的安全性。我会更进一步,猜测函数freeunit会返回一个尚未使用的i / o单元号。

答案 1 :(得分:0)

其他用户已经提供了更完整的答案。在您的问题中,括号表示一个函数。特别是整数类型。外部函数声明函数的类型和名称,以及列出参数。

 type FUNCTION fname(arg11, arg2, …, argn)

函数类型的数据类型指定外部函数返回的值的数据类型。如果省略,则返回的数据类型由符号名称fname的第一个字母确定。

在你的代码中,freeunit()是一个整数函数,它返回一个整数值。整数ixyz表示变量已声明为整数类型。

声明

    ixyz=freeunit ()

表示freeunit()返回的整数值分配给ixyz。