Out of interest, what would the justification be for having several modules with the same name? I can define an overloaded function which uses a common name for multiple subroutines/functions using an interface:
interface print_number
subroutine print_real(x)
real :: x
end subroutine print_real
subroutine print_int(x)
integer :: x
end subroutine print_int
end interface print_number
So I could then just do call print_num(x) to get Fortran to pick what subroutine it wants (thinking aloud here, you all probably know this).