Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何识别fortran标准&x27;77和"x27 ;;90或';95?_Fortran - Fatal编程技术网

如何识别fortran标准&x27;77和"x27 ;;90或';95?

如何识别fortran标准&x27;77和"x27 ;;90或';95?,fortran,Fortran,我有一段fortran代码,我不确定它是哪一种标准——“77”、“90”还是“95”。是否有一个标准工具来识别它所遵循的标准?如果您可以访问(gfortran),您可以尝试使用--std的不同选项来编译它,并查看哪个选项有效。您可以找到方言选项的详细信息。可能有自动工具,但我的方法主要是启发式的: 注释是否使用行中的任意位置(F90+)或第一列(F77)中的aC 循环是否使用Do。end Do(F90+)或Do。继续(F77) 是否在行的末尾(F90+)或第6列(f77)中使用和继续行 代码是

我有一段fortran代码,我不确定它是哪一种标准——“77”、“90”还是“95”。是否有一个标准工具来识别它所遵循的标准?

如果您可以访问(gfortran),您可以尝试使用
--std
的不同选项来编译它,并查看哪个选项有效。您可以找到方言选项的详细信息。

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

  • 注释是否使用
    行中的任意位置(F90+)或第一列(F77)中的a
    C
  • 循环是否使用
    Do
    end Do
    (F90+)或
    Do
    继续
    (F77)
  • 是否在行的末尾(F90+)或第6列(f77)中使用
    继续行
  • 代码是否使用
    模块
    类型
    结构(F90)
  • 如果代码使用数组,它是作为单个结构(F90)在数组上运行还是始终使用循环(F77)
  • 是否使用动态内存(使用
    可分配
    指针
    方法)(F90)

通常,这些足以区分F90和F77。Fortran 90和Fortran 77之间的差异远远大于Fortran 90和Fortran 95之间的差异,所以我通常就到此为止

我在fortran 2003和2008中添加了一些功能(这些功能我都想不起来了)

如果程序已参数化派生数据类型(fortran 2003) 如果数组构造函数使用方括号[]而不是(//)(fortran 2003) 如您所见,有使用coarray的规定(fortran 2008)

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


(如果有任何差异,请让我知道我将进行编辑)

有几个点区分固定源代码和自由源代码形式,而不是Fortran 77和Fortran 90。固定源代码格式(第一列中有C,第6列中有C,等等)即使对于Fortran 2008也是完全合法的。
-std=legacy
标志无法区分77和90。