如何在Fortran中生成正确的数据语句?
我得到了以下信息:如何在Fortran中生成正确的数据语句?,fortran,Fortran,我得到了以下信息: subroutine mindef(f) implicit real*8(a-h,o-z) real*8 r(6),com(3) data r/"en d", "irec","tion","prog","ress","ion "/, & & nl , ng , np/"l" , "g" , "p"/, "itra1","itra2"/"*" , " "/ 数据语句采用对象列表和值列表对,其中对象列表和值列表的形式为对象列表/值
subroutine mindef(f)
implicit real*8(a-h,o-z)
real*8 r(6),com(3)
data r/"en d", "irec","tion","prog","ress","ion "/, &
& nl , ng , np/"l" , "g" , "p"/, "itra1","itra2"/"*" , " "/
数据语句采用对象列表和值列表对,其中对象列表和值列表的形式为
对象列表/值列表/
。要初始化的对象(不包括数据隐含dos的情况)必须是变量。对于问题的数据语句,在错误消息标记点附近违反了这一点
让我们看看问题的陈述:
fitold.f90:346:39:
& nl , ng , np/"l" , "g" , "p"/, "itra1","itra2"/"*" , " "/
1
Error: Syntax error in DATA statement at (1)
正如我们现在看到的,我们有编译器希望看到对象名的字符文本
正如tim18所评论的,即使是这种修正也不会使代码片段成为标准Fortran。有些编译器接受字符值来初始化/赋值给实值(和
real*8
),但这不是通用的。维护40多年前的IBM360风格的非标准Fortran太困难了,特别是当您将其与后来标准的自由格式源格式结合使用时。您可能希望将r和c显式声明为字符串;作为测试的第一步,您可以使用字符数组(len=8)。
data r / "en d", "irec","tion","prog","ress","ion " / , &
! ^ ^ '----------------------------------------' ^ ^
! | | '- value list | '- pair separator
! | '- separator '- separator
! '- variable name
& nl , ng , np / "l" , "g" , "p" / , "itra1","itra2" /"*" , " "/
! '-----------' ^ '--------------' ^ ^ '--------------'
! '- object | '- value | | '- NOT VARIABLES!
! list | list | '- pair separator
! '- separator '- separator