【问题标题】:fortran dynamic string in namelist名单中的 fortran 动态字符串
【发布时间】:2017-10-01 09:04:19
【问题描述】:

为了对名单使用准动态字符串,我编写了以下代码

    program main
implicit none
      integer::inputlen
      character(len=:),ALLOCATABLE::input
      namelist /ttdata/ input,inputlen

      ALLOCATE(character(len=10) :: input)
      input(:)=' '
      print *,'1.input="',input,'"'

      open ( unit=10,STATUS='OLD',file='input.namelist')
      read(10,nml=ttdata)
      print *,'2.input="',input,'"'
      if(inputlen.gt.10) then
        close(10)
        deallocate(input)

        allocate(character(len=inputlen) :: input)
        input(:)=' '
        print *,'3.input="',input,'"'
        open ( unit=10,STATUS='OLD',file='input.namelist')
      endif
      read(10,nml=ttdata)
      print *,'4.input="',input,'"'
     close(10)

end

input.namelist

&ttdata
  inputlen=20,
  input='123456789012345'/

输出

 1.input="          "
 2.input="1234567890"
 3.input="                    "
 4.input="1234567890          "

我扩展了输出

    ...
   4.input="123456789012345      "

似乎内存是按精确的方式分配的,但读入名单是错误的。 使用 pgfortran ce。 我做错了什么?或者我可以为程序的正确方式行为做些什么?

原来它一直是 x86-64 Linux -tp core2 上的 pgfortran 17.4-0 64 位目标。 gfortran 工作得很好。

来自 pgroup:

我已经用最新的 17.9 成功复制了你的行为 释放。我们已分配问题 TPR 24817。

【问题讨论】:

  • 我做错了什么?您没有将implicit none写为程序的第一行(在以program开头的行和任何use语句之后,但从您所展示的内容来看,您可能无论如何都没有这些行)。您没有将implicit none 写为程序的第一行。您没有将implicit none 写为程序的第一行。你没有写implicit none作为你程序的第一行。
  • 为了强化前面的评论,我怀疑示例输出是示例程序的结果:print *,'3.inputp="',inputp,'"' 在程序中,但输出看起来像3.input=" "。请按原样显示程序,并创建一个minimal reproducible example
  • 列出了示例的完整代码。隐式 none 什么都不做。
  • implicit none 什么都不做。 它肯定会,它可以防止使用以前没有声明过的变量,并且使您能够修改代码以消除拼写错误。在这个阶段,您需要非常清楚地描述您仍然面临的问题。对我来说,(修改后的)代码和输入文件可以按预期工作。
  • 您使用哪个编译器、哪个版本和哪个标志?我们必须测试您的确切代码和您的确切输入文件。

标签: string dynamic file-io fortran


【解决方案1】:

原来解决问题的更好方法是使用替代编译器。

问题已报告给技术支持并得到确认。

我已经用最新的 17.9 成功复制了你的行为 释放。我们已分配问题 TPR 24817。

Report

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-11
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 2014-11-09
    相关资源
    最近更新 更多