1-- AD7203B.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 THE PREFIX OF THE 'SIZE' ATTRIBUTE CAN BE AN OBJECT, 27-- A TYPE, OR A SUBTYPE. 28 29-- HISTORY: 30-- BCB 09/27/88 CREATED ORIGINAL TEST BY MODIFYING AND RENAMING 31-- CD7203B.ADA. 32 33WITH SYSTEM; 34WITH REPORT; USE REPORT; 35PROCEDURE AD7203B IS 36 37 TYPE I_REC IS 38 RECORD 39 I1, I2 : INTEGER; 40 END RECORD; 41 42 I : INTEGER; 43 I_A : ARRAY (1 ..5) OF INTEGER; 44 I_R : I_REC; 45 46 I_SIZE : INTEGER := I'SIZE; 47 I_A_SIZE : INTEGER := I_A'SIZE; 48 I_R_SIZE : INTEGER := I_R'SIZE; 49 I_A_1_SIZE : INTEGER := I_A(1)'SIZE; 50 I_R_I1_SIZE : INTEGER := I_R.I1'SIZE; 51 52 TYPE FIXED IS DELTA 0.01 RANGE -1.0 .. 1.0; 53 TYPE FXD_REC IS 54 RECORD 55 FXD1, FXD2 : FIXED; 56 END RECORD; 57 58 FXD : FIXED; 59 FXD_A : ARRAY (1 .. 5) OF FIXED; 60 FXD_R : FXD_REC; 61 62 FXD_SIZE : INTEGER := FXD'SIZE; 63 FXD_A_SIZE : INTEGER := FXD_A'SIZE; 64 FXD_R_SIZE : INTEGER := FXD_R'SIZE; 65 FXD_A_1_SIZE : INTEGER := FXD_A(1)'SIZE; 66 FXD_R_FXD1_SIZE : INTEGER := FXD_R.FXD1'SIZE; 67 68 TYPE FLT_REC IS 69 RECORD 70 FLT1, FLT2 : FLOAT; 71 END RECORD; 72 73 FLT : FLOAT; 74 FLT_A : ARRAY (1 .. 5) OF FLOAT; 75 FLT_R : FLT_REC; 76 77 FLT_SIZE : INTEGER := FLT'SIZE; 78 FLT_A_SIZE : INTEGER := FLT_A'SIZE; 79 FLT_R_SIZE : INTEGER := FLT_R'SIZE; 80 FLT_A_1_SIZE : INTEGER := FLT_A(1)'SIZE; 81 FLT_R_FLT1_SIZE : INTEGER := FLT_R.FLT1'SIZE; 82 83 SUBTYPE TINY_INT IS INTEGER RANGE 0 .. 255; 84 TYPE TI_REC IS 85 RECORD 86 TI1, TI2 : TINY_INT; 87 END RECORD; 88 89 TI : TINY_INT; 90 TI_A : ARRAY (1 .. 5) OF TINY_INT; 91 TI_R : TI_REC; 92 93 TINY_INT_SIZE : INTEGER := TINY_INT'SIZE; 94 TI_SIZE : INTEGER := TI'SIZE; 95 TI_A_SIZE : INTEGER := TI_A'SIZE; 96 TI_R_SIZE : INTEGER := TI_R'SIZE; 97 TI_A_1_SIZE : INTEGER := TI_A(1)'SIZE; 98 TI_R_TI1_SIZE : INTEGER := TI_R.TI1'SIZE; 99 100 TYPE STR IS ARRAY (TINY_INT RANGE <>) OF CHARACTER; 101 TYPE STR_2 IS ARRAY (1 .. 127) OF CHARACTER; 102 TYPE STR_REC IS 103 RECORD 104 S1, S2 : STR (TINY_INT'FIRST .. TINY_INT'LAST); 105 END RECORD; 106 107 S : STR (TINY_INT'FIRST .. TINY_INT'LAST); 108 S_A : ARRAY (1 .. 5) OF STR (TINY_INT'FIRST .. TINY_INT'LAST); 109 S_R : STR_REC; 110 111 STR_2_SIZE : INTEGER := STR_2'SIZE; 112 S_SIZE : INTEGER := S'SIZE; 113 S_A_SIZE : INTEGER := S_A'SIZE; 114 S_R_SIZE : INTEGER := S_R'SIZE; 115 S_A_1_SIZE : INTEGER := S_A(1)'SIZE; 116 S_R_S1_SIZE : INTEGER := S_R.S1'SIZE; 117 118 TYPE C_REC IS 119 RECORD 120 C1, C2 : CHARACTER; 121 END RECORD; 122 123 C : CHARACTER; 124 C_A : ARRAY (1 .. 5) OF CHARACTER; 125 C_R : C_REC; 126 127 C_SIZE : INTEGER := C'SIZE; 128 C_A_SIZE : INTEGER := C_A'SIZE; 129 C_R_SIZE : INTEGER := C_R'SIZE; 130 C_A_1_SIZE : INTEGER := C_A(1)'SIZE; 131 C_R_C1_SIZE : INTEGER := C_R.C1'SIZE; 132 133 TYPE B_REC IS 134 RECORD 135 B1, B2 : BOOLEAN; 136 END RECORD; 137 138 B : BOOLEAN; 139 B_A : ARRAY (1 .. 5) OF BOOLEAN; 140 B_R : B_REC; 141 142 B_SIZE : INTEGER := B'SIZE; 143 B_A_SIZE : INTEGER := B_A'SIZE; 144 B_R_SIZE : INTEGER := B_R'SIZE; 145 B_A_1_SIZE : INTEGER := B_A(1)'SIZE; 146 B_R_B1_SIZE : INTEGER := B_R.B1'SIZE; 147 148 TYPE DISCR IS RANGE 1 .. 2; 149 TYPE DISCR_REC (D : DISCR := 1) IS 150 RECORD 151 CASE D IS 152 WHEN 1 => 153 C1_I : INTEGER; 154 WHEN 2 => 155 C2_I1 : INTEGER; 156 C2_I2 : INTEGER; 157 END CASE; 158 END RECORD; 159 160 DR_UC : DISCR_REC; 161 DR_C : DISCR_REC (2); 162 DR_A : ARRAY (1 .. 5) OF DISCR_REC; 163 164 DR_UC_SIZE : INTEGER := DR_UC'SIZE; 165 DR_C_SIZE : INTEGER := DR_C'SIZE; 166 DR_A_SIZE : INTEGER := DR_A'SIZE; 167 DR_UC_C1_I_SIZE : INTEGER := DR_UC.C1_I'SIZE; 168 DR_A_1_SIZE : INTEGER := DR_A(1)'SIZE; 169 170 TYPE ENUM IS (E1, E2, E3, E4); 171 TYPE ENUM_REC IS 172 RECORD 173 E1, E2 : ENUM; 174 END RECORD; 175 176 E : ENUM; 177 E_A : ARRAY (1 .. 5) OF ENUM; 178 E_R : ENUM_REC; 179 180 E_SIZE : INTEGER := E'SIZE; 181 E_A_SIZE : INTEGER := E_A'SIZE; 182 E_R_SIZE : INTEGER := E_R'SIZE; 183 E_A_1_SIZE : INTEGER := E_A(1)'SIZE; 184 E_R_E1_SIZE : INTEGER := E_R.E1'SIZE; 185 186 TASK TYPE TSK IS END TSK; 187 TYPE TSK_REC IS 188 RECORD 189 TSK1, TSK2 : TSK; 190 END RECORD; 191 192 T : TSK; 193 T_A : ARRAY (1 .. 5) OF TSK; 194 T_R : TSK_REC; 195 196 T_SIZE : INTEGER := T'SIZE; 197 T_A_SIZE : INTEGER := T_A'SIZE; 198 T_R_SIZE : INTEGER := T_R'SIZE; 199 T_A_1_SIZE : INTEGER := T_A(1)'SIZE; 200 T_R_TSK1_SIZE : INTEGER := T_R.TSK1'SIZE; 201 202 TYPE ACC IS ACCESS INTEGER; 203 TYPE ACC_REC IS 204 RECORD 205 A1, A2 : ACC; 206 END RECORD; 207 208 A : ACC; 209 A_A : ARRAY (1 .. 5) OF ACC; 210 A_R : ACC_REC; 211 212 A_SIZE : INTEGER := A'SIZE; 213 A_A_SIZE : INTEGER := A_A'SIZE; 214 A_R_SIZE : INTEGER := A_R'SIZE; 215 A_A_1_SIZE : INTEGER := A_A(1)'SIZE; 216 A_R_A1_SIZE : INTEGER := A_R.A1'SIZE; 217 218 PACKAGE PK IS 219 TYPE PRV IS PRIVATE; 220 TYPE PRV_REC IS 221 RECORD 222 P1, P2 : PRV; 223 END RECORD; 224 225 TYPE LPRV IS LIMITED PRIVATE; 226 TYPE LPRV_REC IS 227 RECORD 228 LP1, LP2 : LPRV; 229 END RECORD; 230 PRIVATE 231 TYPE PRV IS NEW INTEGER; 232 233 TYPE LPRV IS NEW INTEGER; 234 END PK; 235 USE PK; 236 237 P : PRV; 238 P_A : ARRAY (1 .. 5) OF PRV; 239 P_R : PRV_REC; 240 241 P_SIZE : INTEGER := P'SIZE; 242 P_A_SIZE : INTEGER := P_A'SIZE; 243 P_R_SIZE : INTEGER := P_R'SIZE; 244 P_A_1_SIZE : INTEGER := P_A(1)'SIZE; 245 P_R_P1_SIZE : INTEGER := P_R.P1'SIZE; 246 247 LP : LPRV; 248 LP_A : ARRAY (1 .. 5) OF LPRV; 249 LP_R : LPRV_REC; 250 251 LP_SIZE : INTEGER := LP'SIZE; 252 LP_A_SIZE : INTEGER := LP_A'SIZE; 253 LP_R_SIZE : INTEGER := LP_R'SIZE; 254 LP_A_1_SIZE : INTEGER := LP_A(1)'SIZE; 255 LP_R_LP1_SIZE : INTEGER := LP_R.LP1'SIZE; 256 257 TASK BODY TSK IS 258 BEGIN 259 NULL; 260 END TSK; 261 262BEGIN 263 TEST ("AD7203B", "CHECK THAT THE PREFIX OF THE 'SIZE' ATTRIBUTE " & 264 "CAN BE AN OBJECT, A TYPE, OR A SUBTYPE"); 265 266 RESULT; 267END AD7203B; 268