PGI Fortran整数格式

时间:2012-11-16 17:58:32

标签: fortran

我有一个包含整数记录的输入文本文件,如:

1

在Fortran代码中读取为:

read(iunit,'(i4)') int_var

与Gfortran一起工​​作正常,但是与PGI Fortran编译器编译的相同代码需要一个4字符宽的字段(实际记录只有1个字符)并抛出错误。现在我知道格式指定宽度,根据Fortran标准,这可能是也可能不是正确的行为,但我的问题是 - 是否有PGI的编译器选项会使它在这方面表现得像Gfortran?

我使用的第三方代码有很多(数百或数千)这样的读取语句,输入数据有很多“错误”宽度的记录,因此修改代码或输入数据都需要付出很大的努力

2 个答案:

答案 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产生影响。