我有一个包含整数记录的输入文本文件,如:
1
在Fortran代码中读取为:
read(iunit,'(i4)') int_var
与Gfortran一起工作正常,但是与PGI Fortran编译器编译的相同代码需要一个4字符宽的字段(实际记录只有1个字符)并抛出错误。现在我知道格式指定宽度,根据Fortran标准,这可能是也可能不是正确的行为,但我的问题是 - 是否有PGI的编译器选项会使它在这方面表现得像Gfortran?
我使用的第三方代码有很多(数百或数千)这样的读取语句,输入数据有很多“错误”宽度的记录,因此修改代码或输入数据都需要付出很大的努力
答案 0 :(得分:2)
我认为这与blank
无关。除非您使用read
打开文件iunit,否则此pad="no"
不应导致错误。默认值为allways pad="yes"
,如果输入记录太短,则会导致输入记录用空格填充。
您确定使用正确的输入文件,行结束是否正确?源自Windows和Unix的文本文件可能存在问题,CR可以在输入记录中读取。在这种情况下,使用unix2dos
实用程序可能会有所帮助。您可以尝试使用character(4)
编辑描述符读取a4
字符串以进行此测试。
答案 1 :(得分:0)
PGI Fortran是否支持open关键字blank =" null"?我认为这会将读取更改为您想要的行为并最小化对代码的修改。空白=#&34;空"与空白="零"似乎并没有对gfortran 4.7产生影响。