1-- C91004B.ADA 2 3-- Grant of Unlimited Rights 4-- 5-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687, 6-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained 7-- unlimited rights in the software and documentation contained herein. 8-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making 9-- this public release, the Government intends to confer upon all 10-- recipients unlimited rights equal to those held by the Government. 11-- These rights include rights to use, duplicate, release or disclose the 12-- released technical data and computer software in whole or in part, in 13-- any manner and for any purpose whatsoever, and to have or permit others 14-- to do so. 15-- 16-- DISCLAIMER 17-- 18-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR 19-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED 20-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE 21-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE 22-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A 23-- PARTICULAR PURPOSE OF SAID MATERIAL. 24--* 25-- OBJECTIVE: 26-- CHECK THAT A TASK (TYPE) IDENTIFIER, WHEN USED WITHIN ITS OWN 27-- BODY, REFERS TO THE EXECUTING TASK. 28 29-- TEST USING IDENTIFIER IN ABORT STATEMENT, AS AN EXPRESSION IN 30-- A MEMBERSHIP TEST, AND THE PREFIX OF 'CALLABLE AND 31-- 'TERMINATED. 32 33-- HISTORY: 34-- WEI 3/ 4/82 CREATED ORIGINAL TEST. 35-- RJW 11/13/87 RENAMED TEST FROM C910BDA.ADA. ADDED CHECKS FOR 36-- MEMBERSHIP TEST, AND 'CALLABLE AND 'TERMINATED 37-- ATTRIBUTES. 38 39WITH REPORT; USE REPORT; 40PROCEDURE C91004B IS 41 42 TYPE I0 IS RANGE 0..1; 43 SUBTYPE ARG IS NATURAL RANGE 0..9; 44 SPYNUMB : NATURAL := 0; 45 46 TASK TYPE TT1 IS 47 ENTRY E1 (P1 : IN I0; P2 : ARG); 48 ENTRY BYE; 49 END TT1; 50 51 SUBTYPE SUB_TT1 IS TT1; 52 53 OBJ_TT1 : ARRAY (NATURAL RANGE 1..2) OF TT1; 54 55 PROCEDURE PSPY_NUMB (DIGT: IN ARG) IS 56 BEGIN 57 SPYNUMB := 10*SPYNUMB+DIGT; 58 END PSPY_NUMB; 59 60 TASK BODY TT1 IS 61 BEGIN 62 IF TT1 NOT IN SUB_TT1 THEN 63 FAILED ("INCORRECT RESULTS FOR MEMBERSHIP TEST"); 64 END IF; 65 66 IF NOT TT1'CALLABLE THEN 67 FAILED ("INCORRECT RESULTS FOR 'CALLABLE"); 68 END IF; 69 70 IF TT1'TERMINATED THEN 71 FAILED ("INCORRECT RESULTS FOR 'TERMINATED"); 72 END IF; 73 74 ACCEPT E1 (P1 : IN I0; P2 : ARG) DO 75 IF P1 = 1 THEN 76 ABORT TT1; 77 ACCEPT BYE; -- WILL DEADLOCK IF NOT ABORTED. 78 END IF; 79 PSPY_NUMB (ARG (P2)); 80 END E1; 81 82 END TT1; 83 84BEGIN 85 86 TEST ("C91004B", "TASK IDENTIFIER IN OWN BODY"); 87 88 BEGIN 89 OBJ_TT1 (1).E1 (1,1); 90 FAILED ("NO TASKING_ERROR RAISED"); 91-- ABORT DURING RENDEVOUS RAISES TASKING ERROR 92 EXCEPTION 93 WHEN TASKING_ERROR => 94 NULL; 95 WHEN OTHERS => 96 FAILED ("OTHER EXCEPTION RAISED"); 97 END; 98 99 OBJ_TT1 (2).E1 (0,2); 100 101 IF SPYNUMB /= 2 THEN 102 FAILED ("WRONG TASK OBJECT REFERENCED"); 103 COMMENT ("ACTUAL ORDER WAS:" & INTEGER'IMAGE(SPYNUMB)); 104 END IF; 105 106 RESULT; 107 108END C91004B; 109