Fortran中write(*,*)和write(6,*)之间的区别

时间:2015-02-20 02:50:44

标签: fortran fortran90

我知道这可能听起来像个愚蠢的问题:

之间有什么区别
write(*,*)

write(6,*)

? 我在我学院的超级计算机上运行一个复杂的代码,它通过一个不同于6的单元号输出一个数据文件,显然编译的Fortran代码与上面的代码只有上面的代码给了我一个不同的数据文件(即数据做)不匹配)。

我知道(*,*)格式转到标准输出,而(6,*)在屏幕上呈现,但我真的很困惑为什么这会对我的实际数据产生影响。任何关于如何工作的想法都将受到赞赏!

1 个答案:

答案 0 :(得分:2)

*表示的单位是"标准输出" (不是真正的Fortran标准术语)。它通常预先连接为6号单元,但它可以连接到不同的 - 编译器选项控制它。您可以使用模块OUTPUT_UNIT

中的常量iso_fortran_env进行检查
OUTPUT_UNIT:
    Identifies the preconnected unit identified by the asterisk (*) in WRITE statement. 

(来自gfortran文档)

大多数情况下,两者的结果可能相同。如果不是你的情况,你必须表明差异是什么样的。

如果您使用其他单位编号而您自己在自己的代码中打开它,则可能发生任何事情。您必须检查打开文件时使用的选项,即open语句和编译器选项。