簡體   English   中英

名單中的 fortran 動態字符串

[英]fortran dynamic string in namelist

為了對名單使用准動態字符串,我編寫了以下代碼

    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

輸入.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。

事實證明,解決問題的更好方法是使用替代編譯器。

問題已報告給技術支持並得到確認。

我已使用最新的 17.9 版本成功復制了您的行為。 我們已分配問題 TPR 24817。

報告

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM