【问题标题】:PGI Fortran integer formatPGI Fortran 整数格式
【发布时间】:2012-11-16 17:58:31
【问题描述】:

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

1

在 Fortran 代码中读取为:

read(iunit,'(i4)') int_var

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

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

【问题讨论】:

    标签: fortran


    【解决方案1】:

    我认为这与blank 无关。这个read 应该不会导致错误,除非您使用pad="no" 打开文件iunit。默认为 allways pad="yes",如果输入记录太短,则会用空格填充。

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

    【讨论】:

    • 是的,这是一个 Windows 行结束问题...应该先用谷歌搜索确切的错误消息,而不是尝试在其中查找逻辑 :)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-07
      • 1970-01-01
      • 1970-01-01
      • 2019-08-11
      • 1970-01-01
      • 2015-07-29
      相关资源
      最近更新 更多