结合F77和F95 fortran代码

时间:2014-02-26 17:24:29

标签: fortran gfortran

我正在研究一些主要是F77但也有一些F95的科学代码。在某些地方,我需要在我的F95代码中包含F77代码。有没有办法通过使用特定的编译器标志或其他东西让我的代码在我的代码中很好地播放?我正在使用gfortran,偶尔使用ifort。我可以修改遗留代码,但我需要以合理的方式保持与其他F77代码的向后兼容性,同时还要向前兼容F95代码。

我收到的错误如下:

cstruc:16.12:
    Included at mod_op.f90:6:

      REAL*8
            1
Error: Invalid character in name at (1)
cstruc:17.6:
    Included at mod_op.f90:6:

     &       RH, RH1,      ! ln rho
      1
Error: Invalid character in name at (1)
cstruc:18.6:
    Included at mod_op.f90:6:

     &       RHP, RHP1,    ! d ln rho / d ln p
      1
Error: Invalid character in name at (1)
cstruc:19.6:
    Included at mod_op.f90:6:

     &       RHT, RHT1,    ! d ln rho / d ln T
      1
Error: Invalid character in name at (1)

cstruc看起来像这样:

  REAL*8
 &       RH, RH1,      ! ln rho
 &       RHP, RHP1,    ! d ln rho / d ln p
 &       RHT, RHT1,    ! d ln rho / d ln T
 &       PSI,          ! ln Lambda (for degenerate gas)
 &       RHPSI,        ! d ln rho / d PSI
 &       RHPSIP,       ! d2 ln rho / d PSI d ln P
 &       RHPSIT,       ! d2 ln rho / d PSI d ln T
 &       PL,           ! P at J1
 &       TONI          ! T at J1

非常感谢任何帮助。谢谢!

2 个答案:

答案 0 :(得分:4)

除了一些例外,Fortran 77代码是Fortran 95代码。我猜您的错误来自于您尝试将include固定格式的源代码(在cstruc中的F77代码)转换为自由格式的源代码文件mod_op.f90。这不太可能结束。

大多数编译器都会认为以“.f90”结尾的文件是自由格式的,所以如果你真的使用固定格式,那么你需要一个编译器标志来覆盖这个假设。

可以将自由格式和固定格式代码组合成最终对象(每个都单独编译),但是如何解决您遇到的问题的一个很好的建议只能提供更多细节。

但是,如果您尝试使用include创建模块来替换公共块,则没有理由不能使用固定格式的F95功能。只是有选择地做到这一点。

答案 1 :(得分:4)

我建议您尝试http://fortranwiki.org/fortran/show/Continuation+lines

中的“十字路口”表格

自由和固定来源形式都是合法的。