gpt4 book ai didi

compiler-errors - 更改续行限制的 Fortran 77 选项出现问题

转载 作者:行者123 更新时间:2023-12-02 11:06:52 28 4
gpt4 key购买 nike

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

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

) 对某些文件更为严格。具体来说,它不喜欢多个文件中的连续行数。

More than 99 continuation lines in fixed source form is not allowed.



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

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

在我的研究中,我想我找到了一个解决方案,尽管我在实现它时遇到了麻烦。来自甲骨文:

Continuation Lines The default maximum number of continuation lines is 99 @ (1 initial and 99 continuation). To change this number of lines, use the -Nln option. @ https://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vn6l/index.html



如果文本没有正确复制,我深表歉意。我在想的是,如果我在 makefile 中使用“-N1”选项,它应该让我指定多行。到目前为止,我还没有成功;我可能使用不正确。
f77 -N1 100 $(other flags...)

不是编译器吗?根据 Oracle 的建议,我添加了“-N1 100”位,尝试了不同的数字,但无论何时我尝试,它仍然说 99 续行是限制。我想我错过了一些东西。我的猜测是我对我传入的选项完全错误。

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

最佳答案

这不是答案,但评论太长了。说你有类似的东西

 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)

公共(public) block 归结为两个声明。您可以根据需要拥有尽可能多的参数和等价语句,并且不必将它们全部塞在一条有很多延续的行上。程序的其余部分不需要更改。

关于compiler-errors - 更改续行限制的 Fortran 77 选项出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45469629/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com