-- C94001E.ADA

--                             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.
--*
-- CHECK THAT A TASK IS ALSO COMPLETED IF AN EXCEPTION IS RAISED BY
-- THE EXECUTION OF ITS SEQUENCE OF STATEMENTS.
-- THIS MUST HOLD FOR BOTH CASES WHERE A HANDLER IS PRESENT OR NOT.
--    VERSION WITH EXCEPTION HANDLER.

-- WEI  3/ 4/82
-- JWC 6/28/85   RENAMED FROM C940AGA-B.ADA
-- RLB 06/29/01  CORRECTED TO ALLOW AGGRESSIVE OPTIMIZATION.

WITH REPORT;
 USE REPORT;
PROCEDURE C94001E IS

     SUBTYPE ARG IS NATURAL RANGE 0..9;
     SPYNUMB : NATURAL := 0;

     PROCEDURE PSPY_NUMB (DIGT: IN ARG) IS
     BEGIN
          SPYNUMB := 10*SPYNUMB+DIGT;
     END PSPY_NUMB;

BEGIN

     TEST ("C94001E", "TASK COMPLETION BY EXCEPTION");

BLOCK:
     DECLARE

          TASK T1;

          TASK BODY T1 IS
               TYPE I1 IS RANGE 0 .. 1;
               OBJ_I1 : I1;
          BEGIN
               OBJ_I1 := I1(IDENT_INT(2));  -- CONSTRAINT_ERROR.
               IF OBJ_I1 /= I1(IDENT_INT(0)) THEN
                  PSPY_NUMB (1);
               ELSE
                  PSPY_NUMB (2);
               END IF;
          EXCEPTION
               WHEN CONSTRAINT_ERROR => NULL;
               WHEN OTHERS => FAILED ("OTHER EXCEPTION RAISED");
          END T1;

     BEGIN
          NULL;
     END BLOCK;

     IF SPYNUMB /= 0 THEN
          FAILED ("TASK T1 NOT COMPLETED AFTER EXCEPTION");
          COMMENT ("ACTUAL ORDER WAS:" & INTEGER'IMAGE(SPYNUMB));
     END IF;

     RESULT;

END C94001E;
