4

我收到了一个咨询任务,我将把 Fortran IV 程序更新到 Fortran 77。问题是我从来没有用 Fortran 编码。你能给我一些关于我可以在哪里学习 Fortran 以及 Fortran IV 和 77 之间有什么区别的提示吗?

编辑

要更新的程序在MODCOMP 9250上运行(请参见此处的图片) 该程序是在原始编译器上开发的。编译器在 1990 年左右更新到 Fortran 77。我的客户想要对应用程序进行一些修改,并希望借此机会将代码更新到最新的编译器

4

4 回答 4

6

这似乎是一个非常奇怪的任务……是为了教导编程语言在过去几十年中得到了改进吗?如果是这样,为什么不翻译成现代语言,比如 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
于 2011-02-07T16:18:03.950 回答
4

检查两者之间差异的最佳位置是 fortran 标准草案(最新草案实际上与已发布的标准相同;只是它们可以免费下载)。

例如,f77 标准

然而问题是,在 fIV 标准并没有如此遵循,几乎所有(我什至可以肯定地说全部)编译器都包含各种供应商扩展,其中一些肯定也可以在您的程序中找到。因此,如果您也有编译器手册,请携带一本。

“更新到 f77”的过程(天哪,我从没想过我会这么说 - “更新到 f77”)对你来说,最好以某种方式进行。
a) 在某处学习 fortran 简短教程(其中很多在互联网上);只是为了看看 fortran 是什么样子
b) 一旦你开始识别程序元素和结构,你就可以开始翻译它。可能你要翻译很多 TYPE (depends) 为 WRITE 或 PRINT,修改一些 IF 语句,修改一些文件输入/输出操作,你可能还会遇到一些 COMMON,你可以或多或少问题,...无论如何,请尝试,当遇到困难时,请在此处发布。

你的任务有多大?

ps 正如我在上面的一些评论中所说,您正在翻译的程序很可能不是真正的 fIV,而是 fIV、f66/77 甚至 f90 的某些元素的混合体——但您的教授/分配任务的人不是意识到差异。除非您只是从旧数据磁带上复制它。我以前经常看到这样的例子。

于 2011-02-07T20:08:03.020 回答
3

大多数 Fortran IV 都是有效的 Fortran 77。如果你能找到一个安装了 g77(旧的 GNU Fortran 77 编译器)的平台,打开standards-compliance-mode,并在没有警告或错误的情况下编译,你就完成了。如果教授说这还不够,他需要更具体地说明他想要什么。

我不知道是否有任何 Fortran 95 编译器具有让您检查 Fortran 77 合规性的选项。

于 2011-02-07T21:37:40.057 回答
1

谷歌搜索“fortran 77 教程”引发了很多点击,看起来像是对 Fortran 77 程序的结构和语法的合理介绍(我不能从个人经验中推荐任何东西,因为我在大学时学到了它) -对我来说,热门歌曲看起来和任何介绍一样好:

http://www-teaching.physics.ox.ac.uk/Unix+Prog/hargrove/tutorial_77/

您可能还需要查看您将使用的编译器的具体细节(gfortran 似乎是 Linux 的标准编译器),如果只是为了找出正确的命令行如何编译您的代码。

如果您来自更现代语言的背景,那么要了解的关键点是:

  • 标准 Fortran 77 不是自由格式语言
  • 它是程序性的,不支持面向对象(尽管这在该语言的后续版本中可用)

然而,它确实支持通常的基本编程结构,即 if/else、循环等。

希望这有帮助,祝你好运!

于 2011-02-07T11:20:14.663 回答