MODULE dati IMPLICIT NONE INTEGER, PARAMETER :: tipo=KIND(1) END MODULE dati PROGRAM importa USE dati IMPLICIT NONE INTEGER(tipo) :: a, b INTERFACE SUBROUTINE incrementa(r,v) IMPORT :: tipo IMPLICIT NONE INTEGER(tipo), INTENT(OUT) :: r INTEGER(tipo), INTENT(IN) :: v END SUBROUTINE incrementa END INTERFACE a = 1 WRITE(*,*) "A + ?" READ(*,*) b CALL incrementa(a,b) WRITE(*,*) "Risultato: ",a STOP END PROGRAM importa SUBROUTINE incrementa(r,v) USE dati IMPLICIT NONE INTEGER(tipo), INTENT(OUT) :: r INTEGER(tipo), INTENT(IN) :: v r = r+v RETURN END SUBROUTINE incrementa