开发者
毕昇/GCC编译与intel的fortran读取文件差距
毕昇/GCC编译与intel的fortran读取文件差距
发表于2023/08/02
1.2k3

背景:

使用flang编译.f90文件,读取namelist字符串时乱码,而ifort读取字符串时正常。

.f90文件demo:

PROGRAM namelist_output
   implicit none
   integer :: a
   character(len=50) :: b
   character(len=50)   :: namelist_file
   integer, parameter  :: namelist_unit=7
   integer :: iost
   namelist /start / a , b

   namelist_file = 'namelist_test'
   iost = 0

   open ( file = namelist_file, unit = namelist_unit , iostat = iost )
   write(*,*) 'open之后iost的值:',iost
   read ( unit = namelist_unit , nml = start , iostat = iost)
   write(*,*) 'read之后iost的值:',iost
   write(*,*) 'a的值:' ,a
   write(*,*) 'b的值:' ,b
END

namelist_test:

&start
a = 1,
b = qwe,
/

1、使用ifort编译运行:

cke_11696.png

结果:输出的值与namelist中相同

2、使用flang编译运行:

cke_29295.png

结果:输出的值与namelist中不相同,正常的b值是qwe

得出结论:ifort编译,是正常读取到字符串的数据,而flang则读取不了,iost值也不正常

根因分析:

namelist中字符串写法导致flang读取失败

解决方案:

在qwe加上单引号,flang则运行读取正常

cke_120032.png

收藏举报
Level 1
0
帖子
0
粉丝
0
获赞