而如果使用输出格式,则需要指定数据格式,比如 '(100F5.1)',当 100 个数不确定时,就比较难办。
Visual Fortran 扩展了尖括号语法,比如 n = 100 ,上面的例子可写为 '(<n>F5.1)',但这毕竟不是标准语法。
此段代码提供了一个标准语法下的,对尖括号的模仿。
但依然有限定,比如只能有一个可变量(改成多个也可以,但需要额外的书写)
Module N_Fmt_Mod
Implicit None
contains
Character( Len = 256 ) Function N_Fmt( c , n )
!// N_Fmt by www.fcode.cn
Character( Len = * ) , Intent( IN ) :: c
Integer , Intent( IN ) :: n
integer :: i , j
character( len = 16 ) :: cn
i = index( c , '<' )
j = index( c , '>' )
write( cn , '(g0)' ) n
N_Fmt = c(:i-1) // Trim(adjustL(cn)) // c(j+1:)
End Function N_Fmt
End Module N_Fmt_Mod
Program www_fcode_cn
use N_Fmt_Mod
implicit none
integer , parameter :: N = 10
real :: a( N ) = 24.
Write( * , "(<n>f5.1)" ) a !// only for Visual Fortran
Write( * , N_Fmt("(<n>f5.1)",N) ) a !// for all compiler
End Program www_fcode_cn



