我无法在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中使用正确的单位数字的重要性,如果这是问题的一部分或全部,那就很抱歉)
无论如何,以上都没有(加上我尝试的更多)满足编译器。
答案 0 :(得分:3)
您发布的示例中,只有
的示例read (10,11)
是对的。在第一个中,您要求READ在名为FORMAT的变量中查找格式,我假设您之前声明为CHARACTER。如果您先分配了格式,那么它可能会有效,但这不是推荐的方法。但实际上,变量未初始化且没有正确的值。
您可以像使用(10,11)情况一样使用带标签的格式,也可以将格式本身放在READ中,如下所示:
read(10, "(11x,' x ',a3,2x,i8,6x,3f11.6)") ...