If the array has been allocated prior to being passed to the subroutine the subroutine is indifferent to the allocatable-ness, the effect is the same as if the array were static. There is nothing to object to, nor practice to avoid, in the snippets you show us. However, those snippets actually do very little and it is easy to think of ways to extend them to invalidate this advice.
Now do yourself a favour and change
Real*8, INTENT(Out), DIMENSION(1000) :: dblA
to
Real*8, INTENT(Out), DIMENSION(:) :: dblA
so that the subroutine works correctly whatever the size of the array it gets passed. It's probably also a bad idea to use dblA
as the name for both the dummy and actual arguments, you'll just confuse yourself.
And real*8
is not, and never has been, a standard-compliant way of declaring an 8-byte real. On this point, see numerous questions and answers here on SO.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…