| -- CB5002A.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. |
| --* |
| -- OBJECTIVE: |
| -- CHECK THAT WHEN "TASKING_ERROR" IS RAISED EXPLICITLY OR BY |
| -- PROPAGATION WITHIN AN ACCEPT STATEMENT, THEN "TASKING_ERROR" |
| -- IS RAISED IN BOTH THE CALLING AND THE CALLED TASK. |
| |
| -- HISTORY: |
| -- DHH 03/31/88 CREATED ORIGINAL TEST. |
| |
| WITH REPORT; USE REPORT; |
| PROCEDURE CB5002A IS |
| |
| BEGIN |
| TEST("CB5002A", "CHECK THAT WHEN ""TASKING_ERROR"" IS RAISED " & |
| "EXPLICITLY OR BY PROPAGATION WITHIN AN ACCEPT " & |
| "STATEMENT, THEN ""TASKING_ERROR"" IS RAISED " & |
| "IN BOTH THE CALLING AND THE CALLED TASK"); |
| |
| DECLARE |
| TASK CALLING_EXP IS |
| ENTRY A; |
| END CALLING_EXP; |
| |
| TASK CALLED_EXP IS |
| ENTRY B; |
| ENTRY STOP; |
| END CALLED_EXP; |
| |
| TASK CALLING_PROP IS |
| ENTRY C; |
| END CALLING_PROP; |
| |
| TASK CALLED_PROP IS |
| ENTRY D; |
| ENTRY STOP; |
| END CALLED_PROP; |
| |
| TASK PROP IS |
| ENTRY E; |
| ENTRY STOP; |
| END PROP; |
| ----------------------------------------------------------------------- |
| TASK BODY CALLING_EXP IS |
| BEGIN |
| ACCEPT A DO |
| BEGIN |
| CALLED_EXP.B; |
| FAILED("EXCEPTION NOT RAISED IN CALLING " & |
| "TASK - EXPLICIT RAISE"); |
| EXCEPTION |
| WHEN TASKING_ERROR => |
| NULL; |
| WHEN OTHERS => |
| FAILED("WRONG EXCEPTION RAISED IN " & |
| "CALLING TASK - EXPLICIT RAISE"); |
| END; -- EXCEPTION |
| END A; |
| END CALLING_EXP; |
| |
| TASK BODY CALLED_EXP IS |
| BEGIN |
| BEGIN |
| ACCEPT B DO |
| RAISE TASKING_ERROR; |
| FAILED("EXCEPTION NOT RAISED IN CALLED " & |
| "TASK - EXPLICIT RAISE"); |
| END B; |
| EXCEPTION |
| WHEN TASKING_ERROR => |
| NULL; |
| WHEN OTHERS => |
| FAILED("WRONG EXCEPTION RAISED IN CALLED " & |
| "TASK - EXPLICIT RAISE"); |
| END; -- EXCEPTION BLOCK |
| |
| ACCEPT STOP; |
| END CALLED_EXP; |
| |
| ----------------------------------------------------------------------- |
| TASK BODY CALLING_PROP IS |
| BEGIN |
| ACCEPT C DO |
| BEGIN |
| CALLED_PROP.D; |
| FAILED("EXCEPTION NOT RAISED IN CALLING " & |
| "TASK - PROPAGATED RAISE"); |
| EXCEPTION |
| WHEN TASKING_ERROR => |
| NULL; |
| WHEN OTHERS => |
| FAILED("WRONG EXCEPTION RAISED IN " & |
| "CALLING TASK - PROPAGATED RAISE"); |
| END; -- EXCEPTION |
| END C; |
| END CALLING_PROP; |
| |
| TASK BODY CALLED_PROP IS |
| BEGIN |
| BEGIN |
| ACCEPT D DO |
| PROP.E; |
| FAILED("EXCEPTION NOT RAISED IN CALLED " & |
| "TASK - PROPAGATED RAISE"); |
| END D; |
| EXCEPTION |
| WHEN TASKING_ERROR => |
| NULL; |
| WHEN OTHERS => |
| FAILED("WRONG EXCEPTION RAISED IN CALLED " & |
| "TASK - PROPAGATED RAISE"); |
| END; -- EXCEPTION BLOCK; |
| |
| ACCEPT STOP; |
| END CALLED_PROP; |
| |
| TASK BODY PROP IS |
| BEGIN |
| BEGIN |
| ACCEPT E DO |
| RAISE TASKING_ERROR; |
| FAILED("EXCEPTION NOT RAISED IN PROPAGATE " & |
| "TASK - ACCEPT E"); |
| END E; |
| EXCEPTION |
| WHEN TASKING_ERROR => |
| NULL; |
| WHEN OTHERS => |
| FAILED("WRONG EXCEPTION RAISED IN PROP. TASK"); |
| END; -- EXCEPTION BLOCK |
| |
| ACCEPT STOP; |
| |
| END PROP; |
| ----------------------------------------------------------------------- |
| BEGIN |
| CALLING_EXP.A; |
| CALLING_PROP.C; |
| CALLED_EXP.STOP; |
| CALLED_PROP.STOP; |
| PROP.STOP; |
| |
| END; -- DECLARE |
| |
| RESULT; |
| END CB5002A; |