在Fortran90中,我想使用变量设置输出的格式。我的代码如下所示:
fileUnit = 14
myFormat = '(10e18.10)'
write (fileUnit,myFormat) myData
myFormat
的值可以是myData
类型的任何值。有没有办法设置myFormat
,使输出等同于编码
write (fileUnit,*) myData
答案 0 :(得分:1)
您不能像在*
或read
语句中那样在显式格式规范中使用裸write
。在显式格式上下文中,*
表示 unlimited-format-item 组,它为一组 format-items 提供无限重复计数,而不是代表列表定向格式化(参见Cl.9.6.2.2,R915,Fortran 2008)。
保存显式格式的字符变量可以在运行时构造,因此处理动态需求的选项是编写代码以根据数据确定正确的格式规范。根据您的编译器,如果您的数据是派生类型,您还可以选择定义输出(参见Cl.9.6.4.8.3 Fortran 2008)来满足您的需求。
答案 1 :(得分:1)
如果要以编程方式在显式和列表定向格式之间切换,可以执行以下操作:
if(myFormat.eq.'*')then
write(unit,*)...
else
write(unit,myFormat)...
end if