1-- C43204C.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 AN ARRAY AGGREGATE WITH AN OTHERS CHOICE CAN APPEAR 27-- (AND BOUNDS ARE DETERMINED CORRECTLY) AS AN ACTUAL PARAMETER OF 28-- A GENERIC INSTANTIATION WHEN THE GENERIC FORMAL PARAMETER IS 29-- CONSTRAINED. 30 31-- HISTORY: 32-- JET 08/15/88 CREATED ORIGINAL TEST. 33 34WITH REPORT; USE REPORT; 35PROCEDURE C43204C IS 36 37 TYPE ARR10 IS ARRAY(IDENT_INT(1)..IDENT_INT(0)) OF INTEGER; 38 TYPE ARR11 IS ARRAY(INTEGER RANGE -3..3) OF INTEGER; 39 TYPE ARR12 IS ARRAY(IDENT_INT(-3)..IDENT_INT(3)) OF INTEGER; 40 41 TYPE ARR20 IS ARRAY(IDENT_INT(1)..IDENT_INT(0), 42 IDENT_INT(0)..IDENT_INT(-1)) OF INTEGER; 43 TYPE ARR21 IS ARRAY(INTEGER RANGE -1..1, 44 INTEGER RANGE -1..1) OF INTEGER; 45 TYPE ARR22 IS ARRAY(IDENT_INT(-1)..IDENT_INT(1), 46 IDENT_INT(-1)..IDENT_INT(1)) OF INTEGER; 47 TYPE ARR23 IS ARRAY(INTEGER'(-1)..1, 48 IDENT_INT(-1)..IDENT_INT(1)) OF INTEGER; 49 50 GENERIC 51 A : ARR10; 52 PROCEDURE GPROC10; 53 54 GENERIC 55 A : ARR11; 56 PROCEDURE GPROC11; 57 58 GENERIC 59 A : ARR12; 60 PROCEDURE GPROC12; 61 62 GENERIC 63 A : ARR20; 64 PROCEDURE GPROC20; 65 66 GENERIC 67 A : ARR21; 68 PROCEDURE GPROC21 (C : INTEGER); 69 70 GENERIC 71 A : ARR22; 72 PROCEDURE GPROC22; 73 74 GENERIC 75 A : ARR23; 76 PROCEDURE GPROC23; 77 78 PROCEDURE GPROC10 IS 79 BEGIN 80 IF A'LENGTH /= IDENT_INT(0) THEN 81 FAILED ("PROC10 ARRAY IS NOT NULL"); 82 END IF; 83 END GPROC10; 84 85 PROCEDURE GPROC11 IS 86 BEGIN 87 IF A'LENGTH /= IDENT_INT(7) OR 88 A'FIRST /= IDENT_INT(-3) OR 89 A'LAST /= IDENT_INT(3) THEN 90 FAILED ("INCORRECT LENGTH IN PROC11"); 91 END IF; 92 93 FOR I IN IDENT_INT(-3)..IDENT_INT(3) LOOP 94 IF IDENT_INT(A(I)) /= 1 THEN 95 FAILED ("INCORRECT VALUE OF COMPONENT " & 96 INTEGER'IMAGE(I) & ", PROC11"); 97 END IF; 98 END LOOP; 99 END GPROC11; 100 101 PROCEDURE GPROC12 IS 102 BEGIN 103 IF A'LENGTH /= IDENT_INT(7) THEN 104 FAILED ("INCORRECT LENGTH IN PROC12"); 105 END IF; 106 107 FOR I IN IDENT_INT(-3)..IDENT_INT(3) LOOP 108 IF IDENT_INT(A(I)) /= 2 THEN 109 FAILED ("INCORRECT VALUE OF COMPONENT " & 110 INTEGER'IMAGE(I) & ", PROC12"); 111 END IF; 112 END LOOP; 113 END GPROC12; 114 115 PROCEDURE GPROC20 IS 116 BEGIN 117 IF A'LENGTH(1) /= IDENT_INT(0) OR 118 A'LENGTH(2) /= IDENT_INT(0) THEN 119 FAILED ("GPROC20 ARRAY IS NOT NULL"); 120 END IF; 121 END GPROC20; 122 123 PROCEDURE GPROC21 (C : INTEGER) IS 124 BEGIN 125 FOR I IN INTEGER'(-1)..1 LOOP 126 FOR J IN INTEGER'(-1)..1 LOOP 127 IF IDENT_INT(A(I,J)) /= C THEN 128 FAILED ("INCORRECT VALUE OF COMPONENT (" & 129 INTEGER'IMAGE(I) & "," & 130 INTEGER'IMAGE(J) & "), GPROC21 CALL " & 131 "NUMBER" & INTEGER'IMAGE(C)); 132 END IF; 133 END LOOP; 134 END LOOP; 135 END GPROC21; 136 137 PROCEDURE GPROC22 IS 138 BEGIN 139 FOR I IN INTEGER'(-1)..1 LOOP 140 FOR J IN INTEGER'(-1)..1 LOOP 141 IF IDENT_INT(A(I,J)) /= 3 THEN 142 FAILED ("INCORRECT VALUE OF COMPONENT (" & 143 INTEGER'IMAGE(I) & "," & 144 INTEGER'IMAGE(J) & "), GPROC22"); 145 END IF; 146 END LOOP; 147 END LOOP; 148 END GPROC22; 149 150 PROCEDURE GPROC23 IS 151 BEGIN 152 FOR I IN INTEGER'(-1)..1 LOOP 153 FOR J IN INTEGER'(-1)..1 LOOP 154 IF IDENT_INT(A(I,J)) /= 4 THEN 155 FAILED ("INCORRECT VALUE OF COMPONENT (" & 156 INTEGER'IMAGE(I) & "," & 157 INTEGER'IMAGE(J) & "), GPROC23"); 158 END IF; 159 END LOOP; 160 END LOOP; 161 END GPROC23; 162 163 PROCEDURE PROC11 IS NEW GPROC11((1,1,1, OTHERS => 1)); 164 PROCEDURE PROC12 IS NEW GPROC12((OTHERS => 2)); 165 PROCEDURE PROC10 IS NEW GPROC10((OTHERS => 3)); 166 167 PROCEDURE PROC21 IS NEW GPROC21(((1,1,1), OTHERS => (1,1,1))); 168 PROCEDURE PROC22 IS NEW GPROC21(((2,OTHERS => 2), (2,OTHERS => 2), 169 (2,2,OTHERS => 2))); 170 PROCEDURE PROC23 IS NEW GPROC22((OTHERS => (OTHERS => 3))); 171 PROCEDURE PROC24 IS NEW GPROC23((OTHERS => (4,4,4))); 172 PROCEDURE PROC20 IS NEW GPROC20((OTHERS => (OTHERS => 5))); 173 174BEGIN 175 TEST ("C43204C", "CHECK THAT AN ARRAY AGGREGATE WITH AN OTHERS " & 176 "CHOICE CAN APPEAR (AND BOUNDS ARE DETERMINED " & 177 "CORRECTLY) AS AN ACTUAL PARAMETER OF A " & 178 "SUBPROGRAM CALL WHEN THE FORMAL PARAMETER IS " & 179 "CONSTRAINED"); 180 181 PROC11; 182 PROC12; 183 PROC10; 184 185 PROC21(1); 186 PROC22(2); 187 PROC23; 188 PROC24; 189 PROC20; 190 191 RESULT; 192END C43204C; 193