【问题标题】:`Error: Unexpected NAMELIST statement` in GNUFortranGNUFortran 中的“错误:意外的 NAMELIST 语句”
【发布时间】:2017-06-21 16:06:04
【问题描述】:

以下脚本创建派生类型,然后尝试将其名称列表输出到文本文件:

program test
    implicit none
    character(len=:), allocatable :: CurrentString
    integer :: linelength, IO

    type SubjectType
            character(20) :: genre
            character(20) :: maindude
    end type SubjectType

    type BookType
            character(20) :: title
            character(20) :: author
            type(SubjectType) :: subject
            integer, dimension(2,2):: array
            integer :: BookID

    end type Booktype

    type(Booktype) :: Book

    Book%title = "Harry Potter"
    Book%author = "JK Rowling"
    Book%subject%genre = "Fantasy"
    Book%subject%maindude = "Ron Weasley"
    Book%array = RESHAPE([1,2,3,4],[2,2])
    Book%BookID = 105
    open(10, file = 'namelist.txt')

    namelist /mynamelist/ Book
    write(10, nml = mynamelist)
    close(10, status = 'keep')
end program test

编译后会报错:

||=== 构建:在 Hello 中调试(编译器:GNU Fortran 编译器)===|

D:\TEMP\Hello\main.f95|30|错误:意外的 NAMELIST 语句 |

D:\TEMP\Hello\main.f95|31|错误:符号“mynamelist”必须是一个

NAMELIST 组名| ||=== 构建失败:2 个错误,0 个警告 (0

分钟,2 秒)===|

google search 真的不是很有帮助。我发现的唯一论坛讨论了为什么会发生这种情况,而不是如何解决它。我怎样才能让它在 GFortran 中运行?请注意,这在 IFort 中确实有效。

【问题讨论】:

    标签: fortran codeblocks


    【解决方案1】:

    NAMELIST 是一个声明语句。它不能放在可执行语句之间。它只能用在每个单元的开头第一个可执行语句之前。

     type(Booktype) :: Book
    
     namelist /mynamelist/ Book
    
     Book%title = "Harry Potter"
    
     ...
    
     open(10, file = 'namelist.txt')
     write(10, nml = mynamelist)
     close(10, status = 'keep')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多