2008-12-24 95 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功能。

(如果任何差異讓我知道我會編輯)