1-- C43214B.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 THE LOWER BOUND FOR THE STRING LITERAL IS DETERMINED BY
26-- THE APPLICABLE INDEX CONSTRAINT, WHEN ONE EXISTS.
27
28-- EG  02/10/84
29
30WITH REPORT;
31
32PROCEDURE C43214B IS
33
34     USE REPORT;
35
36BEGIN
37
38     TEST("C43214B", "SUBPROGRAM WITH CONSTRAINED ARRAY FORMAL " &
39                     "PARAMETER");
40
41     BEGIN
42
43CASE_A :  BEGIN
44
45--             COMMENT ("CASE A1 : SUBPROGRAM WITH CONSTRAINED " &
46--                      "ONE-DIMENSIONAL ARRAY FORMAL PARAMETER");
47
48     CASE_A1 : DECLARE
49
50                    SUBTYPE STA1 IS STRING(IDENT_INT(11) .. 15);
51
52                    PROCEDURE PROC1 (A : STA1) IS
53                    BEGIN
54                         IF A'FIRST /= 11 THEN
55                              FAILED ("CASE 1 : LOWER BOUND " &
56                                      "INCORRECT");
57                         ELSIF A'LAST /= 15 THEN
58                              FAILED ("CASE 1 : UPPER BOUND " &
59                                      "INCORRECT");
60                         ELSIF A /= "ABCDE" THEN
61                              FAILED ("CASE 1 : ARRAY DOES NOT " &
62                                     "CONTAIN THE CORRECT VALUES");
63                         END IF;
64                    END;
65
66               BEGIN
67
68                    PROC1 ("ABCDE");
69
70               END CASE_A1;
71
72--             COMMENT ("CASE A2 : SUBPROGRAM WITH CONSTRAINED " &
73--                      "TWO-DIMENSIONAL ARRAY FORMAL PARAMETER");
74
75     CASE_A2 : DECLARE
76
77                    TYPE TA IS ARRAY (11 .. 12, 10 .. 11) OF CHARACTER;
78
79                    PROCEDURE PROC1 (A : TA) IS
80                    BEGIN
81                         IF A'FIRST(1) /= 11 OR A'FIRST(2) /= 10 THEN
82                              FAILED ("CASE 2 : LOWER BOUND " &
83                                      "INCORRECT");
84                         ELSIF A'LAST(1) /= 12 OR A'LAST(2) /= 11 THEN
85                              FAILED ("CASE 2 : UPPER BOUND " &
86                                      "INCORRECT");
87                         ELSIF A /= ("AB", "CD") THEN
88                              FAILED ("CASE 2 : ARRAY DOES NOT " &
89                                      "CONTAIN THE CORRECT VALUES");
90                         END IF;
91                    END;
92
93               BEGIN
94
95                    PROC1 (("AB", "CD"));
96
97               END CASE_A2;
98
99          END CASE_A;
100
101     END;
102
103     RESULT;
104
105END C43214B;
106