名单中的fortran动态字符串

时间:2017-10-01 09:04:20

标签: string dynamic file-io fortran

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

    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。

1 个答案:

答案 0 :(得分:1)

事实证明,解决问题的更好方法是使用替代编译器。

该问题已向技术支持部门报告并得到确认。

  

我已使用最新的17.9成功复制了您的行为   发布。我们已经分配了问题TPR 24817。

Report