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.
26 -- CHECK THAT SOME DIFFERENCES BETWEEN THE FORMAL AND THE
27 -- ACTUAL SUBPROGRAMS DO NOT INVALIDATE A MATCH.
28 -- 1) CHECK DIFFERENT PARAMETER NAMES.
29 -- 2) CHECK DIFFERENT PARAMETER CONSTRAINTS.
30 -- 3) CHECK ONE PARAMETER CONSTRAINED AND THE OTHER
31 -- UNCONSTRAINED (WITH ARRAY, RECORD, ACCESS, AND
33 -- 4) CHECK PRESENCE OR ABSENCE OF AN EXPLICIT "IN" MODE
35 -- 5) DIFFERENT TYPE MARKS USED TO SPECIFY THE TYPE OF
39 -- LDC 10/04/88 CREATED ORIGINAL TEST.
41 PACKAGE CC3605A_PACK
IS
43 SUBTYPE INT
IS INTEGER RANGE -100 .. 100;
45 TYPE PRI_TYPE
(SIZE
: INT
) IS PRIVATE;
47 SUBTYPE PRI_CONST
IS PRI_TYPE
(2);
51 TYPE ARR_TYPE
IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;
53 TYPE PRI_TYPE
(SIZE
: INT
) IS
55 SUB_A
: ARR_TYPE
(1 .. SIZE
);
68 SUBTYPE ZERO_TO_TEN
IS INTEGER
69 RANGE IDENT_INT
(0) .. IDENT_INT
(10);
71 SUBTYPE ONE_TO_FIVE
IS INTEGER
72 RANGE IDENT_INT
(1) .. IDENT_INT
(5);
74 SUBPRG_ACT
: BOOLEAN := FALSE;
77 ("CC3605A", "CHECK THAT SOME DIFFERENCES BETWEEN THE " &
78 "FORMAL AND THE ACTUAL PARAMETERS DO NOT " &
79 "INVALIDATE A MATCH");
81 ----------------------------------------------------------------------
82 -- DIFFERENT PARAMETER NAMES
83 ----------------------------------------------------------------------
87 PROCEDURE ACT_PROC
(DIFF_NAME_PARM
: ONE_TO_FIVE
) IS
94 WITH PROCEDURE PASSED_PROC
(PARM
: ONE_TO_FIVE
);
100 PASSED_PROC
(ONE_TO_FIVE
'FIRST);
103 PROCEDURE INST_PROC
IS NEW GEN_PROC
(ACT_PROC
);
106 IF NOT SUBPRG_ACT
THEN
108 ("DIFFERENT PARAMETER NAMES MADE MATCH INVALID");
112 ----------------------------------------------------------------------
113 -- DIFFERENT PARAMETER CONSTRAINTS
114 ----------------------------------------------------------------------
118 PROCEDURE ACT_PROC
(PARM
: ONE_TO_FIVE
) IS
125 WITH PROCEDURE PASSED_PROC
(PARM
: ZERO_TO_TEN
);
129 PROCEDURE GEN_PROC
IS
131 PASSED_PROC
(ONE_TO_FIVE
'FIRST);
134 PROCEDURE INST_PROC
IS NEW GEN_PROC
(ACT_PROC
);
138 IF NOT SUBPRG_ACT
THEN
140 ("DIFFERENT PARAMETER CONSTRAINTS MADE MATCH " &
145 ----------------------------------------------------------------------
146 -- ONE PARAMETER CONSTRAINED (ARRAY)
147 ----------------------------------------------------------------------
151 TYPE ARR_TYPE
IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;
153 SUBTYPE ARR_CONST
IS ARR_TYPE
(ONE_TO_FIVE
'FIRST ..
156 PASSED_PARM
: ARR_CONST
:= (OTHERS => TRUE);
158 PROCEDURE ACT_PROC
(PARM
: ARR_CONST
) IS
165 WITH PROCEDURE PASSED_PROC
(PARM
: ARR_TYPE
);
169 PROCEDURE GEN_PROC
IS
171 PASSED_PROC
(PASSED_PARM
);
174 PROCEDURE INST_PROC
IS NEW GEN_PROC
(ACT_PROC
);
178 IF NOT SUBPRG_ACT
THEN
180 ("ONE ARRAY PARAMETER CONSTRAINED MADE MATCH " &
185 ----------------------------------------------------------------------
186 -- ONE PARAMETER CONSTRAINED (RECORDS)
187 ----------------------------------------------------------------------
191 TYPE REC_TYPE
(BOL
: BOOLEAN) IS
204 SUBTYPE REC_CONST
IS REC_TYPE
(TRUE);
206 PASSED_PARM
: REC_CONST
:= (TRUE, 1, 2);
208 PROCEDURE ACT_PROC
(PARM
: REC_CONST
) IS
215 WITH PROCEDURE PASSED_PROC
(PARM
: REC_TYPE
);
219 PROCEDURE GEN_PROC
IS
221 PASSED_PROC
(PASSED_PARM
);
224 PROCEDURE INST_PROC
IS NEW GEN_PROC
(ACT_PROC
);
228 IF NOT SUBPRG_ACT
THEN
230 ("ONE RECORD PARAMETER CONSTRAINED MADE MATCH " &
235 ----------------------------------------------------------------------
236 -- ONE PARAMETER CONSTRAINED (ACCESS)
237 ----------------------------------------------------------------------
241 TYPE ARR_TYPE
IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;
243 SUBTYPE ARR_CONST
IS ARR_TYPE
(ONE_TO_FIVE
'FIRST ..
246 TYPE ARR_ACC_TYPE
IS ACCESS ARR_TYPE
;
248 SUBTYPE ARR_ACC_CONST
IS ARR_ACC_TYPE
(1 .. 3);
250 PASSED_PARM
: ARR_ACC_TYPE
:= NULL;
252 PROCEDURE ACT_PROC
(PARM
: ARR_ACC_CONST
) IS
259 WITH PROCEDURE PASSED_PROC
(PARM
: ARR_ACC_TYPE
);
263 PROCEDURE GEN_PROC
IS
265 PASSED_PROC
(PASSED_PARM
);
268 PROCEDURE INST_PROC
IS NEW GEN_PROC
(ACT_PROC
);
272 IF NOT SUBPRG_ACT
THEN
274 ("ONE ACCESS PARAMETER CONSTRAINED MADE MATCH " &
279 ----------------------------------------------------------------------
280 -- ONE PARAMETER CONSTRAINED (PRIVATE)
281 ----------------------------------------------------------------------
284 PASSED_PARM
: PRI_CONST
;
286 PROCEDURE ACT_PROC
(PARM
: PRI_CONST
) IS
293 WITH PROCEDURE PASSED_PROC
(PARM
: PRI_TYPE
);
297 PROCEDURE GEN_PROC
IS
299 PASSED_PROC
(PASSED_PARM
);
302 PROCEDURE INST_PROC
IS NEW GEN_PROC
(ACT_PROC
);
306 IF NOT SUBPRG_ACT
THEN
308 ("ONE PRIVATE PARAMETER CONSTRAINED MADE MATCH " &
313 ----------------------------------------------------------------------
314 -- PRESENCE (OR ABSENCE) OF AN EXPLICIT "IN" MODE
315 ----------------------------------------------------------------------
319 PROCEDURE ACT_PROC
(PARM
: INTEGER) IS
326 WITH PROCEDURE PASSED_PROC
(PARM
: IN INTEGER);
330 PROCEDURE GEN_PROC
IS
335 PROCEDURE INST_PROC
IS NEW GEN_PROC
(ACT_PROC
);
339 IF NOT SUBPRG_ACT
THEN
341 ("PRESENCE OF AN EXPLICIT 'IN' MODE MADE MATCH " &
346 ----------------------------------------------------------------------
347 -- DIFFERENT TYPE MARKS
348 ----------------------------------------------------------------------
352 SUBTYPE MARK_1_TYPE
IS INTEGER;
354 SUBTYPE MARK_2_TYPE
IS INTEGER;
356 PROCEDURE ACT_PROC
(PARM1
: IN MARK_1_TYPE
) IS
363 WITH PROCEDURE PASSED_PROC
(PARM2
: MARK_2_TYPE
);
367 PROCEDURE GEN_PROC
IS
372 PROCEDURE INST_PROC
IS NEW GEN_PROC
(ACT_PROC
);
376 IF NOT SUBPRG_ACT
THEN
377 FAILED
("DIFFERENT TYPE MARKS MADE MATCH INVALID");