-- Demonstrates a modular type with ada.text_io; use ada.text_io; procedure hours is type Hour is mod 12; -- Values 0 .. 11 -- Make a new IO package for type Hour package Hour_IO is new Ada.Text_IO.Modular_IO(Num => Hour); use Hour_IO; h: Hour := 10; begin for i in 1 .. 5 loop put(h); -- 10, 11, 0, 1, 2 h := h + 1; end loop; put(h); -- 3 -- h := 15; -- Compile error: value out of range end hours; -- Output: 10 11 0 1 2 3