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