读取语句

时间:2017-06-09 15:45:04

标签: fortran format

我无法在Fortran程序中获取格式字符串,该格式字符串由granran在OS X下编译。

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

我必须补充说,我还尝试了替代格式语句的一些替代语法,并且它是由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) 

我读到格式语句应该是用引号括起来的parantheses,但在这种情况下我的第一种方法应该有用吗?因此,错误信息似乎是相互补充的,还有一些我不知道的东西......

(我还不清楚在fortran中使用正确的单位数字的重要性,如果这是问题的一部分或全部,那就很抱歉)

无论如何,以上都没有(加上我尝试的更多)满足编译器。

1 个答案:

答案 0 :(得分:3)

您发布的示例中,只有

的示例
read (10,11)

是对的。在第一个中,您要求READ在名为FORMAT的变量中查找格式,我假设您之前声明为CHARACTER。如果您先分配了格式,那么它可能会有效,但这不是推荐的方法。但实际上,变量未初始化且没有正确的值。

您可以像使用(10,11)情况一样使用带标签的格式,也可以将格式本身放在READ中,如下所示:

read(10, "(11x,' x   ',a3,2x,i8,6x,3f11.6)") ...