我可以将格式语句传递给Fortran中的子例程吗?

时间:2017-05-19 11:44:09

标签: file-io fortran fortran90

我希望能够将'format'传递给Fortran子例程。举个例子:

        write(6,1002) M1    
1002    format(A, "M1, Mach number at boundary layer edge", f8.3)

由于太多涉及到这里的原因,有一个泛型函数是有用的,我发送一个带有用于写出的格式语句的变量。我无法弄清楚这样做的方法。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您无法将格式语句真正传递给子例程。但是您可以传递格式字符串,例如:

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

有些人可能认为格式字符串是在所有情况下处理格式的最佳现代方式,并且完全停止使用格式语句。

答案 1 :(得分:1)

忘记FORMAT语句,使用格式字符串

   string = '(A, "M1, Mach number at boundary layer edge", f8.3)'
   write(*,string) M1

您可以轻松地将字符串传递给子例程。

格式语句过时且难以使用。

另外,请勿使用单位号码6,而应使用*,这样便于携带。