1

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

1

在 Fortran 代码中读取为:

read(iunit,'(i4)') int_var

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

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

4

2 回答 2

2

我不认为这与blank. 这read不会导致错误,除非您使用pad="no". 默认为 allways pad="yes",如果输入记录太短,则会用空格填充。

你确定,你使用正确的输入文件,正确的行结束?源自 Windows 和 Unix 的文本文件可能存在问题,可以在输入记录中读取 CR。在这种情况下,使用该unix2dos实用程序可能会有所帮助。您可以尝试character(4)使用编辑描述符读取字符串a4来测试这一点。

于 2012-11-16T20:23:15.057 回答
0

PGI Fortran 是否支持开放关键字blank="null"?我认为这会将读取更改为您想要的行为并最大限度地减少对代码的修改。blank="null" 与 blank="zero" 在 gfortran 4.7 中似乎没有区别。

于 2012-11-16T19:14:08.783 回答