如何在Fortran中做出正确的数据声明?

时间:2018-10-15 19:55:50

标签: 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"/"*" , " "/  

我收到以下消息:

fitold.f90:346:39:

        & nl , ng , np/"l" , "g" , "p"/, "itra1","itra2"/"*" , " "/
                                   1
Error: Syntax error in DATA statement at (1)

1 个答案:

答案 0 :(得分:2)

数据语句采用一对对象列表和值列表,其中一对格式为object-list /value-list/。要初始化的对象(不包括 data隐含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

我们现在看到的是,我们有字符文字,编译器希望在其中看到对象名称。


作为tim18的评论,即使此更正也不会使代码片段成为标准的Fortran。一些编译器接受用于初始化/赋值给实际值(和real*8)的字符值,但这不是通用的。