我无法让格式字符串被 Fortran 程序中的读取语句接受,由 gfortran 在 OS X 下编译。
读取语句和字符串构成两行代码,我收到的各种错误消息似乎取决于这两个语句如何并行使用(加上,以防万一,要读入的数组的声明):
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
我必须补充一点,我还尝试了一些格式语句的替代语法,它是由读取函数调用的,因为推荐的确切形式似乎有所不同(我是 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 (10,11)
是正确的。首先,您要求 READ 在名为 FORMAT 的变量中查找格式,我假设您之前将其声明为 CHARACTER。如果您首先指定了格式,它可能会起作用,但这不是推荐的方法。但事实上,变量未初始化并且没有正确的值。
您可以像在 (10,11) 案例中那样使用带标签的格式,也可以像这样将格式本身放入 READ 中:
read(10, "(11x,' x ',a3,2x,i8,6x,3f11.6)") ...
以下语句中斜杠对阅读说明的影响是什么:
read(5,1111) (SSTORE(j,k),k=1,21)
1111格式(/21f6.0)
我理解是读一行然后跳下一行。