여기는 간단합니다. 또한 할당 할 수 없도록 할 수 있으며 할당 할 수있는 모든 요소를 삭제할 수 있습니다.
PROGRAM MAIN
...
real (kind = 8), DIMENSION(:), ALLOCATABLE :: dp
real (kind = 8), DIMENSION(-2:80) :: dv
...
ALLOCATE(dp(0:100))
...
CALL yourSub1('dp', dp)
CALL yourSub2('dv', dv)
...
IF(ALLOCATED(DP)) DEALLOCATE(DP)
END PROGRAM
SUBROUTINE YourSub1(Label, ddd)
IMPLICIT NONE
CHARACTER(LEN=*) , INTENT(IN ) :: Label
real(kind=8), DIMENSION(:), ALLOCATABLE, INTENT(INOUT) :: ddd
WRITE(*,22) Label, LBOUND(DDD, DIM=1), label, LBOUND(DDD, DIM=1)
22 FORMAT(' LBOUND(',A,')=',I7,' UBOUND(',A,'=',I6)
RETURN
END SUBROUTINE YourSub1
SUBROUTINE YourSub2(Label, ddd)
IMPLICIT NONE
CHARACTER(LEN=*) , INTENT(IN ) :: Label
real(kind=8), DIMENSION(:), INTENT(INOUT) :: ddd
WRITE(*,22) Label, LBOUND(DDD, DIM=1), label, LBOUND(DDD, DIM=1)
22 FORMAT(' LBOUND(',A,')=',I7,' UBOUND(',A,'=',I6)
RETURN
END SUBROUTINE YourSub2
이 질문은 현재 약간 분명합니다. '진짜 x (0 : *)'(단순화 된) 의미를 간단하게 묻고 있습니까? 그와 같은 가짜 인수로 서브 루틴을 호출하는 측면에서 특별히 특별한 것은 없습니다. – francescalus
@francescalus이 서브 루틴을 사용하려면''pbdv (v, x, dv, dp, pdf, pdd)'를 호출해야하지만이 서브 루틴을 호출하기 전에이 6 개의 변수를 정의해야합니다. 그러면 dv와 dp를 정의하기 위해 작성해야 할 문장은 무엇입니까? 'real (kind = 8) :: dp (0 : *)'이 잘못되었습니다. – zmwang
가짜 인수는 _assumed-size_입니다. 그게 의미하는 바를 읽을 수 있습니다. 본질적으로, 그들은 그들에게 전달 된 것들로부터 그들의 크기를 추측합니다. 즉, 서브 루틴을 호출하는 장소에는 특별한 선언이 필요하지 않습니다. 거기에는 단지 정상적인 배열입니다. – francescalus