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