1-- C37002A.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 INDEX CONSTRAINTS WITH NON-STATIC EXPRESSIONS CAN BE
26-- USED TO CONSTRAIN RECORD COMPONENTS HAVING AN ARRAY TYPE.
27
28-- RJW 2/28/86
29
30WITH REPORT; USE REPORT;
31
32PROCEDURE C37002A IS
33
34BEGIN
35     TEST ( "C37002A", "CHECK THAT INDEX CONSTRAINTS WITH " &
36                       "NON-STATIC EXPRESSIONS CAN BE USED TO " &
37                       "CONSTRAIN RECORD COMPONENTS HAVING AN " &
38                       "ARRAY TYPE" );
39
40     DECLARE
41          X : INTEGER := IDENT_INT(5);
42          SUBTYPE S IS INTEGER RANGE 1 .. X;
43          TYPE AR1 IS ARRAY (S) OF INTEGER;
44
45          SUBTYPE T IS INTEGER RANGE X .. 10;
46          TYPE AR2 IS ARRAY (T) OF INTEGER;
47          TYPE U IS ARRAY (INTEGER RANGE <>) OF INTEGER;
48          SUBTYPE V IS INTEGER RANGE 1 .. 10;
49
50          TYPE R IS
51               RECORD
52                    A : STRING (1 .. X);
53                    B : STRING (X .. 10);
54                    C : AR1;
55                    D : AR2;
56                    E : STRING (S);
57                    F : U(T);
58                    G : U(V RANGE 1 ..X);
59                    H : STRING (POSITIVE RANGE X .. 10);
60                    I : U(AR1'RANGE);
61                    J : STRING (AR2'RANGE);
62               END RECORD;
63          RR : R;
64
65     BEGIN
66          IF RR.A'LAST /= 5 OR RR.B'FIRST /= 5 OR
67             RR.C'LAST /= 5 OR RR.D'FIRST /= 5 OR
68             RR.E'LAST /= 5 OR RR.F'FIRST /= 5 OR
69             RR.G'LAST /= 5 OR RR.H'FIRST /= 5 OR
70             RR.I'LAST /= 5 OR RR.J'FIRST /= 5 THEN
71
72                  FAILED("WRONG VALUE FOR NON-STATIC BOUND");
73
74           END IF;
75
76     END;
77
78     RESULT;
79END C37002A;
80