1-- A85007D.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 'FIRST, 'LAST, 'LENGTH, 'RANGE, 'ADDRESS, 'CONSTRAINED,
26-- AND 'SIZE CAN BE APPLIED TO RENAMED NON-ACCESS OUT FORMAL PARAMETERS
27-- AND RENAMED COMPONENTS OF NON-ACCESS OUT PARAMETERS.
28
29-- SPS 02/21/84 (SEE A62006D-B.ADA)
30-- EG  02/22/84
31-- EG  05/30/84
32-- JBG 12/2/84
33
34WITH REPORT; USE REPORT;
35WITH SYSTEM;
36
37PROCEDURE A85007D IS
38
39     PROCEDURE Q (X : SYSTEM.ADDRESS) IS
40     BEGIN
41          NULL;
42     END Q;
43
44BEGIN
45
46     TEST ("A85007D", "CHECK THAT ATTRIBUTES MAY BE APPLIED TO " &
47           "RENAMED NON-ACCESS FORMAL OUT PARAMETERS");
48
49     DECLARE
50
51          TYPE ARR IS ARRAY (1 .. 2) OF BOOLEAN;
52          TYPE REC (D : INTEGER) IS RECORD
53               Y : BOOLEAN;
54               X : ARR;
55          END RECORD;
56
57          PROCEDURE PROC (C2 : OUT ARR;
58                          C3 : OUT REC) IS
59
60               X : SYSTEM.ADDRESS;
61               I : INTEGER;
62
63               C21 : ARR RENAMES C2;
64               C22 : ARR RENAMES C21;
65               C31 : REC RENAMES C3;
66               C32 : REC RENAMES C31;
67               C33 : ARR RENAMES C3.X;
68               C34 : ARR RENAMES C33;
69               C35 : ARR RENAMES C32.X;
70               C36 : BOOLEAN RENAMES C3.Y;
71               C37 : BOOLEAN RENAMES C36;
72               C38 : BOOLEAN RENAMES C32.Y;
73
74          BEGIN
75
76               I := C21'LENGTH;
77               Q(C21'ADDRESS);
78               I := C21'SIZE;
79               I := C22'LENGTH;
80               Q(C22'ADDRESS);
81               I := C22'SIZE;
82
83               FOR I IN C21'RANGE LOOP
84                    NULL;
85               END LOOP;
86               FOR I IN C22'RANGE LOOP
87                    NULL;
88               END LOOP;
89
90               FOR I IN C21'FIRST..C21'LAST LOOP
91                    NULL;
92               END LOOP;
93               FOR I IN C22'FIRST..C22'LAST LOOP
94                    NULL;
95               END LOOP;
96
97               I := C31.X'LENGTH;
98               C3.Y := C31'CONSTRAINED;
99               FOR J IN C31.X'RANGE LOOP
100                    NULL;
101               END LOOP;
102               FOR J IN C31.X'FIRST..C31.X'LAST LOOP
103                    NULL;
104               END LOOP;
105               I := C32.X'LENGTH;
106               C31.Y := C32'CONSTRAINED;
107               FOR J IN C32.X'RANGE LOOP
108                    NULL;
109               END LOOP;
110               FOR J IN C32.X'FIRST..C32.X'LAST LOOP
111                    NULL;
112               END LOOP;
113               I := C33'LENGTH;
114               FOR J IN C33'RANGE LOOP
115                    NULL;
116               END LOOP;
117               FOR J IN C33'FIRST..C33'LAST LOOP
118                    NULL;
119               END LOOP;
120               I := C34'LENGTH;
121               FOR J IN C34'RANGE LOOP
122                    NULL;
123               END LOOP;
124               FOR J IN C34'FIRST..C34'LAST LOOP
125                    NULL;
126               END LOOP;
127               I := C35'LENGTH;
128               FOR J IN C35'RANGE LOOP
129                    NULL;
130               END LOOP;
131               FOR J IN C35'FIRST..C35'LAST LOOP
132                    NULL;
133               END LOOP;
134
135               Q(C31.Y'ADDRESS);
136               I := C31.Y'SIZE;
137               Q(C32.Y'ADDRESS);
138               I := C32.Y'SIZE;
139               Q(C36'ADDRESS);
140               I := C36'SIZE;
141               Q(C37'ADDRESS);
142               I := C37'SIZE;
143               Q(C38'ADDRESS);
144               I := C38'SIZE;
145
146          END PROC;
147
148     BEGIN
149
150          NULL;
151
152     END;
153
154     RESULT;
155
156END A85007D;
157