Formatting pgf77的打印特性(FORTRAN 77行为?)

Formatting pgf77的打印特性(FORTRAN 77行为?),formatting,fortran,Formatting,Fortran,我编译并运行这个简单的FORTRAN 77程序: program test write(6,*) '- - - - - - - - - - - - - - - - - - - - - - - - - - ', & '- - - - - - - - - - - - - - - - - - - - - - - - - -' write(6,'(2G15.5)') 0.1,0.0 end 使用gfortran或f9

我编译并运行这个简单的FORTRAN 77程序:

      program test
      write(6,*) '- - - - - - - - - - - - - - - - - - - - - - - - - - ',
     &           '- - - - - - - - - - - - - - - - - - - - - - - - - -'
      write(6,'(2G15.5)') 0.1,0.0
      end
使用
gfortran
f95
时,输出为:

 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    0.10000         0.0000 
使用
pgf77
它是:

 - - - - - - - - - - - - - - - - - - - - - - - - - - 
 - - - - - - - - - - - - - - - - - - - - - - - - - -
    0.10000        0.00000E+00
77国集团
ifort

 - - - - - - - - - - - - - - - - - - - - - - - - - - 
 - - - - - - - - - - - - - - - - - - - - - - - - - -
    0.10000         0.0000 
出现了几个问题:

  • 为什么0.0打印为四位小数而不是五位小数 以
    G15.5
    格式请求?这符合规范吗?为什么
    pgf77
    是否以不同的方式编写

  • 我猜
    -
    行中的换行符是最后三个 编译器由于输出行长度的某些限制。。。是 有没有办法提高这个极限,或者用其他方法强制 单行写入,在编译时

  • 顺便说一下,所需的输出是

     - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        0.10000         0.00000
    

    G
    编辑描述符导致打印的内容有点复杂,但对于值
    0.0
    ,标准(2008版中的10.7.5.2.2)规定编译器应打印带有
    d-1
    的表示(示例中为4)数字的小数部分的数字。因此,您的大多数编译器运行正常;我认为
    pgf77
    是不正确的,但它可能适用于具有不同要求的早期标准

    最简单的修复方法可能是使用
    f
    编辑描述符,而不是
    (2F15.5)

    至于连字符行的打印,您使用的
    *
    编辑描述符会导致列表定向输出,从而将输出的精确控制权交给编译器。我的观点是,编译器将表达式的两部分打印在两行上有点反常,但这不是非标准行为


    如果你想让连字符全部打印在一行上,控制输出格式,
    write(6),(2A24)
    或类似的东西应该这样做(我没有为你计算连字符,只是猜测输出的每个部分都有24个)。如果这不吸引你,只需将所有连字符都写进一个字符串即可;即使使用列表定向输出,也可能只写一行。

    好吧,在我的实际情况中,我必须处理一个由许多不同的人在20多年中编写的大型程序,因此我要求提供一些编译器标志,而不是修改打印格式。我担心你会徒劳地搜索编译器标志,实际上,格式化输出是按照我希望的方式进行格式化,而不是按照代码所说的方式进行格式化。如果不需要(标准)
    G
    编辑描述符行为,请使用另一个编辑描述符。Etcfyi这个例子可以通过简单地将逗号改为/。。就风格而言,假设是一个字符串,它应该是怎样的。由于pgf77是一种商业产品,您应该公平地询问有关g格式的支持(并让我们知道响应…。@george我问了他们,得到了基本相同的答案:没有什么可以做的。从标准来看,我倾向于同意pgf77具有适用于零的f77形式。其他人显然遵循较新的标准。