3 -- Grant of Unlimited Rights
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
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.
25 -- CHECK THAT EACH ARRAY ATTRIBUTE YIELDS THE CORRECT VALUES.
26 -- BOTH ARRAY OBJECTS AND TYPES ARE CHECKED. THIS TEST CHECKS
27 -- THE ABOVE FOR ARRAYS WITHIN GENERIC PROGRAM UNITS.
30 -- EDWARD V. BERARD, 9 AUGUST 1990
37 SHORT_START
: CONSTANT := -10 ;
38 SHORT_END
: CONSTANT := 10 ;
39 TYPE SHORT_RANGE
IS RANGE SHORT_START
.. SHORT_END
;
40 SHORT_LENGTH
: CONSTANT NATURAL := (SHORT_END
- SHORT_START
+ 1) ;
42 TYPE MONTH_TYPE
IS (JAN
, FEB
, MAR
, APR
, MAY
, JUN
, JUL
, AUG
,
44 SUBTYPE MID_YEAR
IS MONTH_TYPE
RANGE MAY
.. AUG
;
45 TYPE DAY_TYPE
IS RANGE 1 .. 31 ;
46 TYPE YEAR_TYPE
IS RANGE 1904 .. 2050 ;
53 TODAY
: DATE
:= (MONTH
=> AUG
,
57 FIRST_DATE
: DATE
:= (DAY
=> 6,
61 FUNCTION "=" (LEFT
: IN SYSTEM
.ADDRESS
;
62 RIGHT
: IN SYSTEM
.ADDRESS
) RETURN BOOLEAN
67 TYPE FIRST_INDEX
IS (<>) ;
68 FIRST_INDEX_LENGTH
: IN NATURAL ;
69 FIRST_TEST_VALUE
: IN FIRST_INDEX
;
70 TYPE SECOND_INDEX
IS (<>) ;
71 SECOND_INDEX_LENGTH
: IN NATURAL ;
72 SECOND_TEST_VALUE
: IN SECOND_INDEX
;
73 TYPE THIRD_INDEX
IS (<>) ;
74 THIRD_INDEX_LENGTH
: IN NATURAL ;
75 THIRD_TEST_VALUE
: IN THIRD_INDEX
;
76 TYPE FIRST_COMPONENT_TYPE
IS PRIVATE ;
77 FIRST_DEFAULT_VALUE
: IN FIRST_COMPONENT_TYPE
;
78 SECOND_DEFAULT_VALUE
: IN FIRST_COMPONENT_TYPE
;
79 TYPE SECOND_COMPONENT_TYPE
IS PRIVATE ;
80 THIRD_DEFAULT_VALUE
: IN SECOND_COMPONENT_TYPE
;
81 FOURTH_DEFAULT_VALUE
: IN SECOND_COMPONENT_TYPE
;
83 PACKAGE ARRAY_ATTRIBUTE_TEST
IS
85 TYPE MATRIX
IS ARRAY (FIRST_INDEX
, SECOND_INDEX
)
86 OF FIRST_COMPONENT_TYPE
;
88 TYPE CUBE
IS ARRAY (FIRST_INDEX
, SECOND_INDEX
, THIRD_INDEX
)
89 OF SECOND_COMPONENT_TYPE
;
91 END ARRAY_ATTRIBUTE_TEST
;
93 PACKAGE BODY ARRAY_ATTRIBUTE_TEST
IS
95 FIRST_ARRAY
: MATRIX
:= (FIRST_INDEX
'FIRST .. FIRST_INDEX
'LAST =>
96 (SECOND_INDEX
'FIRST .. SECOND_INDEX
'LAST =>
97 FIRST_DEFAULT_VALUE
)) ;
99 SECOND_ARRAY
: CUBE
:= (FIRST_INDEX
'FIRST .. FIRST_INDEX
'LAST =>
100 (SECOND_INDEX
'FIRST .. SECOND_INDEX
'LAST =>
101 (THIRD_INDEX
'FIRST .. THIRD_INDEX
'LAST =>
102 THIRD_DEFAULT_VALUE
))) ;
104 THIRD_ARRAY
: CONSTANT MATRIX
105 := (FIRST_INDEX
'FIRST .. FIRST_INDEX
'LAST =>
106 (SECOND_INDEX
'FIRST .. SECOND_INDEX
'LAST =>
107 SECOND_DEFAULT_VALUE
)) ;
109 FOURTH_ARRAY
: CONSTANT CUBE
110 := (FIRST_INDEX
'FIRST .. FIRST_INDEX
'LAST =>
111 (SECOND_INDEX
'FIRST .. SECOND_INDEX
'LAST =>
112 (THIRD_INDEX
'FIRST .. THIRD_INDEX
'LAST =>
113 FOURTH_DEFAULT_VALUE
))) ;
115 FA1
: FIRST_INDEX
:= FIRST_ARRAY
'FIRST (1) ;
116 FA2
: FIRST_INDEX
:= FIRST_ARRAY
'LAST (1) ;
117 FA3
: SECOND_INDEX
:= FIRST_ARRAY
'FIRST (2) ;
118 FA4
: SECOND_INDEX
:= FIRST_ARRAY
'LAST (2) ;
120 SA1
: FIRST_INDEX
:= SECOND_ARRAY
'FIRST (1) ;
121 SA2
: FIRST_INDEX
:= SECOND_ARRAY
'LAST (1) ;
122 SA3
: SECOND_INDEX
:= SECOND_ARRAY
'FIRST (2) ;
123 SA4
: SECOND_INDEX
:= SECOND_ARRAY
'LAST (2) ;
124 SA5
: THIRD_INDEX
:= SECOND_ARRAY
'FIRST (3) ;
125 SA6
: THIRD_INDEX
:= SECOND_ARRAY
'LAST (3) ;
127 FAL1
: NATURAL := FIRST_ARRAY
'LENGTH (1) ;
128 FAL2
: NATURAL := FIRST_ARRAY
'LENGTH (2) ;
130 SAL1
: NATURAL := SECOND_ARRAY
'LENGTH (1) ;
131 SAL2
: NATURAL := SECOND_ARRAY
'LENGTH (2) ;
132 SAL3
: NATURAL := SECOND_ARRAY
'LENGTH (3) ;
134 MATRIX_SIZE
: NATURAL := MATRIX
'SIZE ;
135 CUBE_SIZE
: NATURAL := CUBE
'SIZE ;
137 FAA
: SYSTEM
.ADDRESS
:= FIRST_ARRAY
'ADDRESS ;
138 SAA
: SYSTEM
.ADDRESS
:= SECOND_ARRAY
'ADDRESS ;
139 TAA
: SYSTEM
.ADDRESS
:= THIRD_ARRAY
'ADDRESS ;
140 FRAA
: SYSTEM
.ADDRESS
:= FOURTH_ARRAY
'ADDRESS ;
142 BEGIN -- ARRAY_ATTRIBUTE_TEST
144 IF (FA1
/= FIRST_INDEX
'FIRST) OR
145 (FA3
/= SECOND_INDEX
'FIRST) OR
146 (SA1
/= FIRST_INDEX
'FIRST) OR
147 (SA3
/= SECOND_INDEX
'FIRST) OR
148 (SA5
/= THIRD_INDEX
'FIRST) THEN
149 REPORT
.FAILED
("INCORRECT VALUE RETURNED FOR 'FIRST - PACKAGE") ;
152 IF (FA2
/= FIRST_INDEX
'LAST) OR
153 (FA4
/= SECOND_INDEX
'LAST) OR
154 (SA2
/= FIRST_INDEX
'LAST) OR
155 (SA4
/= SECOND_INDEX
'LAST) OR
156 (SA6
/= THIRD_INDEX
'LAST) THEN
157 REPORT
.FAILED
("INCORRECT VALUE RETURNED FOR 'LAST - PACKAGE") ;
160 IF (FAL1
/= FIRST_INDEX_LENGTH
) OR
161 (FAL2
/= SECOND_INDEX_LENGTH
) OR
162 (SAL1
/= FIRST_INDEX_LENGTH
) OR
163 (SAL2
/= SECOND_INDEX_LENGTH
) OR
164 (SAL3
/= THIRD_INDEX_LENGTH
) THEN
165 REPORT
.FAILED
("INCORRECT VALUE RETURNED FOR 'LENGTH - PACKAGE") ;
168 FOR OUTER_INDEX
IN FIRST_ARRAY
'RANGE (1) LOOP
169 FOR INNER_INDEX
IN FIRST_ARRAY
'RANGE (2) LOOP
170 FIRST_ARRAY
(OUTER_INDEX
, INNER_INDEX
) :=
171 SECOND_DEFAULT_VALUE
;
175 IF FIRST_ARRAY
/= THIRD_ARRAY
THEN
176 REPORT
.FAILED
("INCORRECT HANDLING OF 'RANGE ATTRIBUTE " &
177 "FOR 2-DIMENSIONAL ARRAY. - PACKAGE") ;
180 FOR OUTER_INDEX
IN SECOND_ARRAY
'RANGE (1) LOOP
181 FOR MIDDLE_INDEX
IN SECOND_ARRAY
'RANGE (2) LOOP
182 FOR INNER_INDEX
IN SECOND_ARRAY
'RANGE (3) LOOP
183 SECOND_ARRAY
(OUTER_INDEX
, MIDDLE_INDEX
, INNER_INDEX
)
184 := FOURTH_DEFAULT_VALUE
;
189 IF SECOND_ARRAY
/= FOURTH_ARRAY
THEN
190 REPORT
.FAILED
("INCORRECT HANDLING OF 'RANGE ATTRIBUTE " &
191 "FOR 3-DIMENSIONAL ARRAY. - PACKAGE") ;
194 IF (FIRST_TEST_VALUE
NOT IN FIRST_ARRAY
'RANGE (1)) OR
195 (FIRST_TEST_VALUE
NOT IN SECOND_ARRAY
'RANGE (1)) OR
196 (SECOND_TEST_VALUE
NOT IN FIRST_ARRAY
'RANGE (2)) OR
197 (SECOND_TEST_VALUE
NOT IN SECOND_ARRAY
'RANGE (2)) OR
198 (THIRD_TEST_VALUE
NOT IN SECOND_ARRAY
'RANGE (3)) THEN
199 REPORT
.FAILED
("INCORRECT HANDLING OF 'RANGE ATTRIBUTE " &
203 IF (MATRIX_SIZE
= 0) OR (CUBE_SIZE
= 0) THEN
204 REPORT
.FAILED
("INCORRECT HANDLING OF THE 'SIZE ATTRIBUTE. " &
208 IF (FAA
= TAA
) OR (SAA
= FRAA
) OR (FAA
= SAA
) OR (FAA
= FRAA
)
209 OR (SAA
= TAA
) OR (TAA
= FRAA
) THEN
210 REPORT
.FAILED
("INCORRECT HANDLING OF THE 'ADDRESS ATTRIBUTE. " &
214 END ARRAY_ATTRIBUTE_TEST
;
218 TYPE FIRST_INDEX
IS (<>) ;
219 FIRST_INDEX_LENGTH
: IN NATURAL ;
220 FIRST_TEST_VALUE
: IN FIRST_INDEX
;
221 TYPE SECOND_INDEX
IS (<>) ;
222 SECOND_INDEX_LENGTH
: IN NATURAL ;
223 SECOND_TEST_VALUE
: IN SECOND_INDEX
;
224 TYPE THIRD_INDEX
IS (<>) ;
225 THIRD_INDEX_LENGTH
: IN NATURAL ;
226 THIRD_TEST_VALUE
: IN THIRD_INDEX
;
227 TYPE FIRST_COMPONENT_TYPE
IS PRIVATE ;
228 FIRST_DEFAULT_VALUE
: IN FIRST_COMPONENT_TYPE
;
229 SECOND_DEFAULT_VALUE
: IN FIRST_COMPONENT_TYPE
;
230 TYPE SECOND_COMPONENT_TYPE
IS PRIVATE ;
231 THIRD_DEFAULT_VALUE
: IN SECOND_COMPONENT_TYPE
;
232 FOURTH_DEFAULT_VALUE
: IN SECOND_COMPONENT_TYPE
;
234 PROCEDURE PROC_ARRAY_ATT_TEST
;
236 PROCEDURE PROC_ARRAY_ATT_TEST
IS
238 TYPE MATRIX
IS ARRAY (FIRST_INDEX
, SECOND_INDEX
)
239 OF FIRST_COMPONENT_TYPE
;
241 TYPE CUBE
IS ARRAY (FIRST_INDEX
, SECOND_INDEX
, THIRD_INDEX
)
242 OF SECOND_COMPONENT_TYPE
;
244 FIRST_ARRAY
: MATRIX
:= (FIRST_INDEX
'FIRST .. FIRST_INDEX
'LAST =>
245 (SECOND_INDEX
'FIRST .. SECOND_INDEX
'LAST =>
246 FIRST_DEFAULT_VALUE
)) ;
248 SECOND_ARRAY
: CUBE
:= (FIRST_INDEX
'FIRST .. FIRST_INDEX
'LAST =>
249 (SECOND_INDEX
'FIRST .. SECOND_INDEX
'LAST =>
250 (THIRD_INDEX
'FIRST .. THIRD_INDEX
'LAST =>
251 THIRD_DEFAULT_VALUE
))) ;
253 THIRD_ARRAY
: CONSTANT MATRIX
254 := (FIRST_INDEX
'FIRST .. FIRST_INDEX
'LAST =>
255 (SECOND_INDEX
'FIRST .. SECOND_INDEX
'LAST =>
256 SECOND_DEFAULT_VALUE
)) ;
258 FOURTH_ARRAY
: CONSTANT CUBE
259 := (FIRST_INDEX
'FIRST .. FIRST_INDEX
'LAST =>
260 (SECOND_INDEX
'FIRST .. SECOND_INDEX
'LAST =>
261 (THIRD_INDEX
'FIRST .. THIRD_INDEX
'LAST =>
262 FOURTH_DEFAULT_VALUE
))) ;
264 FA1
: FIRST_INDEX
:= FIRST_ARRAY
'FIRST (1) ;
265 FA2
: FIRST_INDEX
:= FIRST_ARRAY
'LAST (1) ;
266 FA3
: SECOND_INDEX
:= FIRST_ARRAY
'FIRST (2) ;
267 FA4
: SECOND_INDEX
:= FIRST_ARRAY
'LAST (2) ;
269 SA1
: FIRST_INDEX
:= SECOND_ARRAY
'FIRST (1) ;
270 SA2
: FIRST_INDEX
:= SECOND_ARRAY
'LAST (1) ;
271 SA3
: SECOND_INDEX
:= SECOND_ARRAY
'FIRST (2) ;
272 SA4
: SECOND_INDEX
:= SECOND_ARRAY
'LAST (2) ;
273 SA5
: THIRD_INDEX
:= SECOND_ARRAY
'FIRST (3) ;
274 SA6
: THIRD_INDEX
:= SECOND_ARRAY
'LAST (3) ;
276 FAL1
: NATURAL := FIRST_ARRAY
'LENGTH (1) ;
277 FAL2
: NATURAL := FIRST_ARRAY
'LENGTH (2) ;
279 SAL1
: NATURAL := SECOND_ARRAY
'LENGTH (1) ;
280 SAL2
: NATURAL := SECOND_ARRAY
'LENGTH (2) ;
281 SAL3
: NATURAL := SECOND_ARRAY
'LENGTH (3) ;
283 MATRIX_SIZE
: NATURAL := MATRIX
'SIZE ;
284 CUBE_SIZE
: NATURAL := CUBE
'SIZE ;
286 FAA
: SYSTEM
.ADDRESS
:= FIRST_ARRAY
'ADDRESS ;
287 SAA
: SYSTEM
.ADDRESS
:= SECOND_ARRAY
'ADDRESS ;
288 TAA
: SYSTEM
.ADDRESS
:= THIRD_ARRAY
'ADDRESS ;
289 FRAA
: SYSTEM
.ADDRESS
:= FOURTH_ARRAY
'ADDRESS ;
291 BEGIN -- PROC_ARRAY_ATT_TEST
293 IF (FA1
/= FIRST_INDEX
'FIRST) OR
294 (FA3
/= SECOND_INDEX
'FIRST) OR
295 (SA1
/= FIRST_INDEX
'FIRST) OR
296 (SA3
/= SECOND_INDEX
'FIRST) OR
297 (SA5
/= THIRD_INDEX
'FIRST) THEN
298 REPORT
.FAILED
("INCORRECT VALUE RETURNED FOR 'FIRST " &
302 IF (FA2
/= FIRST_INDEX
'LAST) OR
303 (FA4
/= SECOND_INDEX
'LAST) OR
304 (SA2
/= FIRST_INDEX
'LAST) OR
305 (SA4
/= SECOND_INDEX
'LAST) OR
306 (SA6
/= THIRD_INDEX
'LAST) THEN
307 REPORT
.FAILED
("INCORRECT VALUE RETURNED FOR 'LAST " &
311 IF (FAL1
/= FIRST_INDEX_LENGTH
) OR
312 (FAL2
/= SECOND_INDEX_LENGTH
) OR
313 (SAL1
/= FIRST_INDEX_LENGTH
) OR
314 (SAL2
/= SECOND_INDEX_LENGTH
) OR
315 (SAL3
/= THIRD_INDEX_LENGTH
) THEN
316 REPORT
.FAILED
("INCORRECT VALUE RETURNED FOR 'LENGTH " &
320 FOR OUTER_INDEX
IN FIRST_ARRAY
'RANGE (1) LOOP
321 FOR INNER_INDEX
IN FIRST_ARRAY
'RANGE (2) LOOP
322 FIRST_ARRAY
(OUTER_INDEX
, INNER_INDEX
) :=
323 SECOND_DEFAULT_VALUE
;
327 IF FIRST_ARRAY
/= THIRD_ARRAY
THEN
328 REPORT
.FAILED
("INCORRECT HANDLING OF 'RANGE ATTRIBUTE " &
329 "FOR 2-DIMENSIONAL ARRAY. - PROCEDURE") ;
332 FOR OUTER_INDEX
IN SECOND_ARRAY
'RANGE (1) LOOP
333 FOR MIDDLE_INDEX
IN SECOND_ARRAY
'RANGE (2) LOOP
334 FOR INNER_INDEX
IN SECOND_ARRAY
'RANGE (3) LOOP
335 SECOND_ARRAY
(OUTER_INDEX
, MIDDLE_INDEX
, INNER_INDEX
)
336 := FOURTH_DEFAULT_VALUE
;
341 IF SECOND_ARRAY
/= FOURTH_ARRAY
THEN
342 REPORT
.FAILED
("INCORRECT HANDLING OF 'RANGE ATTRIBUTE " &
343 "FOR 3-DIMENSIONAL ARRAY. - PROCEDURE") ;
346 IF (FIRST_TEST_VALUE
NOT IN FIRST_ARRAY
'RANGE (1)) OR
347 (FIRST_TEST_VALUE
NOT IN SECOND_ARRAY
'RANGE (1)) OR
348 (SECOND_TEST_VALUE
NOT IN FIRST_ARRAY
'RANGE (2)) OR
349 (SECOND_TEST_VALUE
NOT IN SECOND_ARRAY
'RANGE (2)) OR
350 (THIRD_TEST_VALUE
NOT IN SECOND_ARRAY
'RANGE (3)) THEN
351 REPORT
.FAILED
("INCORRECT HANDLING OF 'RANGE ATTRIBUTE " &
355 IF (MATRIX_SIZE
= 0) OR (CUBE_SIZE
= 0) THEN
356 REPORT
.FAILED
("INCORRECT HANDLING OF THE 'SIZE ATTRIBUTE. " &
360 IF (FAA
= TAA
) OR (SAA
= FRAA
) OR (FAA
= SAA
) OR (FAA
= FRAA
)
361 OR (SAA
= TAA
) OR (TAA
= FRAA
) THEN
362 REPORT
.FAILED
("INCORRECT HANDLING OF THE 'ADDRESS ATTRIBUTE. " &
366 END PROC_ARRAY_ATT_TEST
;
370 TYPE FIRST_INDEX
IS (<>) ;
371 FIRST_INDEX_LENGTH
: IN NATURAL ;
372 FIRST_TEST_VALUE
: IN FIRST_INDEX
;
373 TYPE SECOND_INDEX
IS (<>) ;
374 SECOND_INDEX_LENGTH
: IN NATURAL ;
375 SECOND_TEST_VALUE
: IN SECOND_INDEX
;
376 TYPE THIRD_INDEX
IS (<>) ;
377 THIRD_INDEX_LENGTH
: IN NATURAL ;
378 THIRD_TEST_VALUE
: IN THIRD_INDEX
;
379 TYPE FIRST_COMPONENT_TYPE
IS PRIVATE ;
380 FIRST_DEFAULT_VALUE
: IN FIRST_COMPONENT_TYPE
;
381 SECOND_DEFAULT_VALUE
: IN FIRST_COMPONENT_TYPE
;
382 TYPE SECOND_COMPONENT_TYPE
IS PRIVATE ;
383 THIRD_DEFAULT_VALUE
: IN SECOND_COMPONENT_TYPE
;
384 FOURTH_DEFAULT_VALUE
: IN SECOND_COMPONENT_TYPE
;
386 FUNCTION FUNC_ARRAY_ATT_TEST
RETURN BOOLEAN ;
388 FUNCTION FUNC_ARRAY_ATT_TEST
RETURN BOOLEAN IS
390 TYPE MATRIX
IS ARRAY (FIRST_INDEX
, SECOND_INDEX
)
391 OF FIRST_COMPONENT_TYPE
;
393 TYPE CUBE
IS ARRAY (FIRST_INDEX
, SECOND_INDEX
, THIRD_INDEX
)
394 OF SECOND_COMPONENT_TYPE
;
396 FIRST_ARRAY
: MATRIX
:= (FIRST_INDEX
'FIRST .. FIRST_INDEX
'LAST =>
397 (SECOND_INDEX
'FIRST .. SECOND_INDEX
'LAST =>
398 FIRST_DEFAULT_VALUE
)) ;
400 SECOND_ARRAY
: CUBE
:= (FIRST_INDEX
'FIRST .. FIRST_INDEX
'LAST =>
401 (SECOND_INDEX
'FIRST .. SECOND_INDEX
'LAST =>
402 (THIRD_INDEX
'FIRST .. THIRD_INDEX
'LAST =>
403 THIRD_DEFAULT_VALUE
))) ;
405 THIRD_ARRAY
: CONSTANT MATRIX
406 := (FIRST_INDEX
'FIRST .. FIRST_INDEX
'LAST =>
407 (SECOND_INDEX
'FIRST .. SECOND_INDEX
'LAST =>
408 SECOND_DEFAULT_VALUE
)) ;
410 FOURTH_ARRAY
: CONSTANT CUBE
411 := (FIRST_INDEX
'FIRST .. FIRST_INDEX
'LAST =>
412 (SECOND_INDEX
'FIRST .. SECOND_INDEX
'LAST =>
413 (THIRD_INDEX
'FIRST .. THIRD_INDEX
'LAST =>
414 FOURTH_DEFAULT_VALUE
))) ;
416 FA1
: FIRST_INDEX
:= FIRST_ARRAY
'FIRST (1) ;
417 FA2
: FIRST_INDEX
:= FIRST_ARRAY
'LAST (1) ;
418 FA3
: SECOND_INDEX
:= FIRST_ARRAY
'FIRST (2) ;
419 FA4
: SECOND_INDEX
:= FIRST_ARRAY
'LAST (2) ;
421 SA1
: FIRST_INDEX
:= SECOND_ARRAY
'FIRST (1) ;
422 SA2
: FIRST_INDEX
:= SECOND_ARRAY
'LAST (1) ;
423 SA3
: SECOND_INDEX
:= SECOND_ARRAY
'FIRST (2) ;
424 SA4
: SECOND_INDEX
:= SECOND_ARRAY
'LAST (2) ;
425 SA5
: THIRD_INDEX
:= SECOND_ARRAY
'FIRST (3) ;
426 SA6
: THIRD_INDEX
:= SECOND_ARRAY
'LAST (3) ;
428 FAL1
: NATURAL := FIRST_ARRAY
'LENGTH (1) ;
429 FAL2
: NATURAL := FIRST_ARRAY
'LENGTH (2) ;
431 SAL1
: NATURAL := SECOND_ARRAY
'LENGTH (1) ;
432 SAL2
: NATURAL := SECOND_ARRAY
'LENGTH (2) ;
433 SAL3
: NATURAL := SECOND_ARRAY
'LENGTH (3) ;
435 MATRIX_SIZE
: NATURAL := MATRIX
'SIZE ;
436 CUBE_SIZE
: NATURAL := CUBE
'SIZE ;
438 FAA
: SYSTEM
.ADDRESS
:= FIRST_ARRAY
'ADDRESS ;
439 SAA
: SYSTEM
.ADDRESS
:= SECOND_ARRAY
'ADDRESS ;
440 TAA
: SYSTEM
.ADDRESS
:= THIRD_ARRAY
'ADDRESS ;
441 FRAA
: SYSTEM
.ADDRESS
:= FOURTH_ARRAY
'ADDRESS ;
443 BEGIN -- FUNC_ARRAY_ATT_TEST
445 IF (FA1
/= FIRST_INDEX
'FIRST) OR
446 (FA3
/= SECOND_INDEX
'FIRST) OR
447 (SA1
/= FIRST_INDEX
'FIRST) OR
448 (SA3
/= SECOND_INDEX
'FIRST) OR
449 (SA5
/= THIRD_INDEX
'FIRST) THEN
450 REPORT
.FAILED
("INCORRECT VALUE RETURNED FOR 'FIRST " &
454 IF (FA2
/= FIRST_INDEX
'LAST) OR
455 (FA4
/= SECOND_INDEX
'LAST) OR
456 (SA2
/= FIRST_INDEX
'LAST) OR
457 (SA4
/= SECOND_INDEX
'LAST) OR
458 (SA6
/= THIRD_INDEX
'LAST) THEN
459 REPORT
.FAILED
("INCORRECT VALUE RETURNED FOR 'LAST " &
463 IF (FAL1
/= FIRST_INDEX_LENGTH
) OR
464 (FAL2
/= SECOND_INDEX_LENGTH
) OR
465 (SAL1
/= FIRST_INDEX_LENGTH
) OR
466 (SAL2
/= SECOND_INDEX_LENGTH
) OR
467 (SAL3
/= THIRD_INDEX_LENGTH
) THEN
468 REPORT
.FAILED
("INCORRECT VALUE RETURNED FOR 'LENGTH " &
472 FOR OUTER_INDEX
IN FIRST_ARRAY
'RANGE (1) LOOP
473 FOR INNER_INDEX
IN FIRST_ARRAY
'RANGE (2) LOOP
474 FIRST_ARRAY
(OUTER_INDEX
, INNER_INDEX
) :=
475 SECOND_DEFAULT_VALUE
;
479 IF FIRST_ARRAY
/= THIRD_ARRAY
THEN
480 REPORT
.FAILED
("INCORRECT HANDLING OF 'RANGE ATTRIBUTE " &
481 "FOR 2-DIMENSIONAL ARRAY. - FUNCTION") ;
484 FOR OUTER_INDEX
IN SECOND_ARRAY
'RANGE (1) LOOP
485 FOR MIDDLE_INDEX
IN SECOND_ARRAY
'RANGE (2) LOOP
486 FOR INNER_INDEX
IN SECOND_ARRAY
'RANGE (3) LOOP
487 SECOND_ARRAY
(OUTER_INDEX
, MIDDLE_INDEX
, INNER_INDEX
)
488 := FOURTH_DEFAULT_VALUE
;
493 IF SECOND_ARRAY
/= FOURTH_ARRAY
THEN
494 REPORT
.FAILED
("INCORRECT HANDLING OF 'RANGE ATTRIBUTE " &
495 "FOR 3-DIMENSIONAL ARRAY. - FUNCTION") ;
498 IF (FIRST_TEST_VALUE
NOT IN FIRST_ARRAY
'RANGE (1)) OR
499 (FIRST_TEST_VALUE
NOT IN SECOND_ARRAY
'RANGE (1)) OR
500 (SECOND_TEST_VALUE
NOT IN FIRST_ARRAY
'RANGE (2)) OR
501 (SECOND_TEST_VALUE
NOT IN SECOND_ARRAY
'RANGE (2)) OR
502 (THIRD_TEST_VALUE
NOT IN SECOND_ARRAY
'RANGE (3)) THEN
503 REPORT
.FAILED
("INCORRECT HANDLING OF 'RANGE ATTRIBUTE " &
507 IF (MATRIX_SIZE
= 0) OR (CUBE_SIZE
= 0) THEN
508 REPORT
.FAILED
("INCORRECT HANDLING OF THE 'SIZE ATTRIBUTE. " &
512 IF (FAA
= TAA
) OR (SAA
= FRAA
) OR (FAA
= SAA
) OR (FAA
= FRAA
)
513 OR (SAA
= TAA
) OR (TAA
= FRAA
) THEN
514 REPORT
.FAILED
("INCORRECT HANDLING OF THE 'ADDRESS ATTRIBUTE. " &
520 END FUNC_ARRAY_ATT_TEST
;
525 REPORT
.TEST
("C36204D", "ARRAY ATTRIBUTES RETURN CORRECT " &
526 "VALUES WITHIN GENERIC PROGRAM UNITS.") ;
532 DUMMY
: BOOLEAN := FALSE ;
534 PACKAGE NEW_ARRAY_ATTRIBUTE_TEST
IS NEW ARRAY_ATTRIBUTE_TEST
(
535 FIRST_INDEX
=> SHORT_RANGE
,
536 FIRST_INDEX_LENGTH
=> SHORT_LENGTH
,
537 FIRST_TEST_VALUE
=> -7,
538 SECOND_INDEX
=> MONTH_TYPE
,
539 SECOND_INDEX_LENGTH
=> 12,
540 SECOND_TEST_VALUE
=> AUG
,
541 THIRD_INDEX
=> BOOLEAN,
542 THIRD_INDEX_LENGTH
=> 2,
543 THIRD_TEST_VALUE
=> FALSE,
544 FIRST_COMPONENT_TYPE
=> MONTH_TYPE
,
545 FIRST_DEFAULT_VALUE
=> JAN
,
546 SECOND_DEFAULT_VALUE
=> DEC
,
547 SECOND_COMPONENT_TYPE
=> DATE
,
548 THIRD_DEFAULT_VALUE
=> TODAY
,
549 FOURTH_DEFAULT_VALUE
=> FIRST_DATE
) ;
551 PROCEDURE NEW_PROC_ARRAY_ATT_TEST
IS NEW PROC_ARRAY_ATT_TEST
(
552 FIRST_INDEX
=> MONTH_TYPE
,
553 FIRST_INDEX_LENGTH
=> 12,
554 FIRST_TEST_VALUE
=> AUG
,
555 SECOND_INDEX
=> SHORT_RANGE
,
556 SECOND_INDEX_LENGTH
=> SHORT_LENGTH
,
557 SECOND_TEST_VALUE
=> -7,
558 THIRD_INDEX
=> BOOLEAN,
559 THIRD_INDEX_LENGTH
=> 2,
560 THIRD_TEST_VALUE
=> FALSE,
561 FIRST_COMPONENT_TYPE
=> DATE
,
562 FIRST_DEFAULT_VALUE
=> TODAY
,
563 SECOND_DEFAULT_VALUE
=> FIRST_DATE
,
564 SECOND_COMPONENT_TYPE
=> MONTH_TYPE
,
565 THIRD_DEFAULT_VALUE
=> JAN
,
566 FOURTH_DEFAULT_VALUE
=> DEC
) ;
568 FUNCTION NEW_FUNC_ARRAY_ATT_TEST
IS NEW FUNC_ARRAY_ATT_TEST
(
569 FIRST_INDEX
=> DAY_TYPE
,
570 FIRST_INDEX_LENGTH
=> 31,
571 FIRST_TEST_VALUE
=> 25,
572 SECOND_INDEX
=> SHORT_RANGE
,
573 SECOND_INDEX_LENGTH
=> SHORT_LENGTH
,
574 SECOND_TEST_VALUE
=> -7,
575 THIRD_INDEX
=> MID_YEAR
,
576 THIRD_INDEX_LENGTH
=> 4,
577 THIRD_TEST_VALUE
=> JUL
,
578 FIRST_COMPONENT_TYPE
=> DATE
,
579 FIRST_DEFAULT_VALUE
=> TODAY
,
580 SECOND_DEFAULT_VALUE
=> FIRST_DATE
,
581 SECOND_COMPONENT_TYPE
=> MONTH_TYPE
,
582 THIRD_DEFAULT_VALUE
=> JAN
,
583 FOURTH_DEFAULT_VALUE
=> DEC
) ;
587 NEW_PROC_ARRAY_ATT_TEST
;
589 DUMMY
:= NEW_FUNC_ARRAY_ATT_TEST
;
591 REPORT
.FAILED
("WRONG VALUE RETURNED BY FUNCTION.") ;