-- 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