15

我有一段 fortran 代码,但我不确定它是哪个标准 - '77、'90 或 '95。是否有一个标准工具来识别它所遵循的标准?

4

3 回答 3

27

可能有自动化工具,但我的方法主要是启发式的:

  • 注释!是在行中的任意位置(F90+)还是C在第一列(F77)中使用a?
  • 循环使用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 之间的差异要大得多,所以我通常停在那里。

于 2008-12-24T18:07:40.980 回答
3

如果您可以访问GNU Fortran (gfortran),您可以尝试使用不同的选项对其进行编译,--std然后查看哪个有效。您可以在此处找到有关方言选项的详细信息。

于 2008-12-24T17:52:00.873 回答
3

我正在 fortran 2003 和 2008 中添加功能(这只是我的想法)

如果程序具有参数化派生数据类型(fortran 2003。)如果数组构造函数使用方括号 [] 而不是 (/ /) (fortran 2003.) 如果您看到,则提供使用 coarrays (fortran 2008)

尽管许多编译器具有特殊功能(如 Bessel 函数)作为扩展的一部分,但它是 fortran 2008 的真正功能。

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

于 2011-10-04T00:57:24.460 回答