1-- C52103F.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 LENGTHS MUST MATCH IN ARRAY AND SLICE ASSIGNMENTS. 26-- MORE SPECIFICALLY, TEST THAT ARRAY ASSIGNMENTS WITH MATCHING 27-- LENGTHS DO NOT CAUSE CONSTRAINT_ERROR TO BE RAISED AND 28-- ARE PERFORMED CORRECTLY. 29-- (OVERLAPS BETWEEN THE OPERANDS OF THE ASSIGNMENT STATEMENT 30-- ARE TREATED ELSEWHERE.) 31 32-- DIVISION B : STATICALLY-DETERMINABLE NULL LENGTHS. 33 34 35-- RM 07/20/81 36-- SPS 3/22/83 37 38 39WITH REPORT; 40PROCEDURE C52103F IS 41 42 USE REPORT ; 43 44BEGIN 45 46 TEST( "C52103F" , "CHECK THAT IN ARRAY ASSIGNMENTS AND IN SLICE" & 47 " ASSIGNMENTS THE LENGTHS MUST MATCH" ); 48 49 50 -- IN THIS TEST WE CAN'T USE AGGREGATE ASSIGNMENT (EXCEPT WHEN 51 -- THE AGGREGATES ARE STRING LITERALS); THEREFORE: 52 -- 53 -- (1) ARRAYS WILL BE INITIALIZED BY INDIVIDUAL ASSIGNMENTS; 54 -- (2) CAN'T USE NON-NULL CONSTANT ARRAYS. 55 56 57 -- WE ASSUME THAT IN AN ARRAY_TYPE_DEFINITION THE INDEX PORTION 58 -- AND THE COMPONENT_TYPE PORTION ARE FUNCTIONALLY ORTHOGONAL 59 -- ALSO AT THE IMPLEMENTATION LEVEL, I.E. THAT THE CORRECTNESS 60 -- OF THE ACCESSING MECHANISM FOR ARRAYS DOES NOT DEPEND ON 61 -- COMPONENT_TYPE. ACCORDINGLY WE ARE TESTING FOR SOME BUT 62 -- NOT ALL KINDS OF COMPONENT_TYPE. (COMPONENT_TYPES INCLUDED: 63 -- INTEGER , CHARACTER , BOOLEAN .) 64 65 66 -- CASES DISTINGUISHED: ( 8 SELECTED CASES ARE IMPLEMENTED) 67 -- 68 -- ( THE SELECTIONS ARE 7 , 8 , 9 , 69 -- AND PRECISELY 5 CASES FROM THE 70 -- TWO 5-CASE SERIES 2-3-4-5-6 AND 71 -- 10-11-12-13-14) 72 -- 73 -- ( IN THE CURRENT DIVISION, THE 5 74 -- FLOATING SELECTIONS ARE 10-3-12- 75 -- -5-14 ; THUS THE 8 SELECTIONS ARE 76 -- 10-3-12-5-14-7-8-9 (IN THIS ORDER 77 -- ).) 78 -- 79 -- 80 -- ( EACH DIVISION COMPRISES 3 FILES, 81 -- COVERING RESPECTIVELY THE FIRST 82 -- 3 , NEXT 2 , AND LAST 3 OF THE 8 83 -- SELECTIONS FOR THE DIVISION.) 84 -- 85 -- 86 -- (1) ARRAY OBJECTS DECLARED IN THE SAME DECLARATION. 87 -- (TWO-DIMENSIONAL; NON-CONSTRAINABLE TYPEMARK.) 88 -- 89 -- (THIS WILL BE THE ONLY CASE INVOLVING OBJECTS DECLARED 90 -- IN THE SAME DECLARATION.) 91 -- 92 -- 93 -- (2) MULTIDIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS WERE 94 -- DEFINED WITHOUT EVER USING THE "BOX" COMPOUND SYMBOL. 95 -- (TWO-DIMENSIONAL ARRAYS OF INTEGERS.) 96 -- 97 -- (SLICING IS ILLEGAL; SINCE IN THIS TEST WE ARE NEVER 98 -- USING AGGREGATES 99 -- (EXCEPT FOR ONE-DIMENSIONAL ARRAYS OF CHARACTERS; 100 -- SEE (5) ) 101 -- AND WE ARE NOT USING CONVERSION-TO-CONSTRAINED-TYPEMARKS 102 -- (AS IN T1(ARR) , WHERE ARR IS AN ARRAY 103 -- OBJECT AND T1 IS AN ARRAY TYPEMARK SIMILAR 104 -- -- AS MORE PRECISELY SPECIFIED IN RM 4.6(B) -- 105 -- TO THE TYPEMARK OF ARR ), 106 -- THE ARRAY ASSIGNMENT CANNOT INVOLVE ANY SLIDING, 107 -- AND THE TYPEMARKS ARE ESSENTIALLY THE SAME.) 108 -- 109 -- 110 -- (3) UNSLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS 111 -- WERE DEFINED WITHOUT EVER USING THE "BOX" SYMBOL 112 -- AND FOR WHICH THE COMPONENT TYPE IS NOT 'CHARACTER' . 113 -- ((ONE-DIMENSIONAL) ARRAYS OF INTEGERS.) 114 -- 115 -- (SINCE WE ARE NOT USING AGGREGATES 116 -- AND WE ARE NOT USING CONVERSION-TO-CONSTRAINED-TYPEMARKS, 117 -- THE ARRAY ASSIGNMENT CANNOT INVOLVE ANY SLIDING, 118 -- AND THE TYPEMARKS ARE ESSENTIALLY THE SAME.) 119 -- 120 -- 121 -- (4) SLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS 122 -- WERE DEFINED WITHOUT EVER USING THE "BOX" SYMBOL 123 -- AND FOR WHICH THE COMPONENT TYPE IS NOT 'CHARACTER' . 124 -- ((ONE-DIMENSIONAL) ARRAYS OF BOOLEANS.) 125 -- 126 -- (THE ASSIGNMENT MAY REQUIRE SLIDING.) 127 -- 128 -- (MOST SUBSEQUENT SUBCASES IN THIS TEST (OTHER THAN NULL 129 -- ASSIGNMENTS) WILL INVOLVE SLIDING; WE ASSUME THAT 130 -- SUBCASES WHICH WORK IN CONJUNCTION WITH SLIDING WORK 131 -- ALSO WHEN NO SLIDING IS INVOLVED.) 132 -- 133 -- 134 -- (5) UNSLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS 135 -- WERE DEFINED WITHOUT EVER USING THE "BOX" SYMBOL 136 -- AND FOR WHICH THE COMPONENT TYPE IS 'CHARACTER' . 137 -- 138 -- (STRING LITERALS ARE THE ONLY AGGREGATES WE ARE USING 139 -- IN THIS TEST. TO FORCE SLIDING, THE LOWER LIMIT IMPLIED 140 -- BY THE TYPEMARK WILL NOT BE 1 .) 141 -- 142 -- 143 -- (6) SLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS 144 -- WERE DEFINED WITHOUT EVER USING THE "BOX" SYMBOL 145 -- AND FOR WHICH THE COMPONENT TYPE IS 'CHARACTER' . 146 -- 147 -- 148 -- (7) UNSLICED OBJECTS OF THE PREDEFINED TYPE 'STRING' (BY 149 -- THEMSELVES). 150 -- 151 -- 152 -- (8) SLICED OBJECTS OF THE PREDEFINED TYPE 'STRING' , WITH 153 -- STRING LITERALS. 154 -- 155 -- 156 -- (9) SLICED OBJECTS OF THE PREDEFINED TYPE 'STRING' (BY 157 -- THEMSELVES). 158 -- 159 -- 160 -- (-) CONSTRAINABLE TYPES: ONLY SUBTESTS 2, 3, 4, 5, 6 161 -- WILL BE REPLICATED -- AS SUBTESTS 10, 11, 12, 13, 14 . 162 -- 163 -- 164 -- (10) MULTIDIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS WERE 165 -- DEFINED USING THE "BOX" COMPOUND SYMBOL. 166 -- (TWO-DIMENSIONAL ARRAYS OF INTEGERS.) 167 -- 168 -- 169 -- (11) UNSLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS 170 -- WERE DEFINED USING THE "BOX" SYMBOL 171 -- AND FOR WHICH THE COMPONENT TYPE IS NOT 'CHARACTER' . 172 -- ((ONE-DIMENSIONAL) ARRAYS OF INTEGERS.) 173 -- 174 -- 175 -- (12) SLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS 176 -- WERE DEFINED USING THE "BOX" SYMBOL 177 -- AND FOR WHICH THE COMPONENT TYPE IS NOT 'CHARACTER' . 178 -- ((ONE-DIMENSIONAL) ARRAYS OF BOOLEANS.) 179 -- 180 -- 181 -- (13) UNSLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS 182 -- WERE DEFINED USING THE "BOX" SYMBOL 183 -- AND FOR WHICH THE COMPONENT TYPE IS 'CHARACTER' . 184 -- 185 -- (STRING LITERALS ARE THE ONLY AGGREGATES WE ARE USING 186 -- IN THIS TEST. TO FORCE SLIDING, THE LOWER LIMIT IMPLIED 187 -- BY THE TYPEMARK WILL NOT BE 1 .) 188 -- 189 -- 190 -- (14) SLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS 191 -- WERE DEFINED USING THE "BOX" SYMBOL 192 -- AND FOR WHICH THE COMPONENT TYPE IS 'CHARACTER' . 193 -- 194 -- 195 -- 196 -- (-) SPECIAL CASES: SUPERLONG ARRAYS.. (TREATED FOR DYNAMIC 197 -- ARRAYS ONLY, 198 -- DIVISIONS C AND D .) 199 -- 200 -- 201 -- (-) THE DYNAMIC-ARRAY COUNTERPARTS OF THESE TESTS ARE IN DI- 202 -- VISIONS C (FOR NON-NULL ARRAYS) AND D (FOR NULL ARRAYS). 203 -- 204 -- 205 206 207 ------------------------------------------------------------------- 208 209 -- (10) MULTIDIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS WERE 210 -- DEFINED USING THE "BOX" COMPOUND SYMBOL. 211 -- (TWO-DIMENSIONAL ARRAYS OF INTEGERS.) 212 213 DECLARE 214 215 TYPE TABOX0 IS ARRAY( INTEGER RANGE <> , INTEGER RANGE <> 216 ) OF INTEGER ; 217 218 SUBTYPE TABOX01 IS TABOX0( 1..0 , 0..7 ); 219 SUBTYPE TABOX02 IS TABOX0 ; 220 221 ARRX01 : TABOX01 ; 222 ARRX02 : TABOX02( 7..6 , 20..27 ); 223 224 BEGIN 225 226 -- ARRAY ASSIGNMENT: 227 228 ARRX02 := ARRX01 ; 229 230 EXCEPTION 231 232 WHEN OTHERS => 233 FAILED( "EXCEPTION RAISED - SUBTEST 10" ); 234 235 END ; 236 237 238 ------------------------------------------------------------------- 239 240 -- (3) UNSLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS 241 -- WERE DEFINED WITHOUT EVER USING THE "BOX" SYMBOL 242 -- AND FOR WHICH THE COMPONENT TYPE IS NOT 'CHARACTER' . 243 -- ((ONE-DIMENSIONAL) ARRAYS OF INTEGERS.) 244 245 DECLARE 246 247 TYPE TA3 IS ARRAY( INTEGER RANGE 100..99 ) OF INTEGER ; 248 249 SUBTYPE TA31 IS TA3 ; 250 SUBTYPE TA32 IS TA3 ; 251 252 ARR31 : TA31 ; 253 ARR32 : TA32 ; 254 255 BEGIN 256 257 -- ARRAY ASSIGNMENT: 258 259 ARR32 := ARR31 ; 260 261 EXCEPTION 262 263 WHEN OTHERS => 264 FAILED( "EXCEPTION RAISED - SUBTEST 3" ); 265 266 END ; 267 268 269 ------------------------------------------------------------------- 270 271 -- (12) SLICED ONE-DIMENSIONAL ARRAY OBJECTS WHOSE TYPEMARKS 272 -- WERE DEFINED USING THE "BOX" SYMBOL 273 -- AND FOR WHICH THE COMPONENT TYPE IS NOT 'CHARACTER' . 274 -- ((ONE-DIMENSIONAL) ARRAYS OF BOOLEANS.) 275 276 DECLARE 277 278 TYPE TABOX5 IS ARRAY( INTEGER RANGE <> ) OF BOOLEAN ; 279 280 SUBTYPE TABOX51 IS TABOX5( 1..5 ); 281 282 ARRX51 : TABOX51 ; 283 ARRX52 : TABOX5( 5..9 ); 284 285 BEGIN 286 287 -- INITIALIZATION OF RHS ARRAY: 288 289 FOR I IN 1..5 LOOP 290 ARRX51( I ) := FALSE ; -- VALUES WILL BE: F T F F T 291 END LOOP; 292 293 ARRX51(2) := TRUE ; 294 295 ARRX51(5) := TRUE ; -- RHS VALUES ARE: F T F F T 296 297 298 -- INITIALIZATION OF LHS ARRAY: 299 300 FOR I IN 5..9 LOOP 301 ARRX52( I ) := TRUE ; -- VALUES WILL BE: T F T T F 302 END LOOP; 303 304 ARRX52(6) := FALSE ; 305 306 ARRX52(9) := FALSE ; -- LHS VALUES ARE: T F T T F 307 308 309 -- NULL SLICE ASSIGNMENT: 310 311 ARRX52(6..5) := ARRX51(4..3) ; 312 313 314 -- CHECKING THE VALUES AFTER THE SLICE ASSIGNMENT: 315 316 IF ARRX52( 5 ) /= TRUE OR 317 ARRX52( 6 ) /= FALSE OR 318 ARRX52( 7 ) /= TRUE OR 319 ARRX52( 8 ) /= TRUE OR 320 ARRX52( 9 ) /= FALSE 321 THEN 322 FAILED( "SLICE ASSIGNMENT NOT CORRECT (VALUES)" ); 323 END IF; 324 325 EXCEPTION 326 327 WHEN OTHERS => 328 FAILED( "EXCEPTION RAISED - SUBTEST 12" ); 329 330 END ; 331 332 ------------------------------------------------------------------- 333 334 335 RESULT ; 336 337 338END C52103F; 339