我有一个带有可分配变量的模块,该变量在模块中定义,在子例程中分配,然后也用于第一个子例程调用的第二个子例程中。在这种情况下,我是否必须将变量传递给第二个子例程并声明INTENT(inout)
?或者因为它是一个全局变量,所以不需要作为参数传递?
MODULE test
IMPLICIT NONE
SAVE
REAL,ALLOCATABLE,DIMENSION(:,:,:) :: total
CONTAINS
!--- 1st subroutine
SUBROUTINE my_subr1(n,m,z)
IMPLICIT NONE
INTEGER,INTENT(in) :: n,m,z
ALLOCATE(total (n,m,z))
total=.9
CALL my_subr2(n)
END SUBROUTINE my_subr1
!-- 2nd subroutine
SUBROUTINE my_subr2(n)
IMPLICIT NONE
INTEGER,INTENT(in) :: n
total(n,:,:)=total(n-1,:,:)
END SUBROUTINE my_subr2
END MODULE test