MODULE Anagrafe IMPLICIT NONE TYPE data INTEGER :: g, m, a END TYPE data TYPE nascita CHARACTER(132) :: luogo TYPE(data) :: giorno END TYPE nascita CONTAINS SUBROUTINE Stampa(n) IMPLICIT NONE TYPE(nascita), INTENT(IN) :: n WRITE (*,'(3a,2(i2.2,"/"),i4)') & "Sono nato a ", TRIM(n%luogo), & ", il giorno ", n%giorno%g, n%giorno%m, n%giorno%a RETURN END SUBROUTINE Stampa END MODULE Anagrafe PROGRAM stampa_nascita USE Anagrafe IMPLICIT NONE TYPE(nascita) :: n n = nascita("Milano",data(29,2,2004)) PRINT *,"Sono nato a ",n CALL Stampa(n) STOP END PROGRAM stampa_nascita