现代Fortran:无标签输出格式

3
我希望找到一种不使用标签来指定输出格式的方法。
为了更好地理解我的意思,以下是一个使用标签的例子:
write(*,1001) icount, x, y
1001 format (i5,f5.2,e12.3)

没有标签应该是我在write语句中放置了format (i5,f5.2,e12.3),类似于write(*,format(i5,f5.2,e12.3)) icount, x, y

我记得最近在某个地方看到过这个,但不幸的是我找不到它了。如果存在的话,它是较新版本Fortran的一个功能。也许是Fortran 90?也许是Fortran 2008?

2个回答

4

尝试

write(*,'(i5,f5.2,e12.3)') icount, x, y

为了在多个地方重复使用相同的格式,您还可以将格式保存到字符字符串中。 - Jeff Irwin

1
如@Jeff Irwin所建议的那样,可以将格式保存在一个字符字符串中,并将其传递给write或print。
character(*), parameter :: fmt1 = "(i5,f5.2,e12.3)"
!! character(100) :: fmt1 = ...   !! to use a non-constant string

write(*,fmt1) icount, x, y
write(*,fmt=fmt1) i2, x2, y2   !! fmt= may be attached for clarity

由于fmt1是一个常规的字符字符串,它也可以作为模块变量、类型组件存储或作为子程序参数传递。


2
通过选择名称 fmt 作为格式字符串,可以将 write 语句写成 write(*,fmt=fmt)。我将把这是好事还是坏事的决定留给读者。 - High Performance Mark
@HighPerformanceMark 是的,为了避免与Fortran关键字产生歧义,最好使用不同的变量名以增加清晰度。因此,我已相应地更改了答案。由于Fortran允许使用关键字名称作为变量名称,我更喜欢在我的程序中使用“fmt”。 - roygvib

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接