with Ada.Text_io; use Ada.Text_io;
with Ada.Integer_Text_io; use Ada.Integer_Text_io;

procedure enum3 is
   type Day is (Sunday, Monday, Tuesday, Wednesday, 
                Thursday, Friday, Saturday);

   package Day_IO is new Enumeration_IO(Day);

   use Day_IO;

   d: Day;

begin
   for i in Day'Range loop
      put(i); new_line;
   end loop;

   for i in Day'First .. Day'Last loop
      put(i); new_line;
   end loop;

   put(Day'Succ(Monday));   -- What does this do?
   new_line;

   d :=Day'Succ(Monday);  
   put(Day'Pred(d));        -- What does this do?
   new_line;

   put(Integer'Succ(3));

   -- put(Day'Pred(Sunday));        -- Compile error

   d := Sunday;
   put(Day'Pred(d));        -- Constraint error

end enum3;