现代Fortran:无标签输出格式
我正在寻找一种不使用标签而指定输出格式的方法 要理解我的意思,请使用标签:现代Fortran:无标签输出格式,fortran,Fortran,我正在寻找一种不使用标签而指定输出格式的方法 要理解我的意思,请使用标签: write(*,1001) icount, x, y 1001 format (i5,f5.2,e12.3) 如果没有标签,我应该将format(i5,f5.2,e12.3)放在write语句的某个地方,比如write(*,format(i5,f5.2,e12.3))icount,x,y 我想我最近在什么地方看到过这个,但不幸的是我再也找不到了。如果它存在,则是较新Fortran版本的功能。也许是Fortran 90?
write(*,1001) icount, x, y
1001 format (i5,f5.2,e12.3)
如果没有标签,我应该将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是一个常用的字符串,所以它也可以存储为模块
例如,变量、类型组件或作为子例程参数传递。要在多个位置重复使用同一格式,还可以将格式保存为字符串。通过为格式字符串选择名称
fmt
,可以将write
语句编写为write(*,fmt=fmt)
。我将留给读者来决定这是好事还是坏事。@HighPerformanceMark是的,为了避免Fortran关键字的歧义,为了清晰起见,最好使用不同的变量名。因此,我相应地改变了答案。因为Fortran允许使用关键字名作为变量名,所以我更喜欢在程序中使用“fmt”。