PROGRAM dimensiona IMPLICIT NONE REAL(8), DIMENSION(:,:), ALLOCATABLE :: a INTEGER :: nd, i, n ! INTERFACE SUBROUTINE inizializza(n,a) IMPLICIT NONE REAL(8), DIMENSION(:,:), ALLOCATABLE, INTENT(INOUT) :: a INTEGER, INTENT(IN) :: n END SUBROUTINE inizializza SUBROUTINE calcola(a) IMPLICIT NONE REAL(8), DIMENSION(:,:), ALLOCATABLE, INTENT(INOUT) :: a END SUBROUTINE calcola SUBROUTINE presenta(a) IMPLICIT NONE REAL(8), DIMENSION(:,:), ALLOCATABLE, INTENT(INOUT) :: a END SUBROUTINE presenta END INTERFACE ! nd = 1 DO WHILE ( nd > 0 ) PRINT*,"Dimensioni?" READ*,nd CALL inizializza(nd,a) CALL calcola(a) CALL presenta(a) DEALLOCATE(a) END DO ! STOP END PROGRAM dimensiona