Skip to main content
 首页 » 编程设计

fortran中如何在Fortran中做出正确的数据陈述

2026年04月06日52del

  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),但这并不通用。