1-- C95090A.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-- CHECK THAT ARRAYS THAT ARE COMPONENTS OF RECORDS ARE PASSED CORRECTLY 26-- TO ENTRIES. SPECIFICALLY, 27-- (A) CHECK ALL PARAMETER MODES. 28 29-- GLH 7/25/85 30 31WITH REPORT; USE REPORT; 32PROCEDURE C95090A IS 33 34BEGIN 35 TEST ("C95090A", "CHECK THAT ARRAYS WHICH ARE COMPONENTS OF " & 36 "RECORDS ARE PASSED CORRECTLY TO ENTRIES"); 37 38 -------------------------------------------- 39 40 DECLARE -- (A) 41 42 TYPE ARRAY_TYPE IS ARRAY (POSITIVE RANGE <>) OF INTEGER; 43 SUBTYPE ARRAY_SUBTYPE IS ARRAY_TYPE (1..IDENT_INT(5)); 44 45 TYPE RECORD_TYPE IS 46 RECORD 47 I : INTEGER; 48 A : ARRAY_SUBTYPE; 49 END RECORD; 50 51 REC : RECORD_TYPE := (I => 23, 52 A => (1..3 => IDENT_INT(7), 4..5 => 9)); 53 BOOL : BOOLEAN; 54 55 TASK T1 IS 56 ENTRY E1 (ARR : ARRAY_TYPE); 57 END T1; 58 59 TASK BODY T1 IS 60 BEGIN 61 ACCEPT E1 (ARR : ARRAY_TYPE) DO 62 IF ARR /= (7, 7, 7, 9, 9) THEN 63 FAILED ("IN PARAMETER NOT PASSED CORRECTLY"); 64 END IF; 65 IF ARR'FIRST /= IDENT_INT (1) OR 66 ARR'LAST /= IDENT_INT (5) THEN 67 FAILED ("WRONG BOUNDS FOR IN PARAMETER"); 68 END IF; 69 END E1; 70 END T1; 71 72 TASK T2 IS 73 ENTRY E2 (ARR : IN OUT ARRAY_TYPE); 74 END T2; 75 76 TASK BODY T2 IS 77 BEGIN 78 ACCEPT E2 (ARR : IN OUT ARRAY_TYPE) DO 79 IF ARR /= (7, 7, 7, 9, 9) THEN 80 FAILED ("IN OUT PARAMETER NOT PASSED " & 81 "CORRECTLY"); 82 END IF; 83 IF ARR'FIRST /= IDENT_INT (1) OR 84 ARR'LAST /= IDENT_INT (5) THEN 85 FAILED ("WRONG BOUNDS FOR IN OUT PARAMETER"); 86 END IF; 87 ARR := (ARR'RANGE => 5); 88 END E2; 89 END T2; 90 91 TASK T3 IS 92 ENTRY E3 (ARR : OUT ARRAY_TYPE); 93 END T3; 94 95 TASK BODY T3 IS 96 BEGIN 97 ACCEPT E3 (ARR : OUT ARRAY_TYPE) DO 98 IF ARR'FIRST /= IDENT_INT (1) OR 99 ARR'LAST /= IDENT_INT (5) THEN 100 FAILED ("WRONG BOUNDS FOR OUT PARAMETER"); 101 END IF; 102 ARR := (ARR'RANGE => 3); 103 END E3; 104 END T3; 105 106 BEGIN -- (A) 107 108 T1.E1 (REC.A); 109 IF REC.A /= (7, 7, 7, 9, 9) THEN 110 FAILED ("IN PARAM CHANGED BY PROCEDURE"); 111 END IF; 112 113 T2.E2 (REC.A); 114 IF REC.A /= (5, 5, 5, 5, 5) THEN 115 FAILED ("IN OUT PARAM RETURNED INCORRECTLY"); 116 END IF; 117 118 T3.E3 (REC.A); 119 IF REC.A /= (3, 3, 3, 3, 3) THEN 120 FAILED ("OUT PARAM RETURNED INCORRECTLY"); 121 END IF; 122 123 END; -- (A) 124 125 -------------------------------------------- 126 127 RESULT; 128END C95090A; 129