-- { dg-do compile } -- { dg-options "-Os -g" } with Opt7_Pkg; package body Opt7 is procedure Parse (Str : String; Time_Type : out time_t; Abs_Time : out Time; Delt_Time : out Duration) is Year : Year_Number; Month : Month_Number; Day : Day_Number; Minute : Integer := 0; Idx : Integer := Str'First; Ch : Character := Str (Idx); Current_Time : Time; begin if Ch = '-' then Time_Type := Absolute_Time; Current_Time := Clock; Day := Ada.Calendar.Day (Current_Time); Month := Ada.Calendar.Month (Current_Time); Year := Ada.Calendar.Year (Current_Time); else Time_Type := Delta_Time; end if; while Ch in '0' .. '9' loop Minute := Minute + Character'Pos (Ch); Idx := Idx + 1; Ch := Str (Idx); end loop; if Time_Type = Absolute_Time then Abs_Time := Time_Of (Year, Month, Day, Day_Duration (1)); else Delt_Time := Duration (Float (Minute)); end if; exception when others => Opt7_Pkg.My_Raise_Exception; end; end Opt7;