WITH Ada.Text_IO;
WITH Ada.Integer_Text_IO;
WITH Ada.Calendar;
PROCEDURE Time_of_Day IS
------------------------------------------------------------------
--| Displays the current time in hh:mm:ss form, 24-hour clock
--| Author: Michael B. Feldman, The George Washington University
--| Last Modified: July 1995
------------------------------------------------------------------

  TYPE DayInteger IS RANGE 0..86400;

  CurrentTime      : Ada.Calendar.Time;
  SecsPastMidnight : DayInteger;  -- could be larger than 32767
  MinsPastMidnight : Natural;
  Secs             : Natural;
  Mins             : Natural;
  Hrs              : Natural;

BEGIN -- Time_of_Day

  CurrentTime := Ada.Calendar.Clock;

  SecsPastMidnight := DayInteger(Ada.Calendar.Seconds(CurrentTime));
  MinsPastMidnight := Natural(SecsPastMidnight/60);
  Secs             := Natural(SecsPastMidnight REM 60);
  Mins             := MinsPastMidnight REM 60;
  Hrs              := MinsPastMidnight / 60;

  Ada.Text_IO.Put(Item => "The current time is ");
  Ada.Integer_Text_IO.Put (Item => Hrs, Width => 1);
  Ada.Text_IO.Put (Item => ':');

  IF Mins < 10 THEN
    Ada.Text_IO.Put (Item => '0');
  END IF;
  Ada.Integer_Text_IO.Put (Item => Mins, Width => 1);
  Ada.Text_IO.Put (Item => ':');

  IF Secs < 10 THEN
    Ada.Text_IO.Put (Item => '0');
  END IF;
  Ada.Integer_Text_IO.Put (Item => Secs, Width => 1);

END Time_of_Day;