我可以将格式语句传递给 Fortran 中的子例程吗?
Can I pass a format statement to a subroutine in Fortran?
我希望能够将 'format' 传递到 Fortran 子例程中。举个例子:
write(6,1002) M1
1002 format(A, "M1, Mach number at boundary layer edge", f8.3)
由于过于复杂的原因,无法进入此处,拥有一个通用函数会很有用,我向该函数发送一个带有用于写出的格式语句的变量。我想不出这样做的方法。
有什么想法吗?
忘记 FORMAT 语句,使用 格式化字符串
string = '(A, "M1, Mach number at boundary layer edge", f8.3)'
write(*,string) M1
您可以轻松地将字符串传递给子例程。
格式语句已经过时且难以使用。
此外,不要使用单位编号6
,而是使用*
,这样更便于携带。
您不能真正将格式语句传递给子例程。但是你可以传递一个格式字符串,比如:
fmtstr = '(A, "M1, Mach number at boundary layer edge", f8.3)'
...
call mysub(args, fmtstr)
然后
subroutine mysub(args, fmtstr)
...
character(*), intent(in) :: fmtstr
...
write(*,fmtstr) M1
end subroutine
有些人可能会争辩说,格式字符串是在所有情况下处理格式的最佳现代方式,并且已经完全停止使用格式语句。
我希望能够将 'format' 传递到 Fortran 子例程中。举个例子:
write(6,1002) M1
1002 format(A, "M1, Mach number at boundary layer edge", f8.3)
由于过于复杂的原因,无法进入此处,拥有一个通用函数会很有用,我向该函数发送一个带有用于写出的格式语句的变量。我想不出这样做的方法。
有什么想法吗?
忘记 FORMAT 语句,使用 格式化字符串
string = '(A, "M1, Mach number at boundary layer edge", f8.3)'
write(*,string) M1
您可以轻松地将字符串传递给子例程。
格式语句已经过时且难以使用。
此外,不要使用单位编号6
,而是使用*
,这样更便于携带。
您不能真正将格式语句传递给子例程。但是你可以传递一个格式字符串,比如:
fmtstr = '(A, "M1, Mach number at boundary layer edge", f8.3)'
...
call mysub(args, fmtstr)
然后
subroutine mysub(args, fmtstr)
...
character(*), intent(in) :: fmtstr
...
write(*,fmtstr) M1
end subroutine
有些人可能会争辩说,格式字符串是在所有情况下处理格式的最佳现代方式,并且已经完全停止使用格式语句。