现代 Fortran:没有标签的输出格式

Modern Fortran: Output format without label

我正在寻找一种无需使用标签即可指定输出格式的方法。

理解我的意思,附上标签:

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

without label 应该是我把format (i5,f5.2,e12.3)放在write语句的某处,比如write(*,format(i5,f5.2,e12.3)) icount, x, y

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

尝试

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

正如@Jeff Irwin 所建议的,可以将格式保存在字符串中,然后 将其传递给书写或打印。

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是一个普通的字符串,所以也可以存为模块 例如,变量、类型组件或作为子例程参数传递。