我有一个有很多子例程的旧代码,它们都是用Fortran 77编写的,所以现在我想更新一个需要根据Fortran 90/95代码更新的子例程,有什么方法可以将它转换为77吗?
发布于 2020-03-17 19:17:02
有些编译器的声明允许您在固定格式和自由格式的Fortran文件之间切换。
正如其他人所指出的,尽可能使用最新的编译器,因为它们应该是向后兼容的。文件可以是固定形式的自由格式,并使用文件结尾.f或.f90来分隔它们。
如果您确实需要,在英特尔中,如果您需要控制每行或每节文件的读取,则指令为!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然而,这使得您的代码特定于编译器,通常不是一个好主意!最好的办法就是正确地解决你的问题。
发布于 2013-10-24 19:57:16
我不太确定你想做什么。但正如注释中指出的,您可以混合使用Fortran 90/95和Fortran 77 (但当然不是在同一个文件中)。例如,使用ifort,您可以编写一个f90文件,其中包含名为file_1.f90的主程序,以及另一个包含名为file_2.f77的主文件中调用的一些子例程的f77文件。要将它们编译在一起:
ifort -c file_1.f90
ifort -c file_2.f77
ifort file_1.o file_2.o -o file_1在前两行中,您创建了对象文件(*.o),然后将它们链接在一起,创建了一个目标文件(这里是file_1)。如果你需要更多的库,你可以在最后一行中以通常的方式链接它们。希望这对你有帮助。
https://stackoverflow.com/questions/19563535
复制相似问题