次のコード構造があります。
PROGRAM main
IMPLICIT NONE
REAL*8, DIMENSION(:), ALLOCATABLE :: var
ALLOCATE(var(3))
var(1) = 1.0d0
var(2) = 2.0d0
var(3) = 3.0d0
CALL f1(var, f2)
CONTAINS
SUBROUTINE f1(arg_in, fun)
REAL*8, DIMENSION(:), INTENT(IN) :: arg_in
EXTERNAL fun
PRINT *, arg_in
CALL fun(arg_in)
PRINT *, arg_in
END SUBROUTINE f1
SUBROUTINE f2(arg_in)
REAL*8, DIMENSION(:), INTENT(INOUT) :: arg_in
PRINT *, SIZE(arg_in)
arg_in = 2.0d0 * arg_in
RETURN
END SUBROUTINE f2
END PROGRAM main
プログラムを実行すると、関数 f2 の配列のサイズが 0 であることに気付きました。実際のプログラムでは、上記の単純なプログラムとは対照的にエラー メッセージが表示されますが、同じ問題があります。
ターゲットに関連付けられていないポインター F を使用しようとしました
何が問題なのか、誰かがヒントを与えることができますか?