gpt4 book ai didi

fortran - 带有 STATUS ='NEW' 的 OPEN 的默认行为

转载 作者:行者123 更新时间:2023-12-04 16:19:28 24 4
gpt4 key购买 nike

我正在使用 gfortran 编译一个程序(我没有编写)。 make 文件指定 f77 作为编译器,但我没有。

我遇到了与 OPEN 命令相关的错误。

Error: The STATUS specified in OPEN statement at (1) is 'NEW' and no FILE specifier is present

我查看了 Fortran 77 OPEN,根据 Oracle 语言引用,当未指定 'FILE=name' 时存在默认行为。

http://docs.oracle.com/cd/E19957-01/805-4939/6j4m0vnaf/index.html

'NEW' -- 文件不存在(存在是一个错误)。如果未指定 'FILE=name',则打开名为 'fort.n' 的文件,其中 n 是指定的逻辑单元。

有没有办法强制编译器使用语言指定的默认行为。或者,我可以修改代码以执行预期的默认行为吗?

最佳答案

您引用的文档不是语言规范,而是对一个特定编译器的描述。关于文件 fort.n 的行为是特定于编译器的。实际标准文件见 https://stackoverflow.com/tags/fortran/info

具体来说,Fortran 2008 说:

9.5.6.10 FILE= specifier in the OPEN statement

1 The value of the FILE= specifier is the name of the file to be connected to the specified unit. Any trailing blanks are ignored. The file-name-expr shall be a name that is allowed by the processor. If this specifier is omitted and the unit is not connected to a file, the STATUS= specifier shall be specified with a value of SCRATCH; in this case, the connection is made to a processor-dependent file. The interpretation of case is processor dependent.



这意味着你的程序不符合,因为当 FILE=省略,唯一允许的值 STATUS="SCRATCH" .

Gfortran 也创建了 fort.n当你写入一个你没有打开的单元时的文件,但当你执行 open 时不会声明 status="new" .您应该很容易添加 file=代码的说明符。您甚至可以使用 fort.N如果你坚持他们的名字。见 Convert integers to strings to create output filenames at run time关于如何将整数放入文件名的方法。

另一种选择是下载 Oracle Solaris Studio ,它包含 f77命令并且很可能遵循您引用的编译器特定文档。它实际上是一个非常好的编译器(如果缺少一些现代 Fortran 功能),具有非常好的可视化调试和分析实用程序。但是,我建议您首先使代码可移植且符合标准。

关于fortran - 带有 STATUS ='NEW' 的 OPEN 的默认行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32852033/

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