MODULE base IMPLICIT NONE CONTAINS ELEMENTAL FUNCTION SomPro(a,b,c) RESULT(r) IMPLICIT NONE REAL, INTENT(IN) :: a,b,c REAL :: r r = a + (b*c) RETURN END FUNCTION END MODULE base PROGRAM SomProVet USE base IMPLICIT NONE REAL :: x=1.0,y,z REAL, DIMENSION(:), ALLOCATABLE :: vx,vy,vz INTEGER :: n=1, st DO WHILE(x /= 0.0) PRINT*,"Trasmetti 3 valori reali x, y, z:" READ*,x,y,z PRINT*,"x + y*z = ",SomPro(x,y,z) PRINT*,"Trasmetti la lunghezza del vettore:" READ*,n ALLOCATE(vx(n),vy(n),vz(n),STAT=st) IF (st /= 0 ) STOP "Errore allocazione vettori" vx=x; vy=y; vz=z PRINT*,"Il risultato vettoriale e' ",SomPro(vx,vy,vz) END DO STOP END PROGRAM SomProVet