我收到了一个咨询任务,我将把 Fortran IV 程序更新到 Fortran 77。问题是我从来没有用 Fortran 编码。你能给我一些关于我可以在哪里学习 Fortran 以及 Fortran IV 和 77 之间有什么区别的提示吗?
编辑
要更新的程序在MODCOMP 9250上运行(请参见此处的图片) 该程序是在原始编译器上开发的。编译器在 1990 年左右更新到 Fortran 77。我的客户想要对应用程序进行一些修改,并希望借此机会将代码更新到最新的编译器
我收到了一个咨询任务,我将把 Fortran IV 程序更新到 Fortran 77。问题是我从来没有用 Fortran 编码。你能给我一些关于我可以在哪里学习 Fortran 以及 Fortran IV 和 77 之间有什么区别的提示吗?
编辑
要更新的程序在MODCOMP 9250上运行(请参见此处的图片) 该程序是在原始编译器上开发的。编译器在 1990 年左右更新到 Fortran 77。我的客户想要对应用程序进行一些修改,并希望借此机会将代码更新到最新的编译器
这似乎是一个非常奇怪的任务……是为了教导编程语言在过去几十年中得到了改进吗?如果是这样,为什么不翻译成现代语言,比如 Fortran 95?
虽然我偶尔会遇到遗留的 FORTRAN 77 代码,但自从我使用真正的 FORTRAN IV 以来已经很长时间了——很难记住其中的差异。我认为最大的是改进了 IF 语句,这使得编写更清晰的代码变得更加容易。更改列表显示在http://en.wikipedia.org/wiki/Fortran
如果您使用 gfortran,则以下选项应编译 FORTRAN 77 程序:
gfortran -ffixed-form -ffixed-line-length-none -W -Wall -pedantic -o my_prog.exe my_prog.for
检查两者之间差异的最佳位置是 fortran 标准草案(最新草案实际上与已发布的标准相同;只是它们可以免费下载)。
例如,f77 标准。
然而问题是,在 fIV 标准并没有如此遵循,几乎所有(我什至可以肯定地说全部)编译器都包含各种供应商扩展,其中一些肯定也可以在您的程序中找到。因此,如果您也有编译器手册,请携带一本。
“更新到 f77”的过程(天哪,我从没想过我会这么说 - “更新到 f77”)对你来说,最好以某种方式进行。
a) 在某处学习 fortran 简短教程(其中很多在互联网上);只是为了看看 fortran 是什么样子
b) 一旦你开始识别程序元素和结构,你就可以开始翻译它。可能你要翻译很多 TYPE (depends) 为 WRITE 或 PRINT,修改一些 IF 语句,修改一些文件输入/输出操作,你可能还会遇到一些 COMMON,你可以或多或少问题,...无论如何,请尝试,当遇到困难时,请在此处发布。
你的任务有多大?
ps 正如我在上面的一些评论中所说,您正在翻译的程序很可能不是真正的 fIV,而是 fIV、f66/77 甚至 f90 的某些元素的混合体——但您的教授/分配任务的人不是意识到差异。除非您只是从旧数据磁带上复制它。我以前经常看到这样的例子。
大多数 Fortran IV 都是有效的 Fortran 77。如果你能找到一个安装了 g77(旧的 GNU Fortran 77 编译器)的平台,打开standards-compliance-mode,并在没有警告或错误的情况下编译,你就完成了。如果教授说这还不够,他需要更具体地说明他想要什么。
我不知道是否有任何 Fortran 95 编译器具有让您检查 Fortran 77 合规性的选项。
谷歌搜索“fortran 77 教程”引发了很多点击,看起来像是对 Fortran 77 程序的结构和语法的合理介绍(我不能从个人经验中推荐任何东西,因为我在大学时学到了它) -对我来说,热门歌曲看起来和任何介绍一样好:
http://www-teaching.physics.ox.ac.uk/Unix+Prog/hargrove/tutorial_77/
您可能还需要查看您将使用的编译器的具体细节(gfortran 似乎是 Linux 的标准编译器),如果只是为了找出正确的命令行如何编译您的代码。
如果您来自更现代语言的背景,那么要了解的关键点是:
然而,它确实支持通常的基本编程结构,即 if/else、循环等。
希望这有帮助,祝你好运!