MODULE Midden_mod IMPLICIT NONE TYPE Midden PRIVATE CHARACTER(LEN=16) :: location REAL, DIMENSION(:), ALLOCATABLE :: data END TYPE Midden CONTAINS PURE FUNCTION create (name, values) IMPLICIT NONE TYPE(Midden) :: create CHARACTER(LEN=*), INTENT(IN) :: name REAL, DIMENSION(:), INTENT(IN) :: values create%location = name ALLOCATE(create%data(1:UBOUND(values, 1))) create%data = values END FUNCTION create SUBROUTINE print (entry) IMPLICIT NONE TYPE(Midden) :: entry IF (entry%location /= '' .OR. UBOUND(entry%data, 1) > 0) THEN PRINT *, entry%location, entry%data ELSE PRINT *, 'Null entry' END IF END SUBROUTINE print END MODULE Midden_mod