1-- C45347A.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 CATENATION IS DEFINED FOR RECORD TYPES AS COMPONENT TYPES.
26
27-- JWC 11/15/85
28
29WITH REPORT; USE REPORT;
30
31PROCEDURE C45347A IS
32
33BEGIN
34
35     TEST ("C45347A", "CHECK THAT CATENATION IS DEFINED " &
36                      "FOR RECORD TYPES AS COMPONENT TYPES");
37
38     DECLARE
39
40          TYPE REC IS
41               RECORD
42                    X : INTEGER;
43               END RECORD;
44
45          SUBTYPE INT IS INTEGER RANGE 1 .. 4;
46          TYPE A IS ARRAY ( INT RANGE <>) OF REC;
47
48          R1 : REC := (X => 4);
49          R2 : REC := (X => 1);
50
51          A1 : A(1 .. 2) := ((X => 1), (X => 2));
52          A2 : A(1 .. 2) := ((X => 3), (X => 4));
53          A3 : A(1 .. 4) := ((X => 1), (X => 2), (X => 3), (X => 4));
54          A4 : A(1 .. 4);
55          A5 : A(1 .. 4) := ((X => 4), (X => 3), (X => 2), (X => 1));
56
57     BEGIN
58
59          A4 := A1 & A2;
60
61          IF A3 /= A4 THEN
62               FAILED ("INCORRECT CATENATION FOR TWO ARRAYS OF " &
63                       "RECORDS");
64          END IF;
65
66          A4 := A5;
67
68          A4 := A1 & A2(1) & R1;
69
70          IF A3 /= A4 THEN
71               FAILED ("INCORRECT CATENATION FOR ARRAY OF RECORD, " &
72                       "AND RECORDS");
73          END IF;
74
75          A4 := A5;
76
77          A4 := R2 & (A1(2) & A2);
78
79          IF A3 /= A4 THEN
80               FAILED ("INCORRECT CATENATION FOR RECORDS, " &
81                       "AND ARRAY OF RECORDS");
82          END IF;
83
84          A4 := A5;
85
86          A4 := R2 & A1(2) & (A2(1) & R1);
87
88          IF A3 /= A4 THEN
89               FAILED ("INCORRECT CATENATION FOR RECORDS");
90          END IF;
91
92     END;
93
94     RESULT;
95
96END C45347A;
97