【发布时间】:2017-06-09 15:45:04
【问题描述】:
我无法让格式字符串被 Fortran 程序中的读取语句接受,该程序由 OS X 下的 gfortran 编译。
read 语句和字符串构成两行代码,我收到的各种错误消息似乎取决于这两个语句如何并行使用(另外,以防万一,要声明的数组读入):
read(10, format) ( velmatt(n,row,i),m=1,3 )
format = "(11x,' x ',a3,2x,i8,6x,3f11.6)"
这会导致错误,
Fortran runtime error: Missing initial left parenthesis in format
我必须补充一点,我还为 format 语句尝试了一些替代语法,它由 read 函数调用,因为推荐的确切形式似乎有所不同(我是 fortran 新手)。这里有一些替代方案,
read(10, 11) ( velmatt(n,row,i),m=1,3 )
11 format(11x,' x ',a3,2x,i8,6x,3f11.6)
甚至
read(10, 'format') ( velmatt(n,row,i),m=1,3 )
format = (11x,' x ',a3,2x,i8,6x,3f11.6)
其中至少一个会出错
Fortran runtime error: Constant string in input format
而且两者之一也报此错误,
Missing format label at (1)
我读到格式声明应该是用引号括起来的括号,但在这种情况下,我的第一种方法应该有效吗?因此,错误消息似乎是相互补充的,而且我还缺少其他一些东西..
(我还不清楚在 fortran 中使用正确单元号的重要性,如果这是部分或全部问题,请见谅)
无论如何,以上(可能还有我尝试过的更多)都不能让编译器满意。
【问题讨论】:
-
真的是在read语句中引用
format的值吗?也就是说,第一个示例是否正确显示了您使用的行的顺序? -
在 Absoft Pro Fortran 中读取是否有效?您将哪些选项传递给编译器?
-
@francescalus 行的顺序与程序中使用的一样,是的,但是当我在程序开始时使用其他初始化设置格式命令时,错误消息仍然相同。
-
@MichaelShopsin 我真的不确定 - 我怎么知道我使用的是 Absoft Pro 版本的 fortran?
-
@JSmoov 有许多适用于 MacOS X 的 Fortran 编译器,它们的行为可能略有不同。 F77 与 F95/99 也可以改变接受的格式语句。