1-- C43224A.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 A NON-STATIC CHOICE OF AN ARRAY AGGREGATE CAN BE A
27--     'RANGE ATTRIBUTE.
28
29-- HISTORY:
30--     DHH 08/15/88 CREATED ORIGINAL TEST.
31
32WITH REPORT; USE REPORT;
33PROCEDURE C43224A IS
34
35     M, O : INTEGER := IDENT_INT(2);
36     N : INTEGER := IDENT_INT(3);
37
38     TYPE ARR IS ARRAY(INTEGER RANGE <>) OF INTEGER;
39     TYPE D3_ARR IS ARRAY(INTEGER RANGE <>, INTEGER RANGE <>,
40                          INTEGER RANGE <>) OF INTEGER;
41
42     SUBTYPE ARR1 IS ARR(IDENT_INT(2) .. IDENT_INT(3));
43     SUBTYPE ARR2 IS D3_ARR(1 .. M, 1 .. N, 1 ..O);
44
45     SUB : ARR1;
46     SUB1 : ARR2;
47
48     PROCEDURE PROC(ARRY : IN OUT ARR) IS
49     BEGIN
50          ARRY := (ARR1'RANGE => IDENT_INT(7));
51          IF ARRY(IDENT_INT(ARRY'FIRST)) /= IDENT_INT(7) THEN
52               FAILED("RANGE NOT INITIALIZED - 1");
53          END IF;
54     END PROC;
55
56     PROCEDURE PROC1(ARRY : IN OUT D3_ARR) IS
57     BEGIN
58          ARRY := (ARR2'RANGE(1) => (ARRY'RANGE(2) =>
59                  (ARRY'RANGE(3) => IDENT_INT(7))));
60
61          IF ARRY(IDENT_INT(1), IDENT_INT(2), IDENT_INT(1)) /=
62                  IDENT_INT(7) THEN
63               FAILED("RANGE NOT INITIALIZED - 2");
64          END IF;
65     END PROC1;
66
67BEGIN
68     TEST("C43224A", "CHECK THAT A NON-STATIC CHOICE OF AN ARRAY " &
69                     "AGGREGATE CAN BE A 'RANGE ATTRIBUTE");
70
71     PROC(SUB);
72     PROC1(SUB1);
73
74     RESULT;
75END C43224A;
76