annotate gcc/testsuite/ada/acats/tests/cc/cc3017b.ada @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 -- CC3017B.ADA
kono
parents:
diff changeset
2
kono
parents:
diff changeset
3 -- Grant of Unlimited Rights
kono
parents:
diff changeset
4 --
kono
parents:
diff changeset
5 -- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
kono
parents:
diff changeset
6 -- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
kono
parents:
diff changeset
7 -- unlimited rights in the software and documentation contained herein.
kono
parents:
diff changeset
8 -- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
kono
parents:
diff changeset
9 -- this public release, the Government intends to confer upon all
kono
parents:
diff changeset
10 -- recipients unlimited rights equal to those held by the Government.
kono
parents:
diff changeset
11 -- These rights include rights to use, duplicate, release or disclose the
kono
parents:
diff changeset
12 -- released technical data and computer software in whole or in part, in
kono
parents:
diff changeset
13 -- any manner and for any purpose whatsoever, and to have or permit others
kono
parents:
diff changeset
14 -- to do so.
kono
parents:
diff changeset
15 --
kono
parents:
diff changeset
16 -- DISCLAIMER
kono
parents:
diff changeset
17 --
kono
parents:
diff changeset
18 -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
kono
parents:
diff changeset
19 -- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
kono
parents:
diff changeset
20 -- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
kono
parents:
diff changeset
21 -- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
kono
parents:
diff changeset
22 -- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
kono
parents:
diff changeset
23 -- PARTICULAR PURPOSE OF SAID MATERIAL.
kono
parents:
diff changeset
24 --*
kono
parents:
diff changeset
25 -- CHECK THAT AN INSTANCE OF A GENERIC PROCEDURE MUST DECLARE A
kono
parents:
diff changeset
26 -- PROCEDURE AND THAT AN INSTANCE OF A GENERIC FUNCTION MUST
kono
parents:
diff changeset
27 -- DECLARE A FUNCTION. CHECK THAT CONSTRAINT_ERROR IS NOT RAISED
kono
parents:
diff changeset
28 -- IF THE DEFAULT VALUE FOR A FORMAL PARAMETER DOES NOT SATISFY
kono
parents:
diff changeset
29 -- THE CONSTRAINTS OF THE SUBTYPE_INDICATION WHEN THE
kono
parents:
diff changeset
30 -- DECLARATION IS ELABORATED, ONLY WHEN THE DEFAULT IS USED.
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 -- SUBTESTS ARE:
kono
parents:
diff changeset
33 -- (A) ARRAY PARAMETERS CONSTRAINED WITH NONSTATIC BOUNDS AND
kono
parents:
diff changeset
34 -- INITIALIZED WITH A STATIC AGGREGATE.
kono
parents:
diff changeset
35 -- (B) A SCALAR PARAMETER WITH NON-STATIC RANGE CONSTRAINTS
kono
parents:
diff changeset
36 -- INITIALIZED WITH A STATIC VALUE.
kono
parents:
diff changeset
37 -- (C) A RECORD PARAMETER WHOSE COMPONENTS HAVE NON-STATIC
kono
parents:
diff changeset
38 -- CONSTRAINTS INITIALIZED WITH A STATIC AGGREGATE.
kono
parents:
diff changeset
39 -- (D) AN ARRAY PARAMETER CONSTRAINED WITH STATIC BOUNDS ON SUB-
kono
parents:
diff changeset
40 -- SCRIPTS AND NON-STATIC BOUNDS ON COMPONENTS, INITIALIZED
kono
parents:
diff changeset
41 -- WITH A STATIC AGGREGATE.
kono
parents:
diff changeset
42 -- (E) A RECORD PARAMETER WITH A NON-STATIC CONSTRAINT
kono
parents:
diff changeset
43 -- INITIALIZED WITH A STATIC AGGREGATE.
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 -- EDWARD V. BERARD, 7 AUGUST 1990
kono
parents:
diff changeset
46
kono
parents:
diff changeset
47 WITH REPORT;
kono
parents:
diff changeset
48
kono
parents:
diff changeset
49 PROCEDURE CC3017B IS
kono
parents:
diff changeset
50
kono
parents:
diff changeset
51 BEGIN
kono
parents:
diff changeset
52
kono
parents:
diff changeset
53 REPORT.TEST ("CC3017B", "CHECK THAT AN INSTANCE OF A GENERIC " &
kono
parents:
diff changeset
54 "PROCEDURE MUST DECLARE A PROCEDURE AND THAT AN " &
kono
parents:
diff changeset
55 "INSTANCE OF A GENERIC FUNCTION MUST DECLARE A " &
kono
parents:
diff changeset
56 "FUNCTION. CHECK THAT CONSTRAINT_ERROR IS NOT " &
kono
parents:
diff changeset
57 "RAISED IF AN INITIALIZATION VALUE DOES NOT SATISFY " &
kono
parents:
diff changeset
58 "CONSTRAINTS ON A FORMAL PARAMETER");
kono
parents:
diff changeset
59
kono
parents:
diff changeset
60 --------------------------------------------------
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 NONSTAT_ARRAY_PARMS:
kono
parents:
diff changeset
63
kono
parents:
diff changeset
64 DECLARE
kono
parents:
diff changeset
65
kono
parents:
diff changeset
66 -- (A) ARRAY PARAMETERS CONSTRAINED WITH NONSTATIC BOUNDS AND
kono
parents:
diff changeset
67 -- INITIALIZED WITH A STATIC AGGREGATE.
kono
parents:
diff changeset
68
kono
parents:
diff changeset
69 TYPE NUMBER IS RANGE 1 .. 100 ;
kono
parents:
diff changeset
70
kono
parents:
diff changeset
71 GENERIC
kono
parents:
diff changeset
72
kono
parents:
diff changeset
73 TYPE INTEGER_TYPE IS RANGE <> ;
kono
parents:
diff changeset
74 LOWER : IN INTEGER_TYPE ;
kono
parents:
diff changeset
75 UPPER : IN INTEGER_TYPE ;
kono
parents:
diff changeset
76
kono
parents:
diff changeset
77 PROCEDURE PA (FIRST : IN INTEGER_TYPE ;
kono
parents:
diff changeset
78 SECOND : IN INTEGER_TYPE) ;
kono
parents:
diff changeset
79
kono
parents:
diff changeset
80 PROCEDURE PA (FIRST : IN INTEGER_TYPE ;
kono
parents:
diff changeset
81 SECOND : IN INTEGER_TYPE) IS
kono
parents:
diff changeset
82
kono
parents:
diff changeset
83 TYPE A1 IS ARRAY (INTEGER_TYPE RANGE LOWER .. FIRST,
kono
parents:
diff changeset
84 INTEGER_TYPE RANGE LOWER .. SECOND)
kono
parents:
diff changeset
85 OF INTEGER_TYPE;
kono
parents:
diff changeset
86
kono
parents:
diff changeset
87 PROCEDURE PA1 (A : A1 := ((LOWER,UPPER),(UPPER,UPPER)))
kono
parents:
diff changeset
88 IS
kono
parents:
diff changeset
89 BEGIN
kono
parents:
diff changeset
90 REPORT.FAILED ("BODY OF PA1 EXECUTED");
kono
parents:
diff changeset
91 EXCEPTION
kono
parents:
diff changeset
92 WHEN OTHERS =>
kono
parents:
diff changeset
93 REPORT.FAILED ("EXCEPTION RAISED IN PA1");
kono
parents:
diff changeset
94 END PA1;
kono
parents:
diff changeset
95
kono
parents:
diff changeset
96 BEGIN -- PA
kono
parents:
diff changeset
97 PA1;
kono
parents:
diff changeset
98 EXCEPTION
kono
parents:
diff changeset
99 WHEN CONSTRAINT_ERROR =>
kono
parents:
diff changeset
100 NULL;
kono
parents:
diff changeset
101 WHEN OTHERS =>
kono
parents:
diff changeset
102 REPORT.FAILED ("WRONG EXCEPTION RAISED - PA1");
kono
parents:
diff changeset
103 END PA;
kono
parents:
diff changeset
104
kono
parents:
diff changeset
105 PROCEDURE NEW_PA IS NEW PA (INTEGER_TYPE => NUMBER,
kono
parents:
diff changeset
106 LOWER => 1,
kono
parents:
diff changeset
107 UPPER => 50) ;
kono
parents:
diff changeset
108
kono
parents:
diff changeset
109 BEGIN -- NONSTAT_ARRAY_PARMS
kono
parents:
diff changeset
110
kono
parents:
diff changeset
111 NEW_PA (FIRST => NUMBER (25),
kono
parents:
diff changeset
112 SECOND => NUMBER (75));
kono
parents:
diff changeset
113
kono
parents:
diff changeset
114 EXCEPTION
kono
parents:
diff changeset
115 WHEN OTHERS =>
kono
parents:
diff changeset
116 REPORT.FAILED ("EXCEPTION RAISED IN CALL TO NEW_PA");
kono
parents:
diff changeset
117
kono
parents:
diff changeset
118 END NONSTAT_ARRAY_PARMS ;
kono
parents:
diff changeset
119
kono
parents:
diff changeset
120 --------------------------------------------------
kono
parents:
diff changeset
121
kono
parents:
diff changeset
122 SCALAR_NON_STATIC:
kono
parents:
diff changeset
123
kono
parents:
diff changeset
124 DECLARE
kono
parents:
diff changeset
125
kono
parents:
diff changeset
126 -- (B) A SCALAR PARAMETER WITH NON-STATIC RANGE CONSTRAINTS
kono
parents:
diff changeset
127 -- INITIALIZED WITH A STATIC VALUE.
kono
parents:
diff changeset
128
kono
parents:
diff changeset
129 TYPE NUMBER IS RANGE 1 .. 100 ;
kono
parents:
diff changeset
130
kono
parents:
diff changeset
131 GENERIC
kono
parents:
diff changeset
132
kono
parents:
diff changeset
133 TYPE INTEGER_TYPE IS RANGE <> ;
kono
parents:
diff changeset
134 STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
135
kono
parents:
diff changeset
136 PROCEDURE PB (LOWER : IN INTEGER_TYPE ;
kono
parents:
diff changeset
137 UPPER : IN INTEGER_TYPE) ;
kono
parents:
diff changeset
138
kono
parents:
diff changeset
139 PROCEDURE PB (LOWER : IN INTEGER_TYPE ;
kono
parents:
diff changeset
140 UPPER : IN INTEGER_TYPE) IS
kono
parents:
diff changeset
141
kono
parents:
diff changeset
142 SUBTYPE INT IS INTEGER_TYPE RANGE LOWER .. UPPER ;
kono
parents:
diff changeset
143
kono
parents:
diff changeset
144 PROCEDURE PB1 (I : INT := STATIC_VALUE) IS
kono
parents:
diff changeset
145 BEGIN -- PB1
kono
parents:
diff changeset
146 REPORT.FAILED ("BODY OF PB1 EXECUTED");
kono
parents:
diff changeset
147 EXCEPTION
kono
parents:
diff changeset
148 WHEN OTHERS =>
kono
parents:
diff changeset
149 REPORT.FAILED ("EXCEPTION RAISED IN PB1");
kono
parents:
diff changeset
150 END PB1;
kono
parents:
diff changeset
151
kono
parents:
diff changeset
152 BEGIN -- PB
kono
parents:
diff changeset
153 PB1;
kono
parents:
diff changeset
154 EXCEPTION
kono
parents:
diff changeset
155 WHEN CONSTRAINT_ERROR =>
kono
parents:
diff changeset
156 NULL;
kono
parents:
diff changeset
157 WHEN OTHERS =>
kono
parents:
diff changeset
158 REPORT.FAILED ("WRONG EXCEPTION RAISED - PB1");
kono
parents:
diff changeset
159 END PB;
kono
parents:
diff changeset
160
kono
parents:
diff changeset
161 PROCEDURE NEW_PB IS NEW PB (INTEGER_TYPE => NUMBER,
kono
parents:
diff changeset
162 STATIC_VALUE => 20) ;
kono
parents:
diff changeset
163
kono
parents:
diff changeset
164 BEGIN -- SCALAR_NON_STATIC
kono
parents:
diff changeset
165
kono
parents:
diff changeset
166 NEW_PB (LOWER => NUMBER (25),
kono
parents:
diff changeset
167 UPPER => NUMBER (75));
kono
parents:
diff changeset
168
kono
parents:
diff changeset
169 EXCEPTION
kono
parents:
diff changeset
170 WHEN OTHERS =>
kono
parents:
diff changeset
171 REPORT.FAILED ("EXCEPTION RAISED IN CALL TO NEW_PB");
kono
parents:
diff changeset
172 END SCALAR_NON_STATIC ;
kono
parents:
diff changeset
173
kono
parents:
diff changeset
174 --------------------------------------------------
kono
parents:
diff changeset
175
kono
parents:
diff changeset
176 REC_NON_STAT_COMPS:
kono
parents:
diff changeset
177
kono
parents:
diff changeset
178 DECLARE
kono
parents:
diff changeset
179
kono
parents:
diff changeset
180 -- (C) A RECORD PARAMETER WHOSE COMPONENTS HAVE NON-STATIC
kono
parents:
diff changeset
181 -- CONSTRAINTS INITIALIZED WITH A STATIC AGGREGATE.
kono
parents:
diff changeset
182
kono
parents:
diff changeset
183 TYPE NUMBER IS RANGE 1 .. 100 ;
kono
parents:
diff changeset
184
kono
parents:
diff changeset
185 GENERIC
kono
parents:
diff changeset
186
kono
parents:
diff changeset
187 TYPE INTEGER_TYPE IS RANGE <> ;
kono
parents:
diff changeset
188 F_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
189 S_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
190 T_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
191 L_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
192
kono
parents:
diff changeset
193 PROCEDURE PC (LOWER : IN INTEGER_TYPE ;
kono
parents:
diff changeset
194 UPPER : IN INTEGER_TYPE) ;
kono
parents:
diff changeset
195
kono
parents:
diff changeset
196 PROCEDURE PC (LOWER : IN INTEGER_TYPE ;
kono
parents:
diff changeset
197 UPPER : IN INTEGER_TYPE) IS
kono
parents:
diff changeset
198
kono
parents:
diff changeset
199 SUBTYPE SUBINTEGER_TYPE IS INTEGER_TYPE
kono
parents:
diff changeset
200 RANGE LOWER .. UPPER ;
kono
parents:
diff changeset
201 TYPE AR1 IS ARRAY (INTEGER RANGE 1..3) OF
kono
parents:
diff changeset
202 SUBINTEGER_TYPE ;
kono
parents:
diff changeset
203 TYPE REC IS
kono
parents:
diff changeset
204 RECORD
kono
parents:
diff changeset
205 FIRST : SUBINTEGER_TYPE ;
kono
parents:
diff changeset
206 SECOND : AR1 ;
kono
parents:
diff changeset
207 END RECORD;
kono
parents:
diff changeset
208
kono
parents:
diff changeset
209 PROCEDURE PC1 (R : REC := (F_STATIC_VALUE,
kono
parents:
diff changeset
210 (S_STATIC_VALUE,
kono
parents:
diff changeset
211 T_STATIC_VALUE,
kono
parents:
diff changeset
212 L_STATIC_VALUE))) IS
kono
parents:
diff changeset
213 BEGIN -- PC1
kono
parents:
diff changeset
214 REPORT.FAILED ("BODY OF PC1 EXECUTED");
kono
parents:
diff changeset
215 EXCEPTION
kono
parents:
diff changeset
216 WHEN OTHERS =>
kono
parents:
diff changeset
217 REPORT.FAILED ("EXCEPTION RAISED IN PC1");
kono
parents:
diff changeset
218 END PC1;
kono
parents:
diff changeset
219
kono
parents:
diff changeset
220 BEGIN -- PC
kono
parents:
diff changeset
221 PC1;
kono
parents:
diff changeset
222 EXCEPTION
kono
parents:
diff changeset
223 WHEN CONSTRAINT_ERROR =>
kono
parents:
diff changeset
224 NULL;
kono
parents:
diff changeset
225 WHEN OTHERS =>
kono
parents:
diff changeset
226 REPORT.FAILED ("WRONG EXCEPTION RAISED - PC1");
kono
parents:
diff changeset
227 END PC;
kono
parents:
diff changeset
228
kono
parents:
diff changeset
229 PROCEDURE NEW_PC IS NEW PC (INTEGER_TYPE => NUMBER,
kono
parents:
diff changeset
230 F_STATIC_VALUE => 15,
kono
parents:
diff changeset
231 S_STATIC_VALUE => 19,
kono
parents:
diff changeset
232 T_STATIC_VALUE => 85,
kono
parents:
diff changeset
233 L_STATIC_VALUE => 99) ;
kono
parents:
diff changeset
234
kono
parents:
diff changeset
235 BEGIN -- REC_NON_STAT_COMPS
kono
parents:
diff changeset
236 NEW_PC (LOWER => 20,
kono
parents:
diff changeset
237 UPPER => 80);
kono
parents:
diff changeset
238 EXCEPTION
kono
parents:
diff changeset
239 WHEN OTHERS =>
kono
parents:
diff changeset
240 REPORT.FAILED ("EXCEPTION RAISED IN CALL TO NEW_PC");
kono
parents:
diff changeset
241 END REC_NON_STAT_COMPS ;
kono
parents:
diff changeset
242
kono
parents:
diff changeset
243 --------------------------------------------------
kono
parents:
diff changeset
244
kono
parents:
diff changeset
245 FIRST_STATIC_ARRAY:
kono
parents:
diff changeset
246
kono
parents:
diff changeset
247 DECLARE
kono
parents:
diff changeset
248
kono
parents:
diff changeset
249 -- (D) AN ARRAY PARAMETER CONSTRAINED WITH STATIC BOUNDS ON SUB-
kono
parents:
diff changeset
250 -- SCRIPTS AND NON-STATIC BOUNDS ON COMPONENTS, INITIALIZED
kono
parents:
diff changeset
251 -- WITH A STATIC AGGREGATE.
kono
parents:
diff changeset
252
kono
parents:
diff changeset
253 TYPE NUMBER IS RANGE 1 .. 100 ;
kono
parents:
diff changeset
254
kono
parents:
diff changeset
255 GENERIC
kono
parents:
diff changeset
256
kono
parents:
diff changeset
257 TYPE INTEGER_TYPE IS RANGE <> ;
kono
parents:
diff changeset
258 F_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
259 S_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
260 T_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
261 L_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
262 A_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
263 B_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
264 C_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
265 D_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
266
kono
parents:
diff changeset
267 PROCEDURE P1D (LOWER : IN INTEGER_TYPE ;
kono
parents:
diff changeset
268 UPPER : IN INTEGER_TYPE) ;
kono
parents:
diff changeset
269
kono
parents:
diff changeset
270 PROCEDURE P1D (LOWER : IN INTEGER_TYPE ;
kono
parents:
diff changeset
271 UPPER : IN INTEGER_TYPE) IS
kono
parents:
diff changeset
272
kono
parents:
diff changeset
273 SUBTYPE SUBINTEGER_TYPE IS INTEGER_TYPE
kono
parents:
diff changeset
274 RANGE LOWER .. UPPER ;
kono
parents:
diff changeset
275
kono
parents:
diff changeset
276 TYPE A1 IS ARRAY (INTEGER_TYPE RANGE
kono
parents:
diff changeset
277 F_STATIC_VALUE .. S_STATIC_VALUE,
kono
parents:
diff changeset
278 INTEGER_TYPE RANGE
kono
parents:
diff changeset
279 T_STATIC_VALUE .. L_STATIC_VALUE)
kono
parents:
diff changeset
280 OF SUBINTEGER_TYPE ;
kono
parents:
diff changeset
281
kono
parents:
diff changeset
282 PROCEDURE P1D1 (A : A1 :=
kono
parents:
diff changeset
283 ((A_STATIC_VALUE, B_STATIC_VALUE),
kono
parents:
diff changeset
284 (C_STATIC_VALUE, D_STATIC_VALUE))) IS
kono
parents:
diff changeset
285 BEGIN -- P1D1
kono
parents:
diff changeset
286 REPORT.FAILED ("BODY OF P1D1 EXECUTED");
kono
parents:
diff changeset
287 EXCEPTION
kono
parents:
diff changeset
288 WHEN OTHERS =>
kono
parents:
diff changeset
289 REPORT.FAILED ("EXCEPTION RAISED IN P1D1");
kono
parents:
diff changeset
290 END P1D1;
kono
parents:
diff changeset
291
kono
parents:
diff changeset
292 BEGIN -- P1D
kono
parents:
diff changeset
293 P1D1 ;
kono
parents:
diff changeset
294 EXCEPTION
kono
parents:
diff changeset
295 WHEN CONSTRAINT_ERROR =>
kono
parents:
diff changeset
296 NULL;
kono
parents:
diff changeset
297 WHEN OTHERS =>
kono
parents:
diff changeset
298 REPORT.FAILED ("WRONG EXCEPTION RAISED - P1D1");
kono
parents:
diff changeset
299 END P1D;
kono
parents:
diff changeset
300
kono
parents:
diff changeset
301 PROCEDURE NEW_P1D IS NEW P1D (INTEGER_TYPE => NUMBER,
kono
parents:
diff changeset
302 F_STATIC_VALUE => 21,
kono
parents:
diff changeset
303 S_STATIC_VALUE => 37,
kono
parents:
diff changeset
304 T_STATIC_VALUE => 67,
kono
parents:
diff changeset
305 L_STATIC_VALUE => 79,
kono
parents:
diff changeset
306 A_STATIC_VALUE => 11,
kono
parents:
diff changeset
307 B_STATIC_VALUE => 88,
kono
parents:
diff changeset
308 C_STATIC_VALUE => 87,
kono
parents:
diff changeset
309 D_STATIC_VALUE => 13) ;
kono
parents:
diff changeset
310
kono
parents:
diff changeset
311 BEGIN -- FIRST_STATIC_ARRAY
kono
parents:
diff changeset
312 NEW_P1D (LOWER => 10,
kono
parents:
diff changeset
313 UPPER => 90);
kono
parents:
diff changeset
314 EXCEPTION
kono
parents:
diff changeset
315 WHEN OTHERS =>
kono
parents:
diff changeset
316 REPORT.FAILED ("EXCEPTION RAISED IN CALL TO NEW_P1D");
kono
parents:
diff changeset
317 END FIRST_STATIC_ARRAY ;
kono
parents:
diff changeset
318
kono
parents:
diff changeset
319 --------------------------------------------------
kono
parents:
diff changeset
320
kono
parents:
diff changeset
321 SECOND_STATIC_ARRAY:
kono
parents:
diff changeset
322
kono
parents:
diff changeset
323 DECLARE
kono
parents:
diff changeset
324
kono
parents:
diff changeset
325 -- (D) AN ARRAY PARAMETER CONSTRAINED WITH STATIC BOUNDS ON SUB-
kono
parents:
diff changeset
326 -- SCRIPTS AND NON-STATIC BOUNDS ON COMPONENTS, INITIALIZED
kono
parents:
diff changeset
327 -- WITH A STATIC AGGREGATE.
kono
parents:
diff changeset
328
kono
parents:
diff changeset
329 TYPE NUMBER IS RANGE 1 .. 100 ;
kono
parents:
diff changeset
330
kono
parents:
diff changeset
331 GENERIC
kono
parents:
diff changeset
332
kono
parents:
diff changeset
333 TYPE INTEGER_TYPE IS RANGE <> ;
kono
parents:
diff changeset
334 F_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
335 S_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
336 T_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
337 L_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
338 A_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
339 B_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
340
kono
parents:
diff changeset
341 PROCEDURE P2D (LOWER : IN INTEGER_TYPE ;
kono
parents:
diff changeset
342 UPPER : IN INTEGER_TYPE) ;
kono
parents:
diff changeset
343
kono
parents:
diff changeset
344 PROCEDURE P2D (LOWER : IN INTEGER_TYPE ;
kono
parents:
diff changeset
345 UPPER : IN INTEGER_TYPE) IS
kono
parents:
diff changeset
346
kono
parents:
diff changeset
347 SUBTYPE SUBINTEGER_TYPE IS INTEGER_TYPE
kono
parents:
diff changeset
348 RANGE LOWER .. UPPER ;
kono
parents:
diff changeset
349
kono
parents:
diff changeset
350 TYPE A1 IS ARRAY (INTEGER_TYPE RANGE
kono
parents:
diff changeset
351 F_STATIC_VALUE .. S_STATIC_VALUE,
kono
parents:
diff changeset
352 INTEGER_TYPE RANGE
kono
parents:
diff changeset
353 T_STATIC_VALUE .. L_STATIC_VALUE)
kono
parents:
diff changeset
354 OF SUBINTEGER_TYPE ;
kono
parents:
diff changeset
355
kono
parents:
diff changeset
356 PROCEDURE P2D1 (A : A1 :=
kono
parents:
diff changeset
357 (F_STATIC_VALUE .. S_STATIC_VALUE =>
kono
parents:
diff changeset
358 (A_STATIC_VALUE, B_STATIC_VALUE))) IS
kono
parents:
diff changeset
359 BEGIN -- P2D1
kono
parents:
diff changeset
360 REPORT.FAILED ("BODY OF P2D1 EXECUTED");
kono
parents:
diff changeset
361 EXCEPTION
kono
parents:
diff changeset
362 WHEN OTHERS =>
kono
parents:
diff changeset
363 REPORT.FAILED ("EXCEPTION RAISED IN P2D1");
kono
parents:
diff changeset
364 END P2D1;
kono
parents:
diff changeset
365
kono
parents:
diff changeset
366 BEGIN -- P2D
kono
parents:
diff changeset
367 P2D1;
kono
parents:
diff changeset
368 EXCEPTION
kono
parents:
diff changeset
369 WHEN CONSTRAINT_ERROR =>
kono
parents:
diff changeset
370 NULL;
kono
parents:
diff changeset
371 WHEN OTHERS =>
kono
parents:
diff changeset
372 REPORT.FAILED ("WRONG EXCEPTION RAISED - P2D1");
kono
parents:
diff changeset
373 END P2D;
kono
parents:
diff changeset
374
kono
parents:
diff changeset
375 PROCEDURE NEW_P2D IS NEW P2D (INTEGER_TYPE => NUMBER,
kono
parents:
diff changeset
376 F_STATIC_VALUE => 21,
kono
parents:
diff changeset
377 S_STATIC_VALUE => 37,
kono
parents:
diff changeset
378 T_STATIC_VALUE => 67,
kono
parents:
diff changeset
379 L_STATIC_VALUE => 79,
kono
parents:
diff changeset
380 A_STATIC_VALUE => 7,
kono
parents:
diff changeset
381 B_STATIC_VALUE => 93) ;
kono
parents:
diff changeset
382
kono
parents:
diff changeset
383 BEGIN -- SECOND_STATIC_ARRAY
kono
parents:
diff changeset
384 NEW_P2D (LOWER => 5,
kono
parents:
diff changeset
385 UPPER => 95);
kono
parents:
diff changeset
386 EXCEPTION
kono
parents:
diff changeset
387 WHEN OTHERS =>
kono
parents:
diff changeset
388 REPORT.FAILED ("EXCEPTION RAISED IN CALL TO NEW_P2D");
kono
parents:
diff changeset
389 END SECOND_STATIC_ARRAY ;
kono
parents:
diff changeset
390
kono
parents:
diff changeset
391 --------------------------------------------------
kono
parents:
diff changeset
392
kono
parents:
diff changeset
393 REC_NON_STATIC_CONS:
kono
parents:
diff changeset
394
kono
parents:
diff changeset
395 DECLARE
kono
parents:
diff changeset
396
kono
parents:
diff changeset
397 -- (E) A RECORD PARAMETER WITH A NON-STATIC CONSTRAINT
kono
parents:
diff changeset
398 -- INITIALIZED WITH A STATIC AGGREGATE.
kono
parents:
diff changeset
399
kono
parents:
diff changeset
400 TYPE NUMBER IS RANGE 1 .. 100 ;
kono
parents:
diff changeset
401
kono
parents:
diff changeset
402 GENERIC
kono
parents:
diff changeset
403
kono
parents:
diff changeset
404 TYPE INTEGER_TYPE IS RANGE <> ;
kono
parents:
diff changeset
405 F_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
406 S_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
407 T_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
408 L_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
409 D_STATIC_VALUE : IN INTEGER_TYPE ;
kono
parents:
diff changeset
410
kono
parents:
diff changeset
411 PROCEDURE PE (LOWER : IN INTEGER_TYPE ;
kono
parents:
diff changeset
412 UPPER : IN INTEGER_TYPE) ;
kono
parents:
diff changeset
413
kono
parents:
diff changeset
414 PROCEDURE PE (LOWER : IN INTEGER_TYPE ;
kono
parents:
diff changeset
415 UPPER : IN INTEGER_TYPE) IS
kono
parents:
diff changeset
416
kono
parents:
diff changeset
417 SUBTYPE SUBINTEGER_TYPE IS INTEGER_TYPE
kono
parents:
diff changeset
418 RANGE LOWER .. UPPER ;
kono
parents:
diff changeset
419 TYPE AR1 IS ARRAY (INTEGER RANGE 1..3) OF
kono
parents:
diff changeset
420 SUBINTEGER_TYPE ;
kono
parents:
diff changeset
421
kono
parents:
diff changeset
422 TYPE REC (DISCRIM : SUBINTEGER_TYPE) IS
kono
parents:
diff changeset
423 RECORD
kono
parents:
diff changeset
424 FIRST : SUBINTEGER_TYPE ;
kono
parents:
diff changeset
425 SECOND : AR1 ;
kono
parents:
diff changeset
426 END RECORD ;
kono
parents:
diff changeset
427
kono
parents:
diff changeset
428 SUBTYPE REC4 IS REC (LOWER) ;
kono
parents:
diff changeset
429
kono
parents:
diff changeset
430 PROCEDURE PE1 (R : REC4 := (D_STATIC_VALUE,
kono
parents:
diff changeset
431 F_STATIC_VALUE,
kono
parents:
diff changeset
432 (S_STATIC_VALUE,
kono
parents:
diff changeset
433 T_STATIC_VALUE,
kono
parents:
diff changeset
434 L_STATIC_VALUE))) IS
kono
parents:
diff changeset
435 BEGIN -- PE1
kono
parents:
diff changeset
436 REPORT.FAILED ("BODY OF PE1 EXECUTED");
kono
parents:
diff changeset
437 EXCEPTION
kono
parents:
diff changeset
438 WHEN OTHERS =>
kono
parents:
diff changeset
439 REPORT.FAILED ("EXCEPTION RAISED IN PE1");
kono
parents:
diff changeset
440 END PE1;
kono
parents:
diff changeset
441
kono
parents:
diff changeset
442 BEGIN -- PE
kono
parents:
diff changeset
443 PE1;
kono
parents:
diff changeset
444 EXCEPTION
kono
parents:
diff changeset
445 WHEN CONSTRAINT_ERROR =>
kono
parents:
diff changeset
446 NULL;
kono
parents:
diff changeset
447 WHEN OTHERS =>
kono
parents:
diff changeset
448 REPORT.FAILED ("WRONG EXCEPTION RAISED - PE1");
kono
parents:
diff changeset
449 END PE;
kono
parents:
diff changeset
450
kono
parents:
diff changeset
451 PROCEDURE NEW_PE IS NEW PE (INTEGER_TYPE => NUMBER,
kono
parents:
diff changeset
452 F_STATIC_VALUE => 37,
kono
parents:
diff changeset
453 S_STATIC_VALUE => 21,
kono
parents:
diff changeset
454 T_STATIC_VALUE => 67,
kono
parents:
diff changeset
455 L_STATIC_VALUE => 79,
kono
parents:
diff changeset
456 D_STATIC_VALUE => 44) ;
kono
parents:
diff changeset
457
kono
parents:
diff changeset
458 BEGIN -- REC_NON_STATIC_CONS
kono
parents:
diff changeset
459 NEW_PE (LOWER => 2,
kono
parents:
diff changeset
460 UPPER => 99);
kono
parents:
diff changeset
461 EXCEPTION
kono
parents:
diff changeset
462 WHEN OTHERS =>
kono
parents:
diff changeset
463 REPORT.FAILED ("EXCEPTION RAISED IN CALL TO NEW_PE");
kono
parents:
diff changeset
464 END REC_NON_STATIC_CONS ;
kono
parents:
diff changeset
465
kono
parents:
diff changeset
466 --------------------------------------------------
kono
parents:
diff changeset
467
kono
parents:
diff changeset
468 REPORT.RESULT;
kono
parents:
diff changeset
469
kono
parents:
diff changeset
470 END CC3017B;