Each distinct type needs its own I/O library.
General form:
package type_io is new TEXT_IO.basetype_io (typename);
Subtypes don't need separate I/O libraries, but the I/O libraries for the base types must be present.
package int_io is new TEXT_IO.INTEGER_IO (INTEGER);
type ages is new INTEGER range 0 .. 110;
package ages_io is new TEXT_IO.INTEGER_IO (ages);
type measurement is digits 10;
package measurement_io is new TEXT_IO.FLOAT_IO (measurement);
type suits is (clubs, diamonds, hearts, spades);
package suits_io is new TEXT_IO.ENUMERATION_IO (suits);
type colours is (white, red, yellow, green, brown, blue, pink, black);
package colours_io is new TEXT_IO.ENUMERATION_IO (colours);