3 -- Grant of Unlimited Rights
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
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.
25 -- CHECK THAT AN INSTANCE OF A GENERIC PROCEDURE MUST DECLARE A
26 -- PROCEDURE AND THAT AN INSTANCE OF A GENERIC FUNCTION MUST
27 -- DECLARE A FUNCTION. CHECK THAT CONSTRAINT_ERROR IS NOT RAISED
28 -- IF THE DEFAULT VALUE FOR A FORMAL PARAMETER DOES NOT SATISFY
29 -- THE CONSTRAINTS OF THE SUBTYPE_INDICATION WHEN THE
30 -- DECLARATION IS ELABORATED, ONLY WHEN THE DEFAULT IS USED.
33 -- (A) ARRAY PARAMETERS CONSTRAINED WITH NONSTATIC BOUNDS AND
34 -- INITIALIZED WITH A STATIC AGGREGATE.
35 -- (B) A SCALAR PARAMETER WITH NON-STATIC RANGE CONSTRAINTS
36 -- INITIALIZED WITH A STATIC VALUE.
37 -- (C) A RECORD PARAMETER WHOSE COMPONENTS HAVE NON-STATIC
38 -- CONSTRAINTS INITIALIZED WITH A STATIC AGGREGATE.
39 -- (D) AN ARRAY PARAMETER CONSTRAINED WITH STATIC BOUNDS ON SUB-
40 -- SCRIPTS AND NON-STATIC BOUNDS ON COMPONENTS, INITIALIZED
41 -- WITH A STATIC AGGREGATE.
42 -- (E) A RECORD PARAMETER WITH A NON-STATIC CONSTRAINT
43 -- INITIALIZED WITH A STATIC AGGREGATE.
45 -- EDWARD V. BERARD, 7 AUGUST 1990
53 REPORT
.TEST
("CC3017B", "CHECK THAT AN INSTANCE OF A GENERIC " &
54 "PROCEDURE MUST DECLARE A PROCEDURE AND THAT AN " &
55 "INSTANCE OF A GENERIC FUNCTION MUST DECLARE A " &
56 "FUNCTION. CHECK THAT CONSTRAINT_ERROR IS NOT " &
57 "RAISED IF AN INITIALIZATION VALUE DOES NOT SATISFY " &
58 "CONSTRAINTS ON A FORMAL PARAMETER");
60 --------------------------------------------------
66 -- (A) ARRAY PARAMETERS CONSTRAINED WITH NONSTATIC BOUNDS AND
67 -- INITIALIZED WITH A STATIC AGGREGATE.
69 TYPE NUMBER
IS RANGE 1 .. 100 ;
73 TYPE INTEGER_TYPE
IS RANGE <> ;
74 LOWER
: IN INTEGER_TYPE
;
75 UPPER
: IN INTEGER_TYPE
;
77 PROCEDURE PA
(FIRST
: IN INTEGER_TYPE
;
78 SECOND
: IN INTEGER_TYPE
) ;
80 PROCEDURE PA
(FIRST
: IN INTEGER_TYPE
;
81 SECOND
: IN INTEGER_TYPE
) IS
83 TYPE A1
IS ARRAY (INTEGER_TYPE
RANGE LOWER
.. FIRST
,
84 INTEGER_TYPE
RANGE LOWER
.. SECOND
)
87 PROCEDURE PA1
(A
: A1
:= ((LOWER
,UPPER
),(UPPER
,UPPER
)))
90 REPORT
.FAILED
("BODY OF PA1 EXECUTED");
93 REPORT
.FAILED
("EXCEPTION RAISED IN PA1");
99 WHEN CONSTRAINT_ERROR
=>
102 REPORT
.FAILED
("WRONG EXCEPTION RAISED - PA1");
105 PROCEDURE NEW_PA
IS NEW PA
(INTEGER_TYPE
=> NUMBER
,
109 BEGIN -- NONSTAT_ARRAY_PARMS
111 NEW_PA
(FIRST
=> NUMBER
(25),
112 SECOND
=> NUMBER
(75));
116 REPORT
.FAILED
("EXCEPTION RAISED IN CALL TO NEW_PA");
118 END NONSTAT_ARRAY_PARMS
;
120 --------------------------------------------------
126 -- (B) A SCALAR PARAMETER WITH NON-STATIC RANGE CONSTRAINTS
127 -- INITIALIZED WITH A STATIC VALUE.
129 TYPE NUMBER
IS RANGE 1 .. 100 ;
133 TYPE INTEGER_TYPE
IS RANGE <> ;
134 STATIC_VALUE
: IN INTEGER_TYPE
;
136 PROCEDURE PB
(LOWER
: IN INTEGER_TYPE
;
137 UPPER
: IN INTEGER_TYPE
) ;
139 PROCEDURE PB
(LOWER
: IN INTEGER_TYPE
;
140 UPPER
: IN INTEGER_TYPE
) IS
142 SUBTYPE INT
IS INTEGER_TYPE
RANGE LOWER
.. UPPER
;
144 PROCEDURE PB1
(I
: INT
:= STATIC_VALUE
) IS
146 REPORT
.FAILED
("BODY OF PB1 EXECUTED");
149 REPORT
.FAILED
("EXCEPTION RAISED IN PB1");
155 WHEN CONSTRAINT_ERROR
=>
158 REPORT
.FAILED
("WRONG EXCEPTION RAISED - PB1");
161 PROCEDURE NEW_PB
IS NEW PB
(INTEGER_TYPE
=> NUMBER
,
162 STATIC_VALUE
=> 20) ;
164 BEGIN -- SCALAR_NON_STATIC
166 NEW_PB
(LOWER
=> NUMBER
(25),
167 UPPER
=> NUMBER
(75));
171 REPORT
.FAILED
("EXCEPTION RAISED IN CALL TO NEW_PB");
172 END SCALAR_NON_STATIC
;
174 --------------------------------------------------
180 -- (C) A RECORD PARAMETER WHOSE COMPONENTS HAVE NON-STATIC
181 -- CONSTRAINTS INITIALIZED WITH A STATIC AGGREGATE.
183 TYPE NUMBER
IS RANGE 1 .. 100 ;
187 TYPE INTEGER_TYPE
IS RANGE <> ;
188 F_STATIC_VALUE
: IN INTEGER_TYPE
;
189 S_STATIC_VALUE
: IN INTEGER_TYPE
;
190 T_STATIC_VALUE
: IN INTEGER_TYPE
;
191 L_STATIC_VALUE
: IN INTEGER_TYPE
;
193 PROCEDURE PC
(LOWER
: IN INTEGER_TYPE
;
194 UPPER
: IN INTEGER_TYPE
) ;
196 PROCEDURE PC
(LOWER
: IN INTEGER_TYPE
;
197 UPPER
: IN INTEGER_TYPE
) IS
199 SUBTYPE SUBINTEGER_TYPE
IS INTEGER_TYPE
200 RANGE LOWER
.. UPPER
;
201 TYPE AR1
IS ARRAY (INTEGER RANGE 1..3) OF
205 FIRST
: SUBINTEGER_TYPE
;
209 PROCEDURE PC1
(R
: REC
:= (F_STATIC_VALUE
,
214 REPORT
.FAILED
("BODY OF PC1 EXECUTED");
217 REPORT
.FAILED
("EXCEPTION RAISED IN PC1");
223 WHEN CONSTRAINT_ERROR
=>
226 REPORT
.FAILED
("WRONG EXCEPTION RAISED - PC1");
229 PROCEDURE NEW_PC
IS NEW PC
(INTEGER_TYPE
=> NUMBER
,
230 F_STATIC_VALUE
=> 15,
231 S_STATIC_VALUE
=> 19,
232 T_STATIC_VALUE
=> 85,
233 L_STATIC_VALUE
=> 99) ;
235 BEGIN -- REC_NON_STAT_COMPS
240 REPORT
.FAILED
("EXCEPTION RAISED IN CALL TO NEW_PC");
241 END REC_NON_STAT_COMPS
;
243 --------------------------------------------------
249 -- (D) AN ARRAY PARAMETER CONSTRAINED WITH STATIC BOUNDS ON SUB-
250 -- SCRIPTS AND NON-STATIC BOUNDS ON COMPONENTS, INITIALIZED
251 -- WITH A STATIC AGGREGATE.
253 TYPE NUMBER
IS RANGE 1 .. 100 ;
257 TYPE INTEGER_TYPE
IS RANGE <> ;
258 F_STATIC_VALUE
: IN INTEGER_TYPE
;
259 S_STATIC_VALUE
: IN INTEGER_TYPE
;
260 T_STATIC_VALUE
: IN INTEGER_TYPE
;
261 L_STATIC_VALUE
: IN INTEGER_TYPE
;
262 A_STATIC_VALUE
: IN INTEGER_TYPE
;
263 B_STATIC_VALUE
: IN INTEGER_TYPE
;
264 C_STATIC_VALUE
: IN INTEGER_TYPE
;
265 D_STATIC_VALUE
: IN INTEGER_TYPE
;
267 PROCEDURE P1D
(LOWER
: IN INTEGER_TYPE
;
268 UPPER
: IN INTEGER_TYPE
) ;
270 PROCEDURE P1D
(LOWER
: IN INTEGER_TYPE
;
271 UPPER
: IN INTEGER_TYPE
) IS
273 SUBTYPE SUBINTEGER_TYPE
IS INTEGER_TYPE
274 RANGE LOWER
.. UPPER
;
276 TYPE A1
IS ARRAY (INTEGER_TYPE
RANGE
277 F_STATIC_VALUE
.. S_STATIC_VALUE
,
279 T_STATIC_VALUE
.. L_STATIC_VALUE
)
282 PROCEDURE P1D1
(A
: A1
:=
283 ((A_STATIC_VALUE
, B_STATIC_VALUE
),
284 (C_STATIC_VALUE
, D_STATIC_VALUE
))) IS
286 REPORT
.FAILED
("BODY OF P1D1 EXECUTED");
289 REPORT
.FAILED
("EXCEPTION RAISED IN P1D1");
295 WHEN CONSTRAINT_ERROR
=>
298 REPORT
.FAILED
("WRONG EXCEPTION RAISED - P1D1");
301 PROCEDURE NEW_P1D
IS NEW P1D
(INTEGER_TYPE
=> NUMBER
,
302 F_STATIC_VALUE
=> 21,
303 S_STATIC_VALUE
=> 37,
304 T_STATIC_VALUE
=> 67,
305 L_STATIC_VALUE
=> 79,
306 A_STATIC_VALUE
=> 11,
307 B_STATIC_VALUE
=> 88,
308 C_STATIC_VALUE
=> 87,
309 D_STATIC_VALUE
=> 13) ;
311 BEGIN -- FIRST_STATIC_ARRAY
312 NEW_P1D
(LOWER
=> 10,
316 REPORT
.FAILED
("EXCEPTION RAISED IN CALL TO NEW_P1D");
317 END FIRST_STATIC_ARRAY
;
319 --------------------------------------------------
325 -- (D) AN ARRAY PARAMETER CONSTRAINED WITH STATIC BOUNDS ON SUB-
326 -- SCRIPTS AND NON-STATIC BOUNDS ON COMPONENTS, INITIALIZED
327 -- WITH A STATIC AGGREGATE.
329 TYPE NUMBER
IS RANGE 1 .. 100 ;
333 TYPE INTEGER_TYPE
IS RANGE <> ;
334 F_STATIC_VALUE
: IN INTEGER_TYPE
;
335 S_STATIC_VALUE
: IN INTEGER_TYPE
;
336 T_STATIC_VALUE
: IN INTEGER_TYPE
;
337 L_STATIC_VALUE
: IN INTEGER_TYPE
;
338 A_STATIC_VALUE
: IN INTEGER_TYPE
;
339 B_STATIC_VALUE
: IN INTEGER_TYPE
;
341 PROCEDURE P2D
(LOWER
: IN INTEGER_TYPE
;
342 UPPER
: IN INTEGER_TYPE
) ;
344 PROCEDURE P2D
(LOWER
: IN INTEGER_TYPE
;
345 UPPER
: IN INTEGER_TYPE
) IS
347 SUBTYPE SUBINTEGER_TYPE
IS INTEGER_TYPE
348 RANGE LOWER
.. UPPER
;
350 TYPE A1
IS ARRAY (INTEGER_TYPE
RANGE
351 F_STATIC_VALUE
.. S_STATIC_VALUE
,
353 T_STATIC_VALUE
.. L_STATIC_VALUE
)
356 PROCEDURE P2D1
(A
: A1
:=
357 (F_STATIC_VALUE
.. S_STATIC_VALUE
=>
358 (A_STATIC_VALUE
, B_STATIC_VALUE
))) IS
360 REPORT
.FAILED
("BODY OF P2D1 EXECUTED");
363 REPORT
.FAILED
("EXCEPTION RAISED IN P2D1");
369 WHEN CONSTRAINT_ERROR
=>
372 REPORT
.FAILED
("WRONG EXCEPTION RAISED - P2D1");
375 PROCEDURE NEW_P2D
IS NEW P2D
(INTEGER_TYPE
=> NUMBER
,
376 F_STATIC_VALUE
=> 21,
377 S_STATIC_VALUE
=> 37,
378 T_STATIC_VALUE
=> 67,
379 L_STATIC_VALUE
=> 79,
381 B_STATIC_VALUE
=> 93) ;
383 BEGIN -- SECOND_STATIC_ARRAY
388 REPORT
.FAILED
("EXCEPTION RAISED IN CALL TO NEW_P2D");
389 END SECOND_STATIC_ARRAY
;
391 --------------------------------------------------
397 -- (E) A RECORD PARAMETER WITH A NON-STATIC CONSTRAINT
398 -- INITIALIZED WITH A STATIC AGGREGATE.
400 TYPE NUMBER
IS RANGE 1 .. 100 ;
404 TYPE INTEGER_TYPE
IS RANGE <> ;
405 F_STATIC_VALUE
: IN INTEGER_TYPE
;
406 S_STATIC_VALUE
: IN INTEGER_TYPE
;
407 T_STATIC_VALUE
: IN INTEGER_TYPE
;
408 L_STATIC_VALUE
: IN INTEGER_TYPE
;
409 D_STATIC_VALUE
: IN INTEGER_TYPE
;
411 PROCEDURE PE
(LOWER
: IN INTEGER_TYPE
;
412 UPPER
: IN INTEGER_TYPE
) ;
414 PROCEDURE PE
(LOWER
: IN INTEGER_TYPE
;
415 UPPER
: IN INTEGER_TYPE
) IS
417 SUBTYPE SUBINTEGER_TYPE
IS INTEGER_TYPE
418 RANGE LOWER
.. UPPER
;
419 TYPE AR1
IS ARRAY (INTEGER RANGE 1..3) OF
422 TYPE REC
(DISCRIM
: SUBINTEGER_TYPE
) IS
424 FIRST
: SUBINTEGER_TYPE
;
428 SUBTYPE REC4
IS REC
(LOWER
) ;
430 PROCEDURE PE1
(R
: REC4
:= (D_STATIC_VALUE
,
436 REPORT
.FAILED
("BODY OF PE1 EXECUTED");
439 REPORT
.FAILED
("EXCEPTION RAISED IN PE1");
445 WHEN CONSTRAINT_ERROR
=>
448 REPORT
.FAILED
("WRONG EXCEPTION RAISED - PE1");
451 PROCEDURE NEW_PE
IS NEW PE
(INTEGER_TYPE
=> NUMBER
,
452 F_STATIC_VALUE
=> 37,
453 S_STATIC_VALUE
=> 21,
454 T_STATIC_VALUE
=> 67,
455 L_STATIC_VALUE
=> 79,
456 D_STATIC_VALUE
=> 44) ;
458 BEGIN -- REC_NON_STATIC_CONS
463 REPORT
.FAILED
("EXCEPTION RAISED IN CALL TO NEW_PE");
464 END REC_NON_STATIC_CONS
;
466 --------------------------------------------------