作为一个用新的Fortran标准编写的大型程序的一部分,我有兴趣在一个文件上写一些文本,这个文件将被我无法控制的另一个程序读取 . 很久以前,当我学习Fortran时,格式语句生成的输出记录应以LF(换行)开头,以CR(回车)结束 . 这意味着每个输出记录应该由序列CRLF分隔 .

令我惊讶的是,我发现除非我在Windows计算机上编译并运行我的程序,否则这似乎不再是真的 . 当我在Mac上编译并运行我的程序时,输出记录由单个LF分隔 . 我知道这是一个Linux标准,但我想我认为Fortran程序的输出不应该依赖于操作系统 .

这样做的结果是,当我在Windows上生成输出时,我的输出文件可以被其他程序读取(仅存在于Windows上),而当我在Mac上生成相同的输出时,它会失败 . 我不知道其他程序如何读取文件,但我认为它是标准的Fortran读取 .

我还使用“diff”比较了Windows和Mac的输出文件,这表明所有行都不同 . 但是“diff -w”表示文件是相同的 .

如果我在Mac或Windows上生成文件,我希望能够生成可由其他程序独立读取的输出 . 我知道我可以使用#ifdef之类的东西在编译时检查操作系统,但我想知道是否有其他方法,Fortran写入中是否有一些选项?我知道有很多新的东西行“noadvance”等任何强制“CRLF”记录分隔符的选项?

我在Windows上使用GNU Fortran版本5.2,在Mac上使用的似乎是版本7.2