-- CA11D010.A -- -- Grant of Unlimited Rights -- -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687, -- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained -- unlimited rights in the software and documentation contained herein. -- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making -- this public release, the Government intends to confer upon all -- recipients unlimited rights equal to those held by the Government. -- These rights include rights to use, duplicate, release or disclose the -- released technical data and computer software in whole or in part, in -- any manner and for any purpose whatsoever, and to have or permit others -- to do so. -- -- DISCLAIMER -- -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A -- PARTICULAR PURPOSE OF SAID MATERIAL. --* -- -- OBJECTIVE: -- See CA11D013.AM -- -- TEST DESCRIPTION: -- See CA11D013.AM -- -- TEST FILES: -- The following files comprise this test: -- -- FA11D00.A -- => CA11D010.A -- CA11D011.A -- CA11D012.A -- CA11D013.AM -- -- CHANGE HISTORY: -- 06 Dec 94 SAIC ACVC 2.0 -- 26 Apr 96 SAIC ACVC 2.1: Modified prologue. -- --! -- Child package of FA11D00. package FA11D00.CA11D010 is -- Add_Subtract_Complex procedure Add (Left, Right : in Complex_Type; -- Add two complex C : out Complex_Type); -- numbers. function Subtract (Left, Right : Complex_Type) -- Subtract two return Complex_Type; -- complex numbers. end FA11D00.CA11D010; -- Add_Subtract_Complex --=======================================================================-- with Report; package body FA11D00.CA11D010 is -- Add_Subtract_Complex procedure Add (Left, Right : in Complex_Type; C : out Complex_Type) is begin -- Zero is declared in parent package. if Left.Real < Zero.Real or else Right.Real < Zero.Real or else Left.Imag < Zero.Imag or else Right.Imag < Zero.Imag then raise Add_Error; -- Reference to exception in parent package. Report.Failed ("Program control not transferred by raise in " & "procedure Add"); else C.Real := (Left.Real + Right.Real); C.Imag := (Left.Imag + Right.Imag); end if; exception when Add_Error => TC_Handled_In_Child_Pkg_Proc := true; C := Check_Value; -- Reference to object in parent package. raise; -- Reraise the Add_Error exception in the subtest. Report.Failed ("Exception not reraised in handler"); when others => Report.Failed ("Unexpected exception raised in Add"); end Add; ----------------------------------------------------------- function Subtract (Left, Right : Complex_Type) return Complex_Type is begin -- Zero is declared in parent package. if Left.Real < Zero.Real or Right.Real < Zero.Real or Left.Imag < Zero.Imag or Right.Imag < Zero.Imag then raise Subtract_Error; -- Reference to exception in parent package. Report.Failed ("Program control not transferred by raise in " & "function Subtract"); else return ( Real => (Left.Real - Right.Real), Imag => (Left.Imag - Right.Imag) ); end if; exception when Subtract_Error => Report.Comment ("Exception is properly handled in Subtract"); TC_Handled_In_Child_Pkg_Func := true; return Check_Value; when others => Report.Failed ("Unexpected exception raised in Subtract"); end Subtract; end FA11D00.CA11D010; -- Add_Subtract_Complex