我有一个包含大量子程序的旧代码,它们都在Fortran 77中,所以现在我想更新一个我需要根据Fortran 90/95代码更新的子程序,有没有办法转换它到77?
答案 0 :(得分:1)
某些编译器具有声明,使您可以在固定格式和自由格式的Fortran文件之间进行切换。
正如其他人所指出的,请使用最新的编译器,因为它们应向后兼容。文件采用自由格式的固定形式,并使用文件结尾.f
或.f90
分开。
如果绝对需要,在Intel中,如果需要控制每行或每节的文件读取,则伪指令为!DIR$ FREEFORM
和!DIR$ NOFREEFORM
。如果您“必须”使用以固定格式编写的旧包含文件,但又想在代码中使用自由格式的Fortran,则此功能很有用,那么您可以编写:
module important_new_code
<lots of use-statements>
!DIR$ NOFREEFORM
include 'old_style_includes.incl'
!DIR$ FREEFORM
<rest of module in modern fortran>
end module
但是,这使您的代码特定于编译器,通常不是一个好主意!最好的办法就是始终正确解决问题。
答案 1 :(得分:0)
我不完全确定你想做什么。但正如评论中指出的那样,你可以混合使用Fortran 90/95和Fortran 77(但当然不能在同一个文件中)。使用ifort,你可以,例如编写一个f90文件,其中包含名为file_1.f90的主程序和另一个f77文件,其中包含一些名为file_2.f77的主文件中调用的子程序。要一起编译它们:
ifort -c file_1.f90
ifort -c file_2.f77
ifort file_1.o file_2.o -o file_1
在前两行中创建目标文件(* .o),然后将其链接在一起创建目标文件(此处为file_1)。如果您需要更多库,可以在最后一行以常规方式链接它们。希望这会对你有所帮助。