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"/"*" , " "/
我收到以下消息:
fitold.f90:346:39:
& nl , ng , np/"l" , "g" , "p"/, "itra1","itra2"/"*" , " "/
1
Error: Syntax error in DATA statement at (1)
请您参考如下方法:
数据语句采用对象列表和值列表对,其中这样的一对的形式为object-list/value-list/。要初始化的对象(不包括数据隐含dos的情况)必须是变量。在问题的数据语句的情况下,在错误消息标记点周围违反了这一点。
让我们看一下问题的陈述:
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
正如我们现在所看到的,我们有编译器期望看到对象名称的字 rune 字。
正如 tim18 评论的那样,即使进行此更正也不会使代码片段成为标准的 Fortran。一些编译器接受字符值来初始化/分配给实际值(和 real*8),但这并不通用。

