2008-12-24 62 views

回答

23

有可能是自动化的工具,但我的方法基本上是启发式:

  • 做注释使用的第一列(F77)一!就行了(F90 +)的任何地方或一个C
  • Do循环使用do .. end do(F90 +)或do .. continue(F77)?
  • 在行尾(F90 +)或第6列(f77)末尾是否继续使用&
  • 代码是否使用moduletype结构(F90)?
  • 如果代码使用数组,它是作为单个结构(F90)还是总是使用循环(F77)?
  • 是否使用动态内存(使用allocatablepointer方法)(F90)?

通常这些足以区分F90和F77。 Fortran 90与FORTRAN 77之间的差异比Fortran 90与Fortran 95之间的差异大得多,所以我通常停在那里。

+0

几个点的区分的固定和自由形式,而不是的Fortran 77从的Fortran 90固定源形式(与在第一列C,&在第6列等),即使在Fortran 2008中也是完全合法的。 – 2017-02-16 13:06:08

2

如果您有权访问GNU Fortran(gfortran),您可以尝试使用--std的不同选项进行编译,并查看哪一个可以工作。你可以找到方言选项here的详细信息。

2

我加入的FORTRAN 2003和2008的功能(这只是回到我的头)

程序是否参数化衍生的数据类型(FORTRAN 2003) 如果数组构造函数使用方括号[] (fortran 2003.) 如果你看到,有提供使用cobrays(fortran 2008)

虽然许多编译器有特殊功能(如贝塞尔函数)作为扩展的一部分,但它是一个真正的fortran 2008功能。

(如果任何差异让我知道我会编辑)