【发布时间】:2017-11-27 02:02:30
【问题描述】:
当我尝试使用 Cygwin 编译名为“zone_b.f”的 Fortran 源文件以生成可执行程序时遇到一些错误。
Fortran 文件是从网上下载的。具体代码可以在here查看。
当我尝试使用以下命令进行编译时,会产生以下错误:
$ gfortran zone_b.f
zone_b.f:54:72:
call getzone(zone_start, zone_end, selection_on, line(3:76))
1
Error: Syntax error in SUBSTRING specification at (1)
zone_b.f:61:28:
& form='FORMATTED', carriagecontrol='LIST',
1
Error: Syntax error in OPEN statement at (1)
我怀疑这是因为 Fortran 文件是旧格式,但是当我尝试从 this website 下载的 g77 编译器时 我遇到了另一个问题:
C:\F\York>g77 zone_b.f -o zone_b.exe
zone_b.f: In program `zone_b':
zone_b.f:60:
open(5, status='OLD', file=line,
^
Unsupported OPEN control item at (^) -- ACTION=, ASSOCIATEVARIABLE=,
BLOCKSIZE=, BUFFERCOUNT=, CARRIAGECONTROL=, DEFAULTFILE=, DELIM=, DISPOSE=,
EXTENDSIZE=, INITIALSIZE=, KEY=, MAXREC=, NOSPANBLOCKS, ORGANIZATION=, PAD=,
POSITION=, READONLY=, RECORDTYPE=, SHARED=, and USEROPEN= are not supported
我该如何解决这些问题?
【问题讨论】:
-
当前 gfortran 支持旧的回车控制扩展,但会检查设置的有效性。
-
StackOverflow 上有非常相似的问题,但针对 OPEN 语句中的不同个别说明符。我们或许应该以某种方式统一它们。并使用 gfortran 中可能的新支持更新它们。
-
您认为我们应该对所有这些选项提出一个规范问题,并将其他问题标记为重复吗?
-
SUBSTRING 规范错误可能是行太长的结果。 (我查看了源代码,但实际上并没有计算列数..)
-
@agentp 这看起来很有可能,错误消息显示第 54 行第 72 列。
标签: compilation fortran cygwin