使用Fortran 77选项更改延续行限制

时间:2017-08-02 19:41:49

标签: compiler-errors fortran options fortran77

我正在尝试在新机器上编译旧代码的项目。作为背景,代码在32位Linux机器上编译,公司希望它在64位机器上运行。看来我们正在使用的编译器(Absoft f77:

f77 -v
Absoft 64-bit Pro Fortran 11.5.3
ERROR: No input files.

)对某些文件更严格。具体来说,它不像几个文件中的延续行数。

  

不允许使用固定来源形式的99条延续线。

该公司通过繁琐地改变文件格式来解决这个问题,试图适应99行限制。我的整体职责部分是让程序在新机器上运行。我可以尝试压缩许多问题文件,但很多人都对这种方法感到恼火,因为即使它起作用,但由于其他原因(组织不同的变量组,名称,比较)会变得不方便文件的版本等。)

我是公司的新人,也是Fortran的新手。我已经研究过很多关于它的内容,但我仍然缺少一些关键概念。

在我的研究中,我认为我找到了一个解决方案,尽管我在实施它时遇到了麻烦。来自oracle:

  

延续线默认最大延续线数为99 @(1个初始线和99个续线)。要更改此行数,请使用-Nln选项。 @   https://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vn6l/index.html

如果文字没有正确复制,我道歉。我想的是,如果我使用' -N1'我的makefile中的选项,应该让我指定一些行。到目前为止,我还没有成功;我可能错误地使用它。

f77 -N1 100 $(other flags...)

不是编译器吗?根据Oracle的建议,我添加了' -N1 100'比特,尝试不同的数字,但任何时候我尝试它,它仍然说99连续线是限制。我想我错过了什么。我的猜测是我对传入的选项完全错了。

更新: 根据评论,我认为该选项是' -Nlxx',但该选项仍然无效。我想我在参考指南中发现了99行限制是严格的,尽管其他Absoft f77手册说它可以处理无限行。 :(

1 个答案:

答案 0 :(得分:-1)

这不是一个答案,但是太长时间也没有发表评论。假设您有类似

的内容
 parameter (nmax=20)
 integer mint, ifan
 double precision dat, datasp, oat, zrvs
 common /ahu/dat(nmax), datsp(nmax), oat(nmax), zrvs(nmax),
&            mint(nmax), ifan 

这可以改为

parameter (nmax=20)
parameter (ixfan = 1, ixmint = 2)
double precision shared
integer mint, ifan
double precision dat(nmax), datasp(nmax), oat(nmax), zrvs(nmax)
common /ahu/ shared(nmax * 4), ishared(nmax + 1)
equivalence (shared(1), dat), (shared(nmax+1), datasp)
equivalence (shared(nmax*2+1), oat), (shared(nmax*3+1, zrvs)
equivalence (ishared(ixfan), ifan), (ishared(ixmint), mint)

公共区块有两个声明。您可以根据需要使用尽可能多的参数和等价语句,并且它们不必都在一行中被卡住,并且有很多延续。程序的其余部分不需要更改。