-- CC3605A.ADA
|
-- CC3605A.ADA
|
|
|
-- Grant of Unlimited Rights
|
-- Grant of Unlimited Rights
|
--
|
--
|
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
|
-- Under contracts F33600-87-D-0337, F33600-84-D-0280, MDA903-79-C-0687,
|
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
|
-- F08630-91-C-0015, and DCA100-97-D-0025, the U.S. Government obtained
|
-- unlimited rights in the software and documentation contained herein.
|
-- unlimited rights in the software and documentation contained herein.
|
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
|
-- Unlimited rights are defined in DFAR 252.227-7013(a)(19). By making
|
-- this public release, the Government intends to confer upon all
|
-- this public release, the Government intends to confer upon all
|
-- recipients unlimited rights equal to those held by the Government.
|
-- recipients unlimited rights equal to those held by the Government.
|
-- These rights include rights to use, duplicate, release or disclose the
|
-- These rights include rights to use, duplicate, release or disclose the
|
-- released technical data and computer software in whole or in part, in
|
-- released technical data and computer software in whole or in part, in
|
-- any manner and for any purpose whatsoever, and to have or permit others
|
-- any manner and for any purpose whatsoever, and to have or permit others
|
-- to do so.
|
-- to do so.
|
--
|
--
|
-- DISCLAIMER
|
-- DISCLAIMER
|
--
|
--
|
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
|
-- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE AVAILABLE OR
|
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
|
-- DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR IMPLIED
|
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
|
-- WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS OF THE
|
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
|
-- SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE AVAILABLE
|
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
|
-- OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS FOR A
|
-- PARTICULAR PURPOSE OF SAID MATERIAL.
|
-- PARTICULAR PURPOSE OF SAID MATERIAL.
|
--*
|
--*
|
-- OBJECTIVE:
|
-- OBJECTIVE:
|
-- CHECK THAT SOME DIFFERENCES BETWEEN THE FORMAL AND THE
|
-- CHECK THAT SOME DIFFERENCES BETWEEN THE FORMAL AND THE
|
-- ACTUAL SUBPROGRAMS DO NOT INVALIDATE A MATCH.
|
-- ACTUAL SUBPROGRAMS DO NOT INVALIDATE A MATCH.
|
-- 1) CHECK DIFFERENT PARAMETER NAMES.
|
-- 1) CHECK DIFFERENT PARAMETER NAMES.
|
-- 2) CHECK DIFFERENT PARAMETER CONSTRAINTS.
|
-- 2) CHECK DIFFERENT PARAMETER CONSTRAINTS.
|
-- 3) CHECK ONE PARAMETER CONSTRAINED AND THE OTHER
|
-- 3) CHECK ONE PARAMETER CONSTRAINED AND THE OTHER
|
-- UNCONSTRAINED (WITH ARRAY, RECORD, ACCESS, AND
|
-- UNCONSTRAINED (WITH ARRAY, RECORD, ACCESS, AND
|
-- PRIVATE TYPES).
|
-- PRIVATE TYPES).
|
-- 4) CHECK PRESENCE OR ABSENCE OF AN EXPLICIT "IN" MODE
|
-- 4) CHECK PRESENCE OR ABSENCE OF AN EXPLICIT "IN" MODE
|
-- INDICATOR.
|
-- INDICATOR.
|
-- 5) DIFFERENT TYPE MARKS USED TO SPECIFY THE TYPE OF
|
-- 5) DIFFERENT TYPE MARKS USED TO SPECIFY THE TYPE OF
|
-- PARAMETERS.
|
-- PARAMETERS.
|
|
|
-- HISTORY:
|
-- HISTORY:
|
-- LDC 10/04/88 CREATED ORIGINAL TEST.
|
-- LDC 10/04/88 CREATED ORIGINAL TEST.
|
|
|
PACKAGE CC3605A_PACK IS
|
PACKAGE CC3605A_PACK IS
|
|
|
SUBTYPE INT IS INTEGER RANGE -100 .. 100;
|
SUBTYPE INT IS INTEGER RANGE -100 .. 100;
|
|
|
TYPE PRI_TYPE (SIZE : INT) IS PRIVATE;
|
TYPE PRI_TYPE (SIZE : INT) IS PRIVATE;
|
|
|
SUBTYPE PRI_CONST IS PRI_TYPE (2);
|
SUBTYPE PRI_CONST IS PRI_TYPE (2);
|
|
|
PRIVATE
|
PRIVATE
|
|
|
TYPE ARR_TYPE IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;
|
TYPE ARR_TYPE IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;
|
|
|
TYPE PRI_TYPE (SIZE : INT) IS
|
TYPE PRI_TYPE (SIZE : INT) IS
|
RECORD
|
RECORD
|
SUB_A : ARR_TYPE (1 .. SIZE);
|
SUB_A : ARR_TYPE (1 .. SIZE);
|
END RECORD;
|
END RECORD;
|
|
|
END CC3605A_PACK;
|
END CC3605A_PACK;
|
|
|
|
|
WITH REPORT;
|
WITH REPORT;
|
USE REPORT;
|
USE REPORT;
|
WITH CC3605A_PACK;
|
WITH CC3605A_PACK;
|
USE CC3605A_PACK;
|
USE CC3605A_PACK;
|
|
|
PROCEDURE CC3605A IS
|
PROCEDURE CC3605A IS
|
|
|
SUBTYPE ZERO_TO_TEN IS INTEGER
|
SUBTYPE ZERO_TO_TEN IS INTEGER
|
RANGE IDENT_INT (0) .. IDENT_INT (10);
|
RANGE IDENT_INT (0) .. IDENT_INT (10);
|
|
|
SUBTYPE ONE_TO_FIVE IS INTEGER
|
SUBTYPE ONE_TO_FIVE IS INTEGER
|
RANGE IDENT_INT (1) .. IDENT_INT (5);
|
RANGE IDENT_INT (1) .. IDENT_INT (5);
|
|
|
SUBPRG_ACT : BOOLEAN := FALSE;
|
SUBPRG_ACT : BOOLEAN := FALSE;
|
BEGIN
|
BEGIN
|
TEST
|
TEST
|
("CC3605A", "CHECK THAT SOME DIFFERENCES BETWEEN THE " &
|
("CC3605A", "CHECK THAT SOME DIFFERENCES BETWEEN THE " &
|
"FORMAL AND THE ACTUAL PARAMETERS DO NOT " &
|
"FORMAL AND THE ACTUAL PARAMETERS DO NOT " &
|
"INVALIDATE A MATCH");
|
"INVALIDATE A MATCH");
|
|
|
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
-- DIFFERENT PARAMETER NAMES
|
-- DIFFERENT PARAMETER NAMES
|
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
|
|
DECLARE
|
DECLARE
|
|
|
PROCEDURE ACT_PROC (DIFF_NAME_PARM : ONE_TO_FIVE) IS
|
PROCEDURE ACT_PROC (DIFF_NAME_PARM : ONE_TO_FIVE) IS
|
BEGIN
|
BEGIN
|
SUBPRG_ACT := TRUE;
|
SUBPRG_ACT := TRUE;
|
END ACT_PROC;
|
END ACT_PROC;
|
|
|
GENERIC
|
GENERIC
|
|
|
WITH PROCEDURE PASSED_PROC (PARM : ONE_TO_FIVE);
|
WITH PROCEDURE PASSED_PROC (PARM : ONE_TO_FIVE);
|
|
|
PROCEDURE GEN_PROC;
|
PROCEDURE GEN_PROC;
|
|
|
PROCEDURE GEN_PROC IS
|
PROCEDURE GEN_PROC IS
|
BEGIN
|
BEGIN
|
PASSED_PROC (ONE_TO_FIVE'FIRST);
|
PASSED_PROC (ONE_TO_FIVE'FIRST);
|
END GEN_PROC;
|
END GEN_PROC;
|
|
|
PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
|
PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
|
BEGIN
|
BEGIN
|
INST_PROC;
|
INST_PROC;
|
IF NOT SUBPRG_ACT THEN
|
IF NOT SUBPRG_ACT THEN
|
FAILED
|
FAILED
|
("DIFFERENT PARAMETER NAMES MADE MATCH INVALID");
|
("DIFFERENT PARAMETER NAMES MADE MATCH INVALID");
|
END IF;
|
END IF;
|
END;
|
END;
|
|
|
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
-- DIFFERENT PARAMETER CONSTRAINTS
|
-- DIFFERENT PARAMETER CONSTRAINTS
|
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
|
|
DECLARE
|
DECLARE
|
|
|
PROCEDURE ACT_PROC (PARM : ONE_TO_FIVE) IS
|
PROCEDURE ACT_PROC (PARM : ONE_TO_FIVE) IS
|
BEGIN
|
BEGIN
|
SUBPRG_ACT := TRUE;
|
SUBPRG_ACT := TRUE;
|
END ACT_PROC;
|
END ACT_PROC;
|
|
|
GENERIC
|
GENERIC
|
|
|
WITH PROCEDURE PASSED_PROC (PARM : ZERO_TO_TEN);
|
WITH PROCEDURE PASSED_PROC (PARM : ZERO_TO_TEN);
|
|
|
PROCEDURE GEN_PROC;
|
PROCEDURE GEN_PROC;
|
|
|
PROCEDURE GEN_PROC IS
|
PROCEDURE GEN_PROC IS
|
BEGIN
|
BEGIN
|
PASSED_PROC (ONE_TO_FIVE'FIRST);
|
PASSED_PROC (ONE_TO_FIVE'FIRST);
|
END GEN_PROC;
|
END GEN_PROC;
|
|
|
PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
|
PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
|
BEGIN
|
BEGIN
|
SUBPRG_ACT := FALSE;
|
SUBPRG_ACT := FALSE;
|
INST_PROC;
|
INST_PROC;
|
IF NOT SUBPRG_ACT THEN
|
IF NOT SUBPRG_ACT THEN
|
FAILED
|
FAILED
|
("DIFFERENT PARAMETER CONSTRAINTS MADE MATCH " &
|
("DIFFERENT PARAMETER CONSTRAINTS MADE MATCH " &
|
"INVALID");
|
"INVALID");
|
END IF;
|
END IF;
|
END;
|
END;
|
|
|
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
-- ONE PARAMETER CONSTRAINED (ARRAY)
|
-- ONE PARAMETER CONSTRAINED (ARRAY)
|
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
|
|
DECLARE
|
DECLARE
|
|
|
TYPE ARR_TYPE IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;
|
TYPE ARR_TYPE IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;
|
|
|
SUBTYPE ARR_CONST IS ARR_TYPE (ONE_TO_FIVE'FIRST ..
|
SUBTYPE ARR_CONST IS ARR_TYPE (ONE_TO_FIVE'FIRST ..
|
ONE_TO_FIVE'LAST);
|
ONE_TO_FIVE'LAST);
|
|
|
PASSED_PARM : ARR_CONST := (OTHERS => TRUE);
|
PASSED_PARM : ARR_CONST := (OTHERS => TRUE);
|
|
|
PROCEDURE ACT_PROC (PARM : ARR_CONST) IS
|
PROCEDURE ACT_PROC (PARM : ARR_CONST) IS
|
BEGIN
|
BEGIN
|
SUBPRG_ACT := TRUE;
|
SUBPRG_ACT := TRUE;
|
END ACT_PROC;
|
END ACT_PROC;
|
|
|
GENERIC
|
GENERIC
|
|
|
WITH PROCEDURE PASSED_PROC (PARM : ARR_TYPE);
|
WITH PROCEDURE PASSED_PROC (PARM : ARR_TYPE);
|
|
|
PROCEDURE GEN_PROC;
|
PROCEDURE GEN_PROC;
|
|
|
PROCEDURE GEN_PROC IS
|
PROCEDURE GEN_PROC IS
|
BEGIN
|
BEGIN
|
PASSED_PROC (PASSED_PARM);
|
PASSED_PROC (PASSED_PARM);
|
END GEN_PROC;
|
END GEN_PROC;
|
|
|
PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
|
PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
|
BEGIN
|
BEGIN
|
SUBPRG_ACT := FALSE;
|
SUBPRG_ACT := FALSE;
|
INST_PROC;
|
INST_PROC;
|
IF NOT SUBPRG_ACT THEN
|
IF NOT SUBPRG_ACT THEN
|
FAILED
|
FAILED
|
("ONE ARRAY PARAMETER CONSTRAINED MADE MATCH " &
|
("ONE ARRAY PARAMETER CONSTRAINED MADE MATCH " &
|
"INVALID");
|
"INVALID");
|
END IF;
|
END IF;
|
END;
|
END;
|
|
|
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
-- ONE PARAMETER CONSTRAINED (RECORDS)
|
-- ONE PARAMETER CONSTRAINED (RECORDS)
|
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
|
|
DECLARE
|
DECLARE
|
|
|
TYPE REC_TYPE (BOL : BOOLEAN) IS
|
TYPE REC_TYPE (BOL : BOOLEAN) IS
|
RECORD
|
RECORD
|
SUB_A : INTEGER;
|
SUB_A : INTEGER;
|
CASE BOL IS
|
CASE BOL IS
|
WHEN TRUE =>
|
WHEN TRUE =>
|
DSCR_A : INTEGER;
|
DSCR_A : INTEGER;
|
|
|
WHEN FALSE =>
|
WHEN FALSE =>
|
DSCR_B : BOOLEAN;
|
DSCR_B : BOOLEAN;
|
|
|
END CASE;
|
END CASE;
|
END RECORD;
|
END RECORD;
|
|
|
SUBTYPE REC_CONST IS REC_TYPE (TRUE);
|
SUBTYPE REC_CONST IS REC_TYPE (TRUE);
|
|
|
PASSED_PARM : REC_CONST := (TRUE, 1, 2);
|
PASSED_PARM : REC_CONST := (TRUE, 1, 2);
|
|
|
PROCEDURE ACT_PROC (PARM : REC_CONST) IS
|
PROCEDURE ACT_PROC (PARM : REC_CONST) IS
|
BEGIN
|
BEGIN
|
SUBPRG_ACT := TRUE;
|
SUBPRG_ACT := TRUE;
|
END ACT_PROC;
|
END ACT_PROC;
|
|
|
GENERIC
|
GENERIC
|
|
|
WITH PROCEDURE PASSED_PROC (PARM : REC_TYPE);
|
WITH PROCEDURE PASSED_PROC (PARM : REC_TYPE);
|
|
|
PROCEDURE GEN_PROC;
|
PROCEDURE GEN_PROC;
|
|
|
PROCEDURE GEN_PROC IS
|
PROCEDURE GEN_PROC IS
|
BEGIN
|
BEGIN
|
PASSED_PROC (PASSED_PARM);
|
PASSED_PROC (PASSED_PARM);
|
END GEN_PROC;
|
END GEN_PROC;
|
|
|
PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
|
PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
|
BEGIN
|
BEGIN
|
SUBPRG_ACT := FALSE;
|
SUBPRG_ACT := FALSE;
|
INST_PROC;
|
INST_PROC;
|
IF NOT SUBPRG_ACT THEN
|
IF NOT SUBPRG_ACT THEN
|
FAILED
|
FAILED
|
("ONE RECORD PARAMETER CONSTRAINED MADE MATCH " &
|
("ONE RECORD PARAMETER CONSTRAINED MADE MATCH " &
|
"INVALID");
|
"INVALID");
|
END IF;
|
END IF;
|
END;
|
END;
|
|
|
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
-- ONE PARAMETER CONSTRAINED (ACCESS)
|
-- ONE PARAMETER CONSTRAINED (ACCESS)
|
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
|
|
DECLARE
|
DECLARE
|
|
|
TYPE ARR_TYPE IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;
|
TYPE ARR_TYPE IS ARRAY (INTEGER RANGE <>) OF BOOLEAN;
|
|
|
SUBTYPE ARR_CONST IS ARR_TYPE (ONE_TO_FIVE'FIRST ..
|
SUBTYPE ARR_CONST IS ARR_TYPE (ONE_TO_FIVE'FIRST ..
|
ONE_TO_FIVE'LAST);
|
ONE_TO_FIVE'LAST);
|
|
|
TYPE ARR_ACC_TYPE IS ACCESS ARR_TYPE;
|
TYPE ARR_ACC_TYPE IS ACCESS ARR_TYPE;
|
|
|
SUBTYPE ARR_ACC_CONST IS ARR_ACC_TYPE (1 .. 3);
|
SUBTYPE ARR_ACC_CONST IS ARR_ACC_TYPE (1 .. 3);
|
|
|
PASSED_PARM : ARR_ACC_TYPE := NULL;
|
PASSED_PARM : ARR_ACC_TYPE := NULL;
|
|
|
PROCEDURE ACT_PROC (PARM : ARR_ACC_CONST) IS
|
PROCEDURE ACT_PROC (PARM : ARR_ACC_CONST) IS
|
BEGIN
|
BEGIN
|
SUBPRG_ACT := TRUE;
|
SUBPRG_ACT := TRUE;
|
END ACT_PROC;
|
END ACT_PROC;
|
|
|
GENERIC
|
GENERIC
|
|
|
WITH PROCEDURE PASSED_PROC (PARM : ARR_ACC_TYPE);
|
WITH PROCEDURE PASSED_PROC (PARM : ARR_ACC_TYPE);
|
|
|
PROCEDURE GEN_PROC;
|
PROCEDURE GEN_PROC;
|
|
|
PROCEDURE GEN_PROC IS
|
PROCEDURE GEN_PROC IS
|
BEGIN
|
BEGIN
|
PASSED_PROC (PASSED_PARM);
|
PASSED_PROC (PASSED_PARM);
|
END GEN_PROC;
|
END GEN_PROC;
|
|
|
PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
|
PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
|
BEGIN
|
BEGIN
|
SUBPRG_ACT := FALSE;
|
SUBPRG_ACT := FALSE;
|
INST_PROC;
|
INST_PROC;
|
IF NOT SUBPRG_ACT THEN
|
IF NOT SUBPRG_ACT THEN
|
FAILED
|
FAILED
|
("ONE ACCESS PARAMETER CONSTRAINED MADE MATCH " &
|
("ONE ACCESS PARAMETER CONSTRAINED MADE MATCH " &
|
"INVALID");
|
"INVALID");
|
END IF;
|
END IF;
|
END;
|
END;
|
|
|
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
-- ONE PARAMETER CONSTRAINED (PRIVATE)
|
-- ONE PARAMETER CONSTRAINED (PRIVATE)
|
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
|
|
DECLARE
|
DECLARE
|
PASSED_PARM : PRI_CONST;
|
PASSED_PARM : PRI_CONST;
|
|
|
PROCEDURE ACT_PROC (PARM : PRI_CONST) IS
|
PROCEDURE ACT_PROC (PARM : PRI_CONST) IS
|
BEGIN
|
BEGIN
|
SUBPRG_ACT := TRUE;
|
SUBPRG_ACT := TRUE;
|
END ACT_PROC;
|
END ACT_PROC;
|
|
|
GENERIC
|
GENERIC
|
|
|
WITH PROCEDURE PASSED_PROC (PARM : PRI_TYPE);
|
WITH PROCEDURE PASSED_PROC (PARM : PRI_TYPE);
|
|
|
PROCEDURE GEN_PROC;
|
PROCEDURE GEN_PROC;
|
|
|
PROCEDURE GEN_PROC IS
|
PROCEDURE GEN_PROC IS
|
BEGIN
|
BEGIN
|
PASSED_PROC (PASSED_PARM);
|
PASSED_PROC (PASSED_PARM);
|
END GEN_PROC;
|
END GEN_PROC;
|
|
|
PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
|
PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
|
BEGIN
|
BEGIN
|
SUBPRG_ACT := FALSE;
|
SUBPRG_ACT := FALSE;
|
INST_PROC;
|
INST_PROC;
|
IF NOT SUBPRG_ACT THEN
|
IF NOT SUBPRG_ACT THEN
|
FAILED
|
FAILED
|
("ONE PRIVATE PARAMETER CONSTRAINED MADE MATCH " &
|
("ONE PRIVATE PARAMETER CONSTRAINED MADE MATCH " &
|
"INVALID");
|
"INVALID");
|
END IF;
|
END IF;
|
END;
|
END;
|
|
|
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
-- PRESENCE (OR ABSENCE) OF AN EXPLICIT "IN" MODE
|
-- PRESENCE (OR ABSENCE) OF AN EXPLICIT "IN" MODE
|
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
|
|
DECLARE
|
DECLARE
|
|
|
PROCEDURE ACT_PROC (PARM : INTEGER) IS
|
PROCEDURE ACT_PROC (PARM : INTEGER) IS
|
BEGIN
|
BEGIN
|
SUBPRG_ACT := TRUE;
|
SUBPRG_ACT := TRUE;
|
END ACT_PROC;
|
END ACT_PROC;
|
|
|
GENERIC
|
GENERIC
|
|
|
WITH PROCEDURE PASSED_PROC (PARM : IN INTEGER);
|
WITH PROCEDURE PASSED_PROC (PARM : IN INTEGER);
|
|
|
PROCEDURE GEN_PROC;
|
PROCEDURE GEN_PROC;
|
|
|
PROCEDURE GEN_PROC IS
|
PROCEDURE GEN_PROC IS
|
BEGIN
|
BEGIN
|
PASSED_PROC (1);
|
PASSED_PROC (1);
|
END GEN_PROC;
|
END GEN_PROC;
|
|
|
PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
|
PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
|
BEGIN
|
BEGIN
|
SUBPRG_ACT := FALSE;
|
SUBPRG_ACT := FALSE;
|
INST_PROC;
|
INST_PROC;
|
IF NOT SUBPRG_ACT THEN
|
IF NOT SUBPRG_ACT THEN
|
FAILED
|
FAILED
|
("PRESENCE OF AN EXPLICIT 'IN' MODE MADE MATCH " &
|
("PRESENCE OF AN EXPLICIT 'IN' MODE MADE MATCH " &
|
"INVALID");
|
"INVALID");
|
END IF;
|
END IF;
|
END;
|
END;
|
|
|
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
-- DIFFERENT TYPE MARKS
|
-- DIFFERENT TYPE MARKS
|
----------------------------------------------------------------------
|
----------------------------------------------------------------------
|
|
|
DECLARE
|
DECLARE
|
|
|
SUBTYPE MARK_1_TYPE IS INTEGER;
|
SUBTYPE MARK_1_TYPE IS INTEGER;
|
|
|
SUBTYPE MARK_2_TYPE IS INTEGER;
|
SUBTYPE MARK_2_TYPE IS INTEGER;
|
|
|
PROCEDURE ACT_PROC (PARM1 : IN MARK_1_TYPE) IS
|
PROCEDURE ACT_PROC (PARM1 : IN MARK_1_TYPE) IS
|
BEGIN
|
BEGIN
|
SUBPRG_ACT := TRUE;
|
SUBPRG_ACT := TRUE;
|
END ACT_PROC;
|
END ACT_PROC;
|
|
|
GENERIC
|
GENERIC
|
|
|
WITH PROCEDURE PASSED_PROC (PARM2 : MARK_2_TYPE);
|
WITH PROCEDURE PASSED_PROC (PARM2 : MARK_2_TYPE);
|
|
|
PROCEDURE GEN_PROC;
|
PROCEDURE GEN_PROC;
|
|
|
PROCEDURE GEN_PROC IS
|
PROCEDURE GEN_PROC IS
|
BEGIN
|
BEGIN
|
PASSED_PROC (1);
|
PASSED_PROC (1);
|
END GEN_PROC;
|
END GEN_PROC;
|
|
|
PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
|
PROCEDURE INST_PROC IS NEW GEN_PROC (ACT_PROC);
|
BEGIN
|
BEGIN
|
SUBPRG_ACT := FALSE;
|
SUBPRG_ACT := FALSE;
|
INST_PROC;
|
INST_PROC;
|
IF NOT SUBPRG_ACT THEN
|
IF NOT SUBPRG_ACT THEN
|
FAILED ("DIFFERENT TYPE MARKS MADE MATCH INVALID");
|
FAILED ("DIFFERENT TYPE MARKS MADE MATCH INVALID");
|
END IF;
|
END IF;
|
END;
|
END;
|
RESULT;
|
RESULT;
|
END CC3605A;
|
END CC3605A;
|
|
|