-- CC3007B.ADA
|
-- CC3007B.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.
|
--*
|
--*
|
-- CHECK THAT THE NAMES IN A GENERIC INSTANTIATION ARE STATICALLY
|
-- CHECK THAT THE NAMES IN A GENERIC INSTANTIATION ARE STATICALLY
|
-- IDENTIFIED (I.E., BOUND) AT THE TEXTUAL POINT OF THE INSTANTIA-
|
-- IDENTIFIED (I.E., BOUND) AT THE TEXTUAL POINT OF THE INSTANTIA-
|
-- TION, AND ARE BOUND BEFORE BEING "SUBSTITUTED" FOR THE COR-
|
-- TION, AND ARE BOUND BEFORE BEING "SUBSTITUTED" FOR THE COR-
|
-- RESPONDING GENERIC FORMAL PARAMETERS IN THE SPECIFICATION AND
|
-- RESPONDING GENERIC FORMAL PARAMETERS IN THE SPECIFICATION AND
|
-- BODY TEMPLATES.
|
-- BODY TEMPLATES.
|
--
|
--
|
-- SEE AI-00365/05-BI-WJ.
|
-- SEE AI-00365/05-BI-WJ.
|
|
|
-- HISTORY:
|
-- HISTORY:
|
-- EDWARD V. BERARD, 15 AUGUST 1990
|
-- EDWARD V. BERARD, 15 AUGUST 1990
|
-- DAS 08 OCT 90 CHANGED INSTANTIATIONS TO USE VARIABLES
|
-- DAS 08 OCT 90 CHANGED INSTANTIATIONS TO USE VARIABLES
|
-- M1 AND M2 IN THE FIRST_BLOCK INSTANTIA-
|
-- M1 AND M2 IN THE FIRST_BLOCK INSTANTIA-
|
-- TION AND TO ASSIGN THIRD_DATE AND
|
-- TION AND TO ASSIGN THIRD_DATE AND
|
-- FOURTH_DATE VALUES BEFORE AND AFTER THE
|
-- FOURTH_DATE VALUES BEFORE AND AFTER THE
|
-- SECOND_BLOCK INSTANTIATION.
|
-- SECOND_BLOCK INSTANTIATION.
|
|
|
WITH REPORT;
|
WITH REPORT;
|
|
|
PROCEDURE CC3007B IS
|
PROCEDURE CC3007B IS
|
|
|
INCREMENTED_VALUE : NATURAL := 0;
|
INCREMENTED_VALUE : NATURAL := 0;
|
|
|
TYPE MONTH_TYPE IS (JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG,
|
TYPE MONTH_TYPE IS (JAN, FEB, MAR, APR, MAY, JUN, JUL, AUG,
|
SEP, OCT, NOV, DEC);
|
SEP, OCT, NOV, DEC);
|
TYPE DAY_TYPE IS RANGE 1 .. 31;
|
TYPE DAY_TYPE IS RANGE 1 .. 31;
|
TYPE YEAR_TYPE IS RANGE 1904 .. 2050;
|
TYPE YEAR_TYPE IS RANGE 1904 .. 2050;
|
TYPE DATE IS RECORD
|
TYPE DATE IS RECORD
|
MONTH : MONTH_TYPE;
|
MONTH : MONTH_TYPE;
|
DAY : DAY_TYPE;
|
DAY : DAY_TYPE;
|
YEAR : YEAR_TYPE;
|
YEAR : YEAR_TYPE;
|
END RECORD;
|
END RECORD;
|
|
|
TYPE DATE_ACCESS IS ACCESS DATE;
|
TYPE DATE_ACCESS IS ACCESS DATE;
|
|
|
TODAY : DATE := (MONTH => AUG,
|
TODAY : DATE := (MONTH => AUG,
|
DAY => 8,
|
DAY => 8,
|
YEAR => 1990);
|
YEAR => 1990);
|
|
|
CHRISTMAS : DATE := (MONTH => DEC,
|
CHRISTMAS : DATE := (MONTH => DEC,
|
DAY => 25,
|
DAY => 25,
|
YEAR => 1948);
|
YEAR => 1948);
|
|
|
WALL_DATE : DATE := (MONTH => NOV,
|
WALL_DATE : DATE := (MONTH => NOV,
|
DAY => 9,
|
DAY => 9,
|
YEAR => 1989);
|
YEAR => 1989);
|
|
|
BIRTH_DATE : DATE := (MONTH => OCT,
|
BIRTH_DATE : DATE := (MONTH => OCT,
|
DAY => 3,
|
DAY => 3,
|
YEAR => 1949);
|
YEAR => 1949);
|
|
|
FIRST_DUE_DATE : DATE := (MONTH => JAN,
|
FIRST_DUE_DATE : DATE := (MONTH => JAN,
|
DAY => 23,
|
DAY => 23,
|
YEAR => 1990);
|
YEAR => 1990);
|
|
|
LAST_DUE_DATE : DATE := (MONTH => DEC,
|
LAST_DUE_DATE : DATE := (MONTH => DEC,
|
DAY => 20,
|
DAY => 20,
|
YEAR => 1990);
|
YEAR => 1990);
|
|
|
THIS_MONTH : MONTH_TYPE := AUG;
|
THIS_MONTH : MONTH_TYPE := AUG;
|
|
|
STORED_RECORD : DATE := TODAY;
|
STORED_RECORD : DATE := TODAY;
|
|
|
STORED_INDEX : MONTH_TYPE := AUG;
|
STORED_INDEX : MONTH_TYPE := AUG;
|
|
|
FIRST_DATE : DATE_ACCESS := NEW DATE'(WALL_DATE);
|
FIRST_DATE : DATE_ACCESS := NEW DATE'(WALL_DATE);
|
SECOND_DATE : DATE_ACCESS := FIRST_DATE;
|
SECOND_DATE : DATE_ACCESS := FIRST_DATE;
|
|
|
THIRD_DATE : DATE_ACCESS := NEW DATE'(BIRTH_DATE);
|
THIRD_DATE : DATE_ACCESS := NEW DATE'(BIRTH_DATE);
|
FOURTH_DATE : DATE_ACCESS := NEW DATE'(CHRISTMAS);
|
FOURTH_DATE : DATE_ACCESS := NEW DATE'(CHRISTMAS);
|
|
|
TYPE DUE_DATES IS ARRAY (MONTH_TYPE RANGE JAN .. DEC) OF DATE;
|
TYPE DUE_DATES IS ARRAY (MONTH_TYPE RANGE JAN .. DEC) OF DATE;
|
REPORT_DATES : DUE_DATES := ((JAN, 23, 1990), (FEB, 23, 1990),
|
REPORT_DATES : DUE_DATES := ((JAN, 23, 1990), (FEB, 23, 1990),
|
(MAR, 23, 1990), (APR, 23, 1990),
|
(MAR, 23, 1990), (APR, 23, 1990),
|
(MAY, 23, 1990), (JUN, 22, 1990),
|
(MAY, 23, 1990), (JUN, 22, 1990),
|
(JUL, 23, 1990), (AUG, 23, 1990),
|
(JUL, 23, 1990), (AUG, 23, 1990),
|
(SEP, 24, 1990), (OCT, 23, 1990),
|
(SEP, 24, 1990), (OCT, 23, 1990),
|
(NOV, 23, 1990), (DEC, 20, 1990));
|
(NOV, 23, 1990), (DEC, 20, 1990));
|
|
|
GENERIC
|
GENERIC
|
|
|
NATURALLY : IN NATURAL;
|
NATURALLY : IN NATURAL;
|
FIRST_RECORD : IN OUT DATE;
|
FIRST_RECORD : IN OUT DATE;
|
SECOND_RECORD : IN OUT DATE;
|
SECOND_RECORD : IN OUT DATE;
|
TYPE RECORD_POINTER IS ACCESS DATE;
|
TYPE RECORD_POINTER IS ACCESS DATE;
|
POINTER : IN OUT RECORD_POINTER;
|
POINTER : IN OUT RECORD_POINTER;
|
TYPE ARRAY_TYPE IS ARRAY (MONTH_TYPE) OF DATE;
|
TYPE ARRAY_TYPE IS ARRAY (MONTH_TYPE) OF DATE;
|
THIS_ARRAY : IN OUT ARRAY_TYPE;
|
THIS_ARRAY : IN OUT ARRAY_TYPE;
|
FIRST_ARRAY_ELEMENT : IN OUT DATE;
|
FIRST_ARRAY_ELEMENT : IN OUT DATE;
|
SECOND_ARRAY_ELEMENT : IN OUT DATE;
|
SECOND_ARRAY_ELEMENT : IN OUT DATE;
|
INDEX_ELEMENT : IN OUT MONTH_TYPE;
|
INDEX_ELEMENT : IN OUT MONTH_TYPE;
|
POINTER_TEST : IN OUT DATE;
|
POINTER_TEST : IN OUT DATE;
|
ANOTHER_POINTER_TEST : IN OUT DATE;
|
ANOTHER_POINTER_TEST : IN OUT DATE;
|
|
|
PACKAGE TEST_ACTUAL_PARAMETERS IS
|
PACKAGE TEST_ACTUAL_PARAMETERS IS
|
|
|
PROCEDURE EVALUATE_FUNCTION;
|
PROCEDURE EVALUATE_FUNCTION;
|
PROCEDURE CHECK_RECORDS;
|
PROCEDURE CHECK_RECORDS;
|
PROCEDURE CHECK_ACCESS;
|
PROCEDURE CHECK_ACCESS;
|
PROCEDURE CHECK_ARRAY;
|
PROCEDURE CHECK_ARRAY;
|
PROCEDURE CHECK_ARRAY_ELEMENTS;
|
PROCEDURE CHECK_ARRAY_ELEMENTS;
|
PROCEDURE CHECK_SCALAR;
|
PROCEDURE CHECK_SCALAR;
|
PROCEDURE CHECK_POINTERS;
|
PROCEDURE CHECK_POINTERS;
|
|
|
END TEST_ACTUAL_PARAMETERS;
|
END TEST_ACTUAL_PARAMETERS;
|
|
|
PACKAGE BODY TEST_ACTUAL_PARAMETERS IS
|
PACKAGE BODY TEST_ACTUAL_PARAMETERS IS
|
|
|
PROCEDURE EVALUATE_FUNCTION IS
|
PROCEDURE EVALUATE_FUNCTION IS
|
BEGIN -- EVALUATE_FUNCTION
|
BEGIN -- EVALUATE_FUNCTION
|
|
|
IF (INCREMENTED_VALUE = 0) OR
|
IF (INCREMENTED_VALUE = 0) OR
|
(NATURALLY /= INCREMENTED_VALUE) THEN
|
(NATURALLY /= INCREMENTED_VALUE) THEN
|
REPORT.FAILED ("PROBLEMS EVALUATING FUNCTION " &
|
REPORT.FAILED ("PROBLEMS EVALUATING FUNCTION " &
|
"PARAMETER.");
|
"PARAMETER.");
|
END IF;
|
END IF;
|
|
|
END EVALUATE_FUNCTION;
|
END EVALUATE_FUNCTION;
|
|
|
PROCEDURE CHECK_RECORDS IS
|
PROCEDURE CHECK_RECORDS IS
|
|
|
STORE : DATE;
|
STORE : DATE;
|
|
|
BEGIN -- CHECK_RECORDS
|
BEGIN -- CHECK_RECORDS
|
|
|
IF STORED_RECORD /= FIRST_RECORD THEN
|
IF STORED_RECORD /= FIRST_RECORD THEN
|
REPORT.FAILED ("PROBLEM WITH RECORD TYPES");
|
REPORT.FAILED ("PROBLEM WITH RECORD TYPES");
|
ELSE
|
ELSE
|
STORED_RECORD := SECOND_RECORD;
|
STORED_RECORD := SECOND_RECORD;
|
STORE := FIRST_RECORD;
|
STORE := FIRST_RECORD;
|
FIRST_RECORD := SECOND_RECORD;
|
FIRST_RECORD := SECOND_RECORD;
|
SECOND_RECORD := STORE;
|
SECOND_RECORD := STORE;
|
END IF;
|
END IF;
|
|
|
END CHECK_RECORDS;
|
END CHECK_RECORDS;
|
|
|
PROCEDURE CHECK_ACCESS IS
|
PROCEDURE CHECK_ACCESS IS
|
BEGIN -- CHECK_ACCESS
|
BEGIN -- CHECK_ACCESS
|
|
|
IF ((INCREMENTED_VALUE / 2) * 2) /= INCREMENTED_VALUE
|
IF ((INCREMENTED_VALUE / 2) * 2) /= INCREMENTED_VALUE
|
THEN
|
THEN
|
IF POINTER.ALL /= DATE'(WALL_DATE) THEN
|
IF POINTER.ALL /= DATE'(WALL_DATE) THEN
|
REPORT.FAILED ("PROBLEM WITH ACCESS TYPES " &
|
REPORT.FAILED ("PROBLEM WITH ACCESS TYPES " &
|
"- 1");
|
"- 1");
|
ELSE
|
ELSE
|
POINTER.ALL := DATE'(BIRTH_DATE);
|
POINTER.ALL := DATE'(BIRTH_DATE);
|
END IF;
|
END IF;
|
ELSE
|
ELSE
|
IF POINTER.ALL /= DATE'(BIRTH_DATE) THEN
|
IF POINTER.ALL /= DATE'(BIRTH_DATE) THEN
|
REPORT.FAILED ("PROBLEM WITH ACCESS TYPES " &
|
REPORT.FAILED ("PROBLEM WITH ACCESS TYPES " &
|
"- 2");
|
"- 2");
|
ELSE
|
ELSE
|
POINTER.ALL := DATE'(WALL_DATE);
|
POINTER.ALL := DATE'(WALL_DATE);
|
END IF;
|
END IF;
|
END IF;
|
END IF;
|
|
|
END CHECK_ACCESS;
|
END CHECK_ACCESS;
|
|
|
PROCEDURE CHECK_ARRAY IS
|
PROCEDURE CHECK_ARRAY IS
|
|
|
STORE : DATE;
|
STORE : DATE;
|
|
|
BEGIN -- CHECK_ARRAY
|
BEGIN -- CHECK_ARRAY
|
|
|
IF ((INCREMENTED_VALUE / 2) * 2) /= INCREMENTED_VALUE
|
IF ((INCREMENTED_VALUE / 2) * 2) /= INCREMENTED_VALUE
|
THEN
|
THEN
|
IF THIS_ARRAY (THIS_ARRAY'FIRST) /= FIRST_DUE_DATE
|
IF THIS_ARRAY (THIS_ARRAY'FIRST) /= FIRST_DUE_DATE
|
THEN
|
THEN
|
REPORT.FAILED ("PROBLEM WITH ARRAY TYPES - 1");
|
REPORT.FAILED ("PROBLEM WITH ARRAY TYPES - 1");
|
ELSE
|
ELSE
|
THIS_ARRAY (THIS_ARRAY'FIRST) := LAST_DUE_DATE;
|
THIS_ARRAY (THIS_ARRAY'FIRST) := LAST_DUE_DATE;
|
THIS_ARRAY (THIS_ARRAY'LAST) := FIRST_DUE_DATE;
|
THIS_ARRAY (THIS_ARRAY'LAST) := FIRST_DUE_DATE;
|
END IF;
|
END IF;
|
ELSE
|
ELSE
|
IF THIS_ARRAY (THIS_ARRAY'FIRST) /= LAST_DUE_DATE
|
IF THIS_ARRAY (THIS_ARRAY'FIRST) /= LAST_DUE_DATE
|
THEN
|
THEN
|
REPORT.FAILED ("PROBLEM WITH ARRAY TYPES - 2");
|
REPORT.FAILED ("PROBLEM WITH ARRAY TYPES - 2");
|
ELSE
|
ELSE
|
THIS_ARRAY (THIS_ARRAY'FIRST) :=
|
THIS_ARRAY (THIS_ARRAY'FIRST) :=
|
FIRST_DUE_DATE;
|
FIRST_DUE_DATE;
|
THIS_ARRAY (THIS_ARRAY'LAST) := LAST_DUE_DATE;
|
THIS_ARRAY (THIS_ARRAY'LAST) := LAST_DUE_DATE;
|
END IF;
|
END IF;
|
END IF;
|
END IF;
|
|
|
END CHECK_ARRAY;
|
END CHECK_ARRAY;
|
|
|
PROCEDURE CHECK_ARRAY_ELEMENTS IS
|
PROCEDURE CHECK_ARRAY_ELEMENTS IS
|
|
|
STORE : DATE;
|
STORE : DATE;
|
|
|
BEGIN -- CHECK_ARRAY_ELEMENTS
|
BEGIN -- CHECK_ARRAY_ELEMENTS
|
|
|
IF ((INCREMENTED_VALUE / 2) * 2) /= INCREMENTED_VALUE
|
IF ((INCREMENTED_VALUE / 2) * 2) /= INCREMENTED_VALUE
|
THEN
|
THEN
|
IF (FIRST_ARRAY_ELEMENT.MONTH /= MAY) OR
|
IF (FIRST_ARRAY_ELEMENT.MONTH /= MAY) OR
|
(SECOND_ARRAY_ELEMENT.DAY /= 22) THEN
|
(SECOND_ARRAY_ELEMENT.DAY /= 22) THEN
|
REPORT.FAILED ("PROBLEM WITH ARRAY ELEMENTS " &
|
REPORT.FAILED ("PROBLEM WITH ARRAY ELEMENTS " &
|
"- 1");
|
"- 1");
|
ELSE
|
ELSE
|
STORE := FIRST_ARRAY_ELEMENT;
|
STORE := FIRST_ARRAY_ELEMENT;
|
FIRST_ARRAY_ELEMENT := SECOND_ARRAY_ELEMENT;
|
FIRST_ARRAY_ELEMENT := SECOND_ARRAY_ELEMENT;
|
SECOND_ARRAY_ELEMENT := STORE;
|
SECOND_ARRAY_ELEMENT := STORE;
|
END IF;
|
END IF;
|
ELSE
|
ELSE
|
IF (FIRST_ARRAY_ELEMENT.MONTH /= JUN) OR
|
IF (FIRST_ARRAY_ELEMENT.MONTH /= JUN) OR
|
(SECOND_ARRAY_ELEMENT.DAY /= 23) THEN
|
(SECOND_ARRAY_ELEMENT.DAY /= 23) THEN
|
REPORT.FAILED ("PROBLEM WITH ARRAY ELEMENTS " &
|
REPORT.FAILED ("PROBLEM WITH ARRAY ELEMENTS " &
|
"- 2");
|
"- 2");
|
ELSE
|
ELSE
|
STORE := FIRST_ARRAY_ELEMENT;
|
STORE := FIRST_ARRAY_ELEMENT;
|
FIRST_ARRAY_ELEMENT := SECOND_ARRAY_ELEMENT;
|
FIRST_ARRAY_ELEMENT := SECOND_ARRAY_ELEMENT;
|
SECOND_ARRAY_ELEMENT := STORE;
|
SECOND_ARRAY_ELEMENT := STORE;
|
END IF;
|
END IF;
|
END IF;
|
END IF;
|
|
|
END CHECK_ARRAY_ELEMENTS;
|
END CHECK_ARRAY_ELEMENTS;
|
|
|
PROCEDURE CHECK_SCALAR IS
|
PROCEDURE CHECK_SCALAR IS
|
BEGIN -- CHECK_SCALAR
|
BEGIN -- CHECK_SCALAR
|
|
|
IF ((INCREMENTED_VALUE / 2) * 2) /= INCREMENTED_VALUE
|
IF ((INCREMENTED_VALUE / 2) * 2) /= INCREMENTED_VALUE
|
THEN
|
THEN
|
IF INDEX_ELEMENT /= STORED_INDEX THEN
|
IF INDEX_ELEMENT /= STORED_INDEX THEN
|
REPORT.FAILED ("PROBLEM WITH INDEX TYPES - 1");
|
REPORT.FAILED ("PROBLEM WITH INDEX TYPES - 1");
|
ELSE
|
ELSE
|
INDEX_ELEMENT :=
|
INDEX_ELEMENT :=
|
MONTH_TYPE'SUCC(INDEX_ELEMENT);
|
MONTH_TYPE'SUCC(INDEX_ELEMENT);
|
STORED_INDEX := INDEX_ELEMENT;
|
STORED_INDEX := INDEX_ELEMENT;
|
END IF;
|
END IF;
|
ELSE
|
ELSE
|
IF INDEX_ELEMENT /= STORED_INDEX THEN
|
IF INDEX_ELEMENT /= STORED_INDEX THEN
|
REPORT.FAILED ("PROBLEM WITH INDEX TYPES - 2");
|
REPORT.FAILED ("PROBLEM WITH INDEX TYPES - 2");
|
ELSE
|
ELSE
|
INDEX_ELEMENT :=
|
INDEX_ELEMENT :=
|
MONTH_TYPE'PRED (INDEX_ELEMENT);
|
MONTH_TYPE'PRED (INDEX_ELEMENT);
|
STORED_INDEX := INDEX_ELEMENT;
|
STORED_INDEX := INDEX_ELEMENT;
|
END IF;
|
END IF;
|
END IF;
|
END IF;
|
|
|
END CHECK_SCALAR;
|
END CHECK_SCALAR;
|
|
|
PROCEDURE CHECK_POINTERS IS
|
PROCEDURE CHECK_POINTERS IS
|
|
|
STORE : DATE;
|
STORE : DATE;
|
|
|
BEGIN -- CHECK_POINTERS
|
BEGIN -- CHECK_POINTERS
|
|
|
IF ((INCREMENTED_VALUE / 2) * 2) /= INCREMENTED_VALUE
|
IF ((INCREMENTED_VALUE / 2) * 2) /= INCREMENTED_VALUE
|
THEN
|
THEN
|
IF (POINTER_TEST /= DATE'(OCT, 3, 1949)) OR
|
IF (POINTER_TEST /= DATE'(OCT, 3, 1949)) OR
|
(ANOTHER_POINTER_TEST /= DATE'(DEC, 25, 1948))
|
(ANOTHER_POINTER_TEST /= DATE'(DEC, 25, 1948))
|
THEN
|
THEN
|
REPORT.FAILED ("PROBLEM WITH POINTER TEST " &
|
REPORT.FAILED ("PROBLEM WITH POINTER TEST " &
|
"- 1");
|
"- 1");
|
ELSE
|
ELSE
|
STORE := POINTER_TEST;
|
STORE := POINTER_TEST;
|
POINTER_TEST := ANOTHER_POINTER_TEST;
|
POINTER_TEST := ANOTHER_POINTER_TEST;
|
ANOTHER_POINTER_TEST := STORE;
|
ANOTHER_POINTER_TEST := STORE;
|
END IF;
|
END IF;
|
ELSE
|
ELSE
|
IF (POINTER_TEST /= DATE'(DEC, 25, 1948)) OR
|
IF (POINTER_TEST /= DATE'(DEC, 25, 1948)) OR
|
(ANOTHER_POINTER_TEST /= DATE'(OCT, 3, 1949))
|
(ANOTHER_POINTER_TEST /= DATE'(OCT, 3, 1949))
|
THEN
|
THEN
|
REPORT.FAILED ("PROBLEM WITH POINTER TEST " &
|
REPORT.FAILED ("PROBLEM WITH POINTER TEST " &
|
"- 2");
|
"- 2");
|
ELSE
|
ELSE
|
STORE := POINTER_TEST;
|
STORE := POINTER_TEST;
|
POINTER_TEST := ANOTHER_POINTER_TEST;
|
POINTER_TEST := ANOTHER_POINTER_TEST;
|
ANOTHER_POINTER_TEST := STORE;
|
ANOTHER_POINTER_TEST := STORE;
|
END IF;
|
END IF;
|
END IF;
|
END IF;
|
|
|
END CHECK_POINTERS;
|
END CHECK_POINTERS;
|
|
|
END TEST_ACTUAL_PARAMETERS;
|
END TEST_ACTUAL_PARAMETERS;
|
|
|
FUNCTION INC RETURN NATURAL IS
|
FUNCTION INC RETURN NATURAL IS
|
BEGIN -- INC
|
BEGIN -- INC
|
INCREMENTED_VALUE := NATURAL'SUCC (INCREMENTED_VALUE);
|
INCREMENTED_VALUE := NATURAL'SUCC (INCREMENTED_VALUE);
|
RETURN INCREMENTED_VALUE;
|
RETURN INCREMENTED_VALUE;
|
END INC;
|
END INC;
|
|
|
BEGIN -- CC3007B
|
BEGIN -- CC3007B
|
|
|
REPORT.TEST ("CC3007B", "CHECK THAT THE NAMES IN A GENERIC " &
|
REPORT.TEST ("CC3007B", "CHECK THAT THE NAMES IN A GENERIC " &
|
"INSTANTIATION ARE STAICALLY IDENTIFIED (I.E., " &
|
"INSTANTIATION ARE STAICALLY IDENTIFIED (I.E., " &
|
"BOUND) AT THE TEXTUAL POINT OF THE INSTANTIATION" &
|
"BOUND) AT THE TEXTUAL POINT OF THE INSTANTIATION" &
|
", AND ARE BOUND BEFORE BEING SUBSTITUTED FOR " &
|
", AND ARE BOUND BEFORE BEING SUBSTITUTED FOR " &
|
"THE CORRESPONDING GENERIC FORMAL PARAMETERS IN " &
|
"THE CORRESPONDING GENERIC FORMAL PARAMETERS IN " &
|
"THE SPECIFICATION AND BODY TEMPLATES. " &
|
"THE SPECIFICATION AND BODY TEMPLATES. " &
|
"SEE AI-00365/05-BI-WJ.");
|
"SEE AI-00365/05-BI-WJ.");
|
|
|
FIRST_BLOCK:
|
FIRST_BLOCK:
|
|
|
DECLARE
|
DECLARE
|
|
|
M1 : MONTH_TYPE := MAY;
|
M1 : MONTH_TYPE := MAY;
|
M2 : MONTH_TYPE := JUN;
|
M2 : MONTH_TYPE := JUN;
|
|
|
PACKAGE NEW_TEST_ACTUAL_PARAMETERS IS
|
PACKAGE NEW_TEST_ACTUAL_PARAMETERS IS
|
NEW TEST_ACTUAL_PARAMETERS (
|
NEW TEST_ACTUAL_PARAMETERS (
|
NATURALLY => INC,
|
NATURALLY => INC,
|
FIRST_RECORD => TODAY,
|
FIRST_RECORD => TODAY,
|
SECOND_RECORD => CHRISTMAS,
|
SECOND_RECORD => CHRISTMAS,
|
RECORD_POINTER => DATE_ACCESS,
|
RECORD_POINTER => DATE_ACCESS,
|
POINTER => SECOND_DATE,
|
POINTER => SECOND_DATE,
|
ARRAY_TYPE => DUE_DATES,
|
ARRAY_TYPE => DUE_DATES,
|
THIS_ARRAY => REPORT_DATES,
|
THIS_ARRAY => REPORT_DATES,
|
FIRST_ARRAY_ELEMENT => REPORT_DATES (M1),
|
FIRST_ARRAY_ELEMENT => REPORT_DATES (M1),
|
SECOND_ARRAY_ELEMENT => REPORT_DATES (M2),
|
SECOND_ARRAY_ELEMENT => REPORT_DATES (M2),
|
INDEX_ELEMENT => THIS_MONTH,
|
INDEX_ELEMENT => THIS_MONTH,
|
POINTER_TEST => THIRD_DATE.ALL,
|
POINTER_TEST => THIRD_DATE.ALL,
|
ANOTHER_POINTER_TEST => FOURTH_DATE.ALL);
|
ANOTHER_POINTER_TEST => FOURTH_DATE.ALL);
|
|
|
BEGIN -- FIRST_BLOCK
|
BEGIN -- FIRST_BLOCK
|
|
|
REPORT.COMMENT ("ENTERING FIRST BLOCK");
|
REPORT.COMMENT ("ENTERING FIRST BLOCK");
|
NEW_TEST_ACTUAL_PARAMETERS.EVALUATE_FUNCTION;
|
NEW_TEST_ACTUAL_PARAMETERS.EVALUATE_FUNCTION;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_SCALAR;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_SCALAR;
|
M1 := SEP;
|
M1 := SEP;
|
M2 := OCT;
|
M2 := OCT;
|
-- NEW_TEST_ACTUAL_PARAMETERS SHOULD USE THE PREVIOUS
|
-- NEW_TEST_ACTUAL_PARAMETERS SHOULD USE THE PREVIOUS
|
-- VALUES OF MAY AND JUN.
|
-- VALUES OF MAY AND JUN.
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_ARRAY;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_ARRAY;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_ARRAY_ELEMENTS;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_ARRAY_ELEMENTS;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_ACCESS;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_ACCESS;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_RECORDS;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_RECORDS;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_POINTERS;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_POINTERS;
|
|
|
END FIRST_BLOCK;
|
END FIRST_BLOCK;
|
|
|
SECOND_BLOCK:
|
SECOND_BLOCK:
|
|
|
DECLARE
|
DECLARE
|
|
|
SAVE_THIRD_DATE : DATE_ACCESS := THIRD_DATE;
|
SAVE_THIRD_DATE : DATE_ACCESS := THIRD_DATE;
|
SAVE_FOURTH_DATE : DATE_ACCESS := FOURTH_DATE;
|
SAVE_FOURTH_DATE : DATE_ACCESS := FOURTH_DATE;
|
|
|
PACKAGE NEW_TEST_ACTUAL_PARAMETERS IS
|
PACKAGE NEW_TEST_ACTUAL_PARAMETERS IS
|
NEW TEST_ACTUAL_PARAMETERS (
|
NEW TEST_ACTUAL_PARAMETERS (
|
NATURALLY => INC,
|
NATURALLY => INC,
|
FIRST_RECORD => TODAY,
|
FIRST_RECORD => TODAY,
|
SECOND_RECORD => CHRISTMAS,
|
SECOND_RECORD => CHRISTMAS,
|
RECORD_POINTER => DATE_ACCESS,
|
RECORD_POINTER => DATE_ACCESS,
|
POINTER => SECOND_DATE,
|
POINTER => SECOND_DATE,
|
ARRAY_TYPE => DUE_DATES,
|
ARRAY_TYPE => DUE_DATES,
|
THIS_ARRAY => REPORT_DATES,
|
THIS_ARRAY => REPORT_DATES,
|
FIRST_ARRAY_ELEMENT => REPORT_DATES (MAY),
|
FIRST_ARRAY_ELEMENT => REPORT_DATES (MAY),
|
SECOND_ARRAY_ELEMENT => REPORT_DATES (JUN),
|
SECOND_ARRAY_ELEMENT => REPORT_DATES (JUN),
|
INDEX_ELEMENT => THIS_MONTH,
|
INDEX_ELEMENT => THIS_MONTH,
|
POINTER_TEST => THIRD_DATE.ALL,
|
POINTER_TEST => THIRD_DATE.ALL,
|
ANOTHER_POINTER_TEST => FOURTH_DATE.ALL);
|
ANOTHER_POINTER_TEST => FOURTH_DATE.ALL);
|
|
|
BEGIN -- SECOND_BLOCK
|
BEGIN -- SECOND_BLOCK
|
|
|
REPORT.COMMENT ("ENTERING SECOND BLOCK");
|
REPORT.COMMENT ("ENTERING SECOND BLOCK");
|
NEW_TEST_ACTUAL_PARAMETERS.EVALUATE_FUNCTION;
|
NEW_TEST_ACTUAL_PARAMETERS.EVALUATE_FUNCTION;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_SCALAR;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_SCALAR;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_ARRAY;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_ARRAY;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_ARRAY_ELEMENTS;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_ARRAY_ELEMENTS;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_ACCESS;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_ACCESS;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_RECORDS;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_RECORDS;
|
|
|
THIRD_DATE := NEW DATE'(JUL, 13, 1951);
|
THIRD_DATE := NEW DATE'(JUL, 13, 1951);
|
FOURTH_DATE := NEW DATE'(JUL, 4, 1976);
|
FOURTH_DATE := NEW DATE'(JUL, 4, 1976);
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_POINTERS;
|
NEW_TEST_ACTUAL_PARAMETERS.CHECK_POINTERS;
|
THIRD_DATE := SAVE_THIRD_DATE;
|
THIRD_DATE := SAVE_THIRD_DATE;
|
FOURTH_DATE := SAVE_FOURTH_DATE;
|
FOURTH_DATE := SAVE_FOURTH_DATE;
|
|
|
END SECOND_BLOCK;
|
END SECOND_BLOCK;
|
|
|
REPORT.RESULT;
|
REPORT.RESULT;
|
|
|
END CC3007B;
|
END CC3007B;
|
|
|