PROGRAM array IMPLICIT NONE REAL, ALLOCATABLE, DIMENSION(:,:) ::a REAL :: res INTEGER ::n1,n2 INTERFACE SUBROUTINE sub(b,res) REAL,INTENT(OUT) :: res REAL, DIMENSION (:,:),INTENT(IN)::b REAL,DIMENSION (SIZE(b,1),SIZE(b,2)) :: work END SUBROUTINE sub END INTERFACE WRITE(*,*) "n1, n2?" READ (*,*) n1,n2 ALLOCATE(a(n1,n2)) CALL sub(a,res) WRITE(*,*) "Size(A) = ", res END PROGRAM array SUBROUTINE sub(b,res) !la subroutine รจ esterna IMPLICIT NONE REAL,INTENT(OUT) :: res REAL, DIMENSION (:,:),INTENT(IN)::b REAL,DIMENSION (SIZE(b,1),SIZE(b,2)) :: work WRITE(*,*) 'Bounds and size of work: ', & & LBOUND(work), UBOUND(work), SIZE(work) res=SIZE(b) END SUBROUTINE sub