あ、ほんとだ。
ついsubroutineと同じ感覚でこの手のエラー用出力をやりがちだけど、気を付けなきゃw
本来ならエラー時も引数で対処すべきかもしれんけど、出力にこだわるならwirte(0,*)でもいいか。
かち合わなければいいわけで。

ちなみに write(*,*) "foo",func は正しくは func() だよね。
というか func のままだとrecursive I/O errorが出ないんだよね。よく分からん・・・

$ cat a.f90
implicit none
real func
write(*,*) "foo",func
end
real function func
func = 0.d0
write(*,*) "bar"
end function

$ ifort a.f90 -warn ; ./a.out
foo 0.0000000E+00