确定未在Fortran子例程顶部声明的变量类型

时间:2012-11-22 15:42:22

标签: c++ types fortran fortran77

我正在使用传统的Fortran 77代码子例程,其中参数类型未在代码块的顶部声明。

这是一个显示子程序顶部的片段。

   SUBROUTINE BPASS(F1,F2,F3,F4,SI,N,A,IERR)
   REAL * 4 A( N ),FV( 4 )

根据上述内容,我认为A是一个长度为N且数量为REAL *4的数组,其大小与C float相当。或者,FV(4)是一个长度为4的数组REAL *4的数组。

但是,如果未列出类型,F1,F2,F3,F4,SI,N,IERR的类型是什么? N似乎应该是integer

我需要知道类型,以便我可以从C ++代码调用子例程。对于未声明的类型是否存在Fortran约定?

2 个答案:

答案 0 :(得分:6)

默认情况下,Fortran会将类型integer分配给名称以字母I,J,K,L,M,N开头的变量,并将real类型分配给所有其他未声明的变量。

我同意您解析AFV的定义。

现代Fortran提供表达式implicit none以确保不应用默认规则,但在处理旧代码时,有时无法避免熟悉旧的黑暗方式。

答案 1 :(得分:4)

FORTRAN77中,默认情况下,以I,J,K,L,M或N开头的变量为INTEGER,否则为REALFORTRAN90以及FORTRAN77的某些变体提供了使用IMPLICIT NONE禁用此功能的机制。