-- CC1225A.TST
|
-- CC1225A.TST
|
|
|
-- 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, FOR A FORMAL ACCESS TYPE, THAT ALL ALLOWABLE OPERATIONS
|
-- CHECK, FOR A FORMAL ACCESS TYPE, THAT ALL ALLOWABLE OPERATIONS
|
-- ARE IMPLICITLY DECLARED.
|
-- ARE IMPLICITLY DECLARED.
|
|
|
-- MACRO SUBSTITUTION:
|
-- MACRO SUBSTITUTION:
|
-- $TASK_STORAGE_SIZE IS THE NUMBER OF STORAGE_UNITS REQUIRED FOR
|
-- $TASK_STORAGE_SIZE IS THE NUMBER OF STORAGE_UNITS REQUIRED FOR
|
-- THE ACTIVATION OF A TASK.
|
-- THE ACTIVATION OF A TASK.
|
|
|
-- HISTORY:
|
-- HISTORY:
|
-- BCB 03/29/88 CREATED ORIGINAL TEST.
|
-- BCB 03/29/88 CREATED ORIGINAL TEST.
|
-- RDH 04/09/90 ADDED 'STORAGE_SIZE CLAUSES. CHANGED EXTENSION TO
|
-- RDH 04/09/90 ADDED 'STORAGE_SIZE CLAUSES. CHANGED EXTENSION TO
|
-- 'TST'.
|
-- 'TST'.
|
-- LDC 09/26/90 REMOVED 'USE PACK' AFTER THE WITH SINCE IT ISN'T
|
-- LDC 09/26/90 REMOVED 'USE PACK' AFTER THE WITH SINCE IT ISN'T
|
-- NEEDED, ADDED CHECK FOR NULL AFTER ASSIGMENT TO
|
-- NEEDED, ADDED CHECK FOR NULL AFTER ASSIGMENT TO
|
-- NULL, ADDED CHECKS FOR OTHER RELATION OPERATORS,
|
-- NULL, ADDED CHECKS FOR OTHER RELATION OPERATORS,
|
-- CHANGED CHECK FOR 'ADDRESS TO A PROCEDURE CALL.
|
-- CHANGED CHECK FOR 'ADDRESS TO A PROCEDURE CALL.
|
-- LDC 10/13/90 CHANGED CHECK FOR 'SIZE TO ONLY CHECK FOR
|
-- LDC 10/13/90 CHANGED CHECK FOR 'SIZE TO ONLY CHECK FOR
|
-- AVAILABILITY. CHANGED CHECK FOR 'ADDRESS TO A
|
-- AVAILABILITY. CHANGED CHECK FOR 'ADDRESS TO A
|
-- MEMBERSHIP TEST.
|
-- MEMBERSHIP TEST.
|
-- PWN 01/31/95 REMOVED INCONSISTENCIES WITH ADA 9X.
|
-- PWN 01/31/95 REMOVED INCONSISTENCIES WITH ADA 9X.
|
|
|
WITH REPORT; USE REPORT;
|
WITH REPORT; USE REPORT;
|
WITH SYSTEM; USE SYSTEM;
|
WITH SYSTEM; USE SYSTEM;
|
|
|
PROCEDURE CC1225A IS
|
PROCEDURE CC1225A IS
|
|
|
TASK_STORAGE_SIZE : CONSTANT := $TASK_STORAGE_SIZE;
|
TASK_STORAGE_SIZE : CONSTANT := $TASK_STORAGE_SIZE;
|
|
|
TYPE AI IS ACCESS INTEGER;
|
TYPE AI IS ACCESS INTEGER;
|
|
|
TYPE ACCINTEGER IS ACCESS INTEGER;
|
TYPE ACCINTEGER IS ACCESS INTEGER;
|
|
|
TYPE REC IS RECORD
|
TYPE REC IS RECORD
|
COMP : INTEGER;
|
COMP : INTEGER;
|
END RECORD;
|
END RECORD;
|
|
|
TYPE DISCREC (DISC : INTEGER := 1) IS RECORD
|
TYPE DISCREC (DISC : INTEGER := 1) IS RECORD
|
COMPD : INTEGER;
|
COMPD : INTEGER;
|
END RECORD;
|
END RECORD;
|
|
|
TYPE AREC IS ACCESS REC;
|
TYPE AREC IS ACCESS REC;
|
|
|
TYPE ADISCREC IS ACCESS DISCREC;
|
TYPE ADISCREC IS ACCESS DISCREC;
|
|
|
TYPE ARR IS ARRAY(1..2,1..2) OF INTEGER;
|
TYPE ARR IS ARRAY(1..2,1..2) OF INTEGER;
|
|
|
TYPE ONEDIM IS ARRAY(1..10) OF INTEGER;
|
TYPE ONEDIM IS ARRAY(1..10) OF INTEGER;
|
|
|
TYPE AA IS ACCESS ARR;
|
TYPE AA IS ACCESS ARR;
|
|
|
TYPE AONEDIM IS ACCESS ONEDIM;
|
TYPE AONEDIM IS ACCESS ONEDIM;
|
|
|
TYPE ENUM IS (ONE, TWO, THREE);
|
TYPE ENUM IS (ONE, TWO, THREE);
|
|
|
TASK TYPE T IS
|
TASK TYPE T IS
|
ENTRY HERE(VAL : IN OUT INTEGER);
|
ENTRY HERE(VAL : IN OUT INTEGER);
|
END T;
|
END T;
|
|
|
TYPE ATASK IS ACCESS T;
|
TYPE ATASK IS ACCESS T;
|
|
|
TYPE ANOTHERTASK IS ACCESS T;
|
TYPE ANOTHERTASK IS ACCESS T;
|
FOR ANOTHERTASK'STORAGE_SIZE USE 2 * TASK_STORAGE_SIZE;
|
FOR ANOTHERTASK'STORAGE_SIZE USE 2 * TASK_STORAGE_SIZE;
|
|
|
TASK TYPE T1 IS
|
TASK TYPE T1 IS
|
ENTRY HERE1(ENUM)(VAL1 : IN OUT INTEGER);
|
ENTRY HERE1(ENUM)(VAL1 : IN OUT INTEGER);
|
END T1;
|
END T1;
|
|
|
TYPE ATASK1 IS ACCESS T1;
|
TYPE ATASK1 IS ACCESS T1;
|
|
|
TASK BODY T IS
|
TASK BODY T IS
|
BEGIN
|
BEGIN
|
ACCEPT HERE(VAL : IN OUT INTEGER) DO
|
ACCEPT HERE(VAL : IN OUT INTEGER) DO
|
VAL := VAL * 2;
|
VAL := VAL * 2;
|
END HERE;
|
END HERE;
|
END T;
|
END T;
|
|
|
TASK BODY T1 IS
|
TASK BODY T1 IS
|
BEGIN
|
BEGIN
|
SELECT
|
SELECT
|
ACCEPT HERE1(ONE)(VAL1 : IN OUT INTEGER) DO
|
ACCEPT HERE1(ONE)(VAL1 : IN OUT INTEGER) DO
|
VAL1 := VAL1 * 1;
|
VAL1 := VAL1 * 1;
|
END HERE1;
|
END HERE1;
|
OR
|
OR
|
ACCEPT HERE1(TWO)(VAL1 : IN OUT INTEGER) DO
|
ACCEPT HERE1(TWO)(VAL1 : IN OUT INTEGER) DO
|
VAL1 := VAL1 * 2;
|
VAL1 := VAL1 * 2;
|
END HERE1;
|
END HERE1;
|
OR
|
OR
|
ACCEPT HERE1(THREE)(VAL1 : IN OUT INTEGER) DO
|
ACCEPT HERE1(THREE)(VAL1 : IN OUT INTEGER) DO
|
VAL1 := VAL1 * 3;
|
VAL1 := VAL1 * 3;
|
END HERE1;
|
END HERE1;
|
END SELECT;
|
END SELECT;
|
END T1;
|
END T1;
|
|
|
GENERIC
|
GENERIC
|
TYPE FORM IS (<>);
|
TYPE FORM IS (<>);
|
TYPE ACCFORM IS ACCESS FORM;
|
TYPE ACCFORM IS ACCESS FORM;
|
TYPE ACC IS ACCESS INTEGER;
|
TYPE ACC IS ACCESS INTEGER;
|
TYPE ACCREC IS ACCESS REC;
|
TYPE ACCREC IS ACCESS REC;
|
TYPE ACCDISCREC IS ACCESS DISCREC;
|
TYPE ACCDISCREC IS ACCESS DISCREC;
|
TYPE ACCARR IS ACCESS ARR;
|
TYPE ACCARR IS ACCESS ARR;
|
TYPE ACCONE IS ACCESS ONEDIM;
|
TYPE ACCONE IS ACCESS ONEDIM;
|
TYPE ACCTASK IS ACCESS T;
|
TYPE ACCTASK IS ACCESS T;
|
TYPE ACCTASK1 IS ACCESS T1;
|
TYPE ACCTASK1 IS ACCESS T1;
|
TYPE ANOTHERTASK1 IS ACCESS T;
|
TYPE ANOTHERTASK1 IS ACCESS T;
|
PACKAGE P IS
|
PACKAGE P IS
|
END P;
|
END P;
|
|
|
PACKAGE BODY P IS
|
PACKAGE BODY P IS
|
AF : ACCFORM;
|
AF : ACCFORM;
|
TYPE DER_ACC IS NEW ACC;
|
TYPE DER_ACC IS NEW ACC;
|
A, B : ACC;
|
A, B : ACC;
|
DERA : DER_ACC;
|
DERA : DER_ACC;
|
R : ACCREC;
|
R : ACCREC;
|
DR : ACCDISCREC;
|
DR : ACCDISCREC;
|
C : ACCARR;
|
C : ACCARR;
|
D, E : ACCONE;
|
D, E : ACCONE;
|
F : ACCTASK;
|
F : ACCTASK;
|
G : ACCTASK1;
|
G : ACCTASK1;
|
INT : INTEGER := 5;
|
INT : INTEGER := 5;
|
|
|
BEGIN
|
BEGIN
|
TEST ("CC1225A", "CHECK, FOR A FORMAL ACCESS TYPE, THAT " &
|
TEST ("CC1225A", "CHECK, FOR A FORMAL ACCESS TYPE, THAT " &
|
"ALL ALLOWABLE OPERATIONS ARE IMPLICITLY " &
|
"ALL ALLOWABLE OPERATIONS ARE IMPLICITLY " &
|
"DECLARED");
|
"DECLARED");
|
|
|
IF AF'ADDRESS NOT IN ADDRESS THEN
|
IF AF'ADDRESS NOT IN ADDRESS THEN
|
FAILED ("IMPROPER RESULT FROM AF'ADDRESS TEST");
|
FAILED ("IMPROPER RESULT FROM AF'ADDRESS TEST");
|
END IF;
|
END IF;
|
|
|
DECLARE
|
DECLARE
|
AF_SIZE : INTEGER := ACCFORM'SIZE;
|
AF_SIZE : INTEGER := ACCFORM'SIZE;
|
BEGIN
|
BEGIN
|
IF AF_SIZE NOT IN INTEGER THEN
|
IF AF_SIZE NOT IN INTEGER THEN
|
FAILED ("IMPROPER RESULT FROM AF'SIZE");
|
FAILED ("IMPROPER RESULT FROM AF'SIZE");
|
END IF;
|
END IF;
|
END;
|
END;
|
|
|
IF ANOTHERTASK1'STORAGE_SIZE < TASK_STORAGE_SIZE THEN
|
IF ANOTHERTASK1'STORAGE_SIZE < TASK_STORAGE_SIZE THEN
|
FAILED ("IMPROPER VALUE FOR ANOTHERTASK1'STORAGE_SIZE");
|
FAILED ("IMPROPER VALUE FOR ANOTHERTASK1'STORAGE_SIZE");
|
END IF;
|
END IF;
|
|
|
B := NEW INTEGER'(25);
|
B := NEW INTEGER'(25);
|
|
|
A := B;
|
A := B;
|
|
|
IF A.ALL /= 25 THEN
|
IF A.ALL /= 25 THEN
|
FAILED ("IMPROPER VALUE FOR ASSIGNMENT OF VARIABLE " &
|
FAILED ("IMPROPER VALUE FOR ASSIGNMENT OF VARIABLE " &
|
"OF A FORMAL ACCESS TYPE FROM ANOTHER " &
|
"OF A FORMAL ACCESS TYPE FROM ANOTHER " &
|
"VARIABLE OF A FORMAL ACCESS TYPE");
|
"VARIABLE OF A FORMAL ACCESS TYPE");
|
END IF;
|
END IF;
|
|
|
A := NEW INTEGER'(10);
|
A := NEW INTEGER'(10);
|
|
|
IF A.ALL /= 10 THEN
|
IF A.ALL /= 10 THEN
|
FAILED ("IMPROPER VALUE FOR VARIABLE OF FORMAL ACCESS " &
|
FAILED ("IMPROPER VALUE FOR VARIABLE OF FORMAL ACCESS " &
|
"TYPE");
|
"TYPE");
|
END IF;
|
END IF;
|
|
|
IF A NOT IN ACC THEN
|
IF A NOT IN ACC THEN
|
FAILED ("IMPROPER RESULT FROM MEMBERSHIP TEST");
|
FAILED ("IMPROPER RESULT FROM MEMBERSHIP TEST");
|
END IF;
|
END IF;
|
|
|
B := ACC'(A);
|
B := ACC'(A);
|
|
|
IF B.ALL /= 10 THEN
|
IF B.ALL /= 10 THEN
|
FAILED ("IMPROPER VALUE FROM QUALIFICATION");
|
FAILED ("IMPROPER VALUE FROM QUALIFICATION");
|
END IF;
|
END IF;
|
|
|
DERA := NEW INTEGER'(10);
|
DERA := NEW INTEGER'(10);
|
A := ACC(DERA);
|
A := ACC(DERA);
|
|
|
IF A.ALL /= IDENT_INT(10) THEN
|
IF A.ALL /= IDENT_INT(10) THEN
|
FAILED ("IMPROPER VALUE FROM EXPLICIT CONVERSION");
|
FAILED ("IMPROPER VALUE FROM EXPLICIT CONVERSION");
|
END IF;
|
END IF;
|
|
|
IF A.ALL > IDENT_INT(10) THEN
|
IF A.ALL > IDENT_INT(10) THEN
|
FAILED ("IMPROPER VALUE USED IN LESS THAN");
|
FAILED ("IMPROPER VALUE USED IN LESS THAN");
|
END IF;
|
END IF;
|
|
|
IF A.ALL < IDENT_INT(10) THEN
|
IF A.ALL < IDENT_INT(10) THEN
|
FAILED ("IMPROPER VALUE USED IN GREATER THAN");
|
FAILED ("IMPROPER VALUE USED IN GREATER THAN");
|
END IF;
|
END IF;
|
|
|
IF A.ALL >= IDENT_INT(11) THEN
|
IF A.ALL >= IDENT_INT(11) THEN
|
FAILED ("IMPROPER VALUE USED IN LESS THAN OR EQUAL");
|
FAILED ("IMPROPER VALUE USED IN LESS THAN OR EQUAL");
|
END IF;
|
END IF;
|
|
|
IF A.ALL <= IDENT_INT(9) THEN
|
IF A.ALL <= IDENT_INT(9) THEN
|
FAILED ("IMPROPER VALUE USED IN GREATER THAN OR EQUAL");
|
FAILED ("IMPROPER VALUE USED IN GREATER THAN OR EQUAL");
|
END IF;
|
END IF;
|
|
|
IF NOT (A.ALL + A.ALL = IDENT_INT(20)) THEN
|
IF NOT (A.ALL + A.ALL = IDENT_INT(20)) THEN
|
FAILED ("IMPROPER VALUE FROM ADDITION");
|
FAILED ("IMPROPER VALUE FROM ADDITION");
|
END IF;
|
END IF;
|
|
|
IF NOT (A.ALL - IDENT_INT(2) = IDENT_INT(8)) THEN
|
IF NOT (A.ALL - IDENT_INT(2) = IDENT_INT(8)) THEN
|
FAILED ("IMPROPER VALUE FROM SUBTRACTION");
|
FAILED ("IMPROPER VALUE FROM SUBTRACTION");
|
END IF;
|
END IF;
|
|
|
IF NOT (A.ALL * IDENT_INT(3) = IDENT_INT(30)) THEN
|
IF NOT (A.ALL * IDENT_INT(3) = IDENT_INT(30)) THEN
|
FAILED ("IMPROPER VALUE FROM MULTIPLICATION");
|
FAILED ("IMPROPER VALUE FROM MULTIPLICATION");
|
END IF;
|
END IF;
|
|
|
IF NOT (A.ALL / IDENT_INT(3) = IDENT_INT(3)) THEN
|
IF NOT (A.ALL / IDENT_INT(3) = IDENT_INT(3)) THEN
|
FAILED ("IMPROPER VALUE FROM DIVISION");
|
FAILED ("IMPROPER VALUE FROM DIVISION");
|
END IF;
|
END IF;
|
|
|
IF NOT (A.ALL MOD IDENT_INT(3) = IDENT_INT(1)) THEN
|
IF NOT (A.ALL MOD IDENT_INT(3) = IDENT_INT(1)) THEN
|
FAILED ("IMPROPER VALUE FROM MODULO");
|
FAILED ("IMPROPER VALUE FROM MODULO");
|
END IF;
|
END IF;
|
|
|
IF NOT (A.ALL REM IDENT_INT(7) = IDENT_INT(3)) THEN
|
IF NOT (A.ALL REM IDENT_INT(7) = IDENT_INT(3)) THEN
|
FAILED ("IMPROPER VALUE FROM REMAINDER");
|
FAILED ("IMPROPER VALUE FROM REMAINDER");
|
END IF;
|
END IF;
|
|
|
IF NOT (A.ALL ** IDENT_INT(2) = IDENT_INT(100)) THEN
|
IF NOT (A.ALL ** IDENT_INT(2) = IDENT_INT(100)) THEN
|
FAILED ("IMPROPER VALUE FROM EXPONENTIATION");
|
FAILED ("IMPROPER VALUE FROM EXPONENTIATION");
|
END IF;
|
END IF;
|
|
|
IF NOT (+A.ALL = IDENT_INT(10)) THEN
|
IF NOT (+A.ALL = IDENT_INT(10)) THEN
|
FAILED ("IMPROPER VALUE FROM IDENTITY");
|
FAILED ("IMPROPER VALUE FROM IDENTITY");
|
END IF;
|
END IF;
|
|
|
IF NOT (-A.ALL = IDENT_INT(-10)) THEN
|
IF NOT (-A.ALL = IDENT_INT(-10)) THEN
|
FAILED ("IMPROPER VALUE FROM NEGATION");
|
FAILED ("IMPROPER VALUE FROM NEGATION");
|
END IF;
|
END IF;
|
|
|
A := NULL;
|
A := NULL;
|
|
|
IF A /= NULL THEN
|
IF A /= NULL THEN
|
FAILED ("IMPROPER VALUE FROM ACCESS SET TO NULL");
|
FAILED ("IMPROPER VALUE FROM ACCESS SET TO NULL");
|
END IF;
|
END IF;
|
|
|
IF A'ADDRESS NOT IN ADDRESS THEN
|
IF A'ADDRESS NOT IN ADDRESS THEN
|
FAILED ("IMPROPER RESULT FROM A'ADDRESS TEST");
|
FAILED ("IMPROPER RESULT FROM A'ADDRESS TEST");
|
END IF;
|
END IF;
|
|
|
|
|
DECLARE
|
DECLARE
|
ACC_SIZE : INTEGER := ACC'SIZE;
|
ACC_SIZE : INTEGER := ACC'SIZE;
|
BEGIN
|
BEGIN
|
IF ACC_SIZE NOT IN INTEGER THEN
|
IF ACC_SIZE NOT IN INTEGER THEN
|
FAILED ("IMPROPER RESULT FROM ACC'SIZE");
|
FAILED ("IMPROPER RESULT FROM ACC'SIZE");
|
END IF;
|
END IF;
|
END;
|
END;
|
|
|
R := NEW REC'(COMP => 5);
|
R := NEW REC'(COMP => 5);
|
|
|
IF NOT EQUAL(R.COMP,5) THEN
|
IF NOT EQUAL(R.COMP,5) THEN
|
FAILED ("IMPROPER VALUE FOR RECORD COMPONENT");
|
FAILED ("IMPROPER VALUE FOR RECORD COMPONENT");
|
END IF;
|
END IF;
|
|
|
DR := NEW DISCREC'(DISC => 1, COMPD => 5);
|
DR := NEW DISCREC'(DISC => 1, COMPD => 5);
|
|
|
IF NOT EQUAL(DR.DISC,1) OR NOT EQUAL(DR.COMPD,5) THEN
|
IF NOT EQUAL(DR.DISC,1) OR NOT EQUAL(DR.COMPD,5) THEN
|
FAILED ("IMPROPER VALUES FOR DISCRIMINATED RECORD " &
|
FAILED ("IMPROPER VALUES FOR DISCRIMINATED RECORD " &
|
"COMPONENTS");
|
"COMPONENTS");
|
END IF;
|
END IF;
|
|
|
C := NEW ARR'(1 => (1,2), 2 => (3,4));
|
C := NEW ARR'(1 => (1,2), 2 => (3,4));
|
|
|
IF C(1,1) /= 1 OR C(1,2) /= 2 OR C(2,1) /= 3 OR C(2,2) /= 4
|
IF C(1,1) /= 1 OR C(1,2) /= 2 OR C(2,1) /= 3 OR C(2,2) /= 4
|
THEN FAILED ("IMPROPER ARRAY COMPONENT VALUES");
|
THEN FAILED ("IMPROPER ARRAY COMPONENT VALUES");
|
END IF;
|
END IF;
|
|
|
D := NEW ONEDIM'(1,2,3,4,5,6,7,8,9,10);
|
D := NEW ONEDIM'(1,2,3,4,5,6,7,8,9,10);
|
E := NEW ONEDIM'(10,9,8,7,6,5,4,3,2,1);
|
E := NEW ONEDIM'(10,9,8,7,6,5,4,3,2,1);
|
|
|
D(1..5) := E(1..5);
|
D(1..5) := E(1..5);
|
|
|
IF D(1) /= 10 OR D(2) /= 9 OR D(3) /= 8
|
IF D(1) /= 10 OR D(2) /= 9 OR D(3) /= 8
|
OR D(4) /= 7 OR D(5) /= 6 THEN
|
OR D(4) /= 7 OR D(5) /= 6 THEN
|
FAILED ("IMPROPER RESULTS FROM SLICE ASSIGNMENT");
|
FAILED ("IMPROPER RESULTS FROM SLICE ASSIGNMENT");
|
END IF;
|
END IF;
|
|
|
IF C'FIRST /= 1 OR C'FIRST(2) /= 1 THEN
|
IF C'FIRST /= 1 OR C'FIRST(2) /= 1 THEN
|
FAILED ("IMPROPER LOWER BOUNDS FOR CONSTRAINED ARRAY");
|
FAILED ("IMPROPER LOWER BOUNDS FOR CONSTRAINED ARRAY");
|
END IF;
|
END IF;
|
|
|
IF C'LAST /= 2 OR C'LAST(2) /= 2 THEN
|
IF C'LAST /= 2 OR C'LAST(2) /= 2 THEN
|
FAILED ("IMPROPER UPPER BOUNDS FOR CONSTRAINED ARRAY");
|
FAILED ("IMPROPER UPPER BOUNDS FOR CONSTRAINED ARRAY");
|
END IF;
|
END IF;
|
|
|
IF 1 NOT IN C'RANGE THEN
|
IF 1 NOT IN C'RANGE THEN
|
FAILED ("IMPROPER RANGE FOR CONSTRAINED ARRAY - 1");
|
FAILED ("IMPROPER RANGE FOR CONSTRAINED ARRAY - 1");
|
END IF;
|
END IF;
|
|
|
IF 1 NOT IN C'RANGE(2) THEN
|
IF 1 NOT IN C'RANGE(2) THEN
|
FAILED ("IMPROPER RANGE FOR CONSTRAINED ARRAY - 2");
|
FAILED ("IMPROPER RANGE FOR CONSTRAINED ARRAY - 2");
|
END IF;
|
END IF;
|
|
|
IF C'LENGTH /= 2 THEN
|
IF C'LENGTH /= 2 THEN
|
FAILED ("IMPROPER NUMBER OF VALUES FOR CONSTRAINED " &
|
FAILED ("IMPROPER NUMBER OF VALUES FOR CONSTRAINED " &
|
"ARRAY - 1");
|
"ARRAY - 1");
|
END IF;
|
END IF;
|
|
|
IF C'LENGTH(2) /= 2 THEN
|
IF C'LENGTH(2) /= 2 THEN
|
FAILED ("IMPROPER NUMBER OF VALUES FOR CONSTRAINED " &
|
FAILED ("IMPROPER NUMBER OF VALUES FOR CONSTRAINED " &
|
"ARRAY - 2");
|
"ARRAY - 2");
|
END IF;
|
END IF;
|
|
|
F := NEW T;
|
F := NEW T;
|
|
|
F.HERE(INT);
|
F.HERE(INT);
|
|
|
IF NOT EQUAL(INT,IDENT_INT(10)) THEN
|
IF NOT EQUAL(INT,IDENT_INT(10)) THEN
|
FAILED ("IMPROPER RESULTS FROM ENTRY SELECTION");
|
FAILED ("IMPROPER RESULTS FROM ENTRY SELECTION");
|
END IF;
|
END IF;
|
|
|
G := NEW T1;
|
G := NEW T1;
|
|
|
G.HERE1(TWO)(INT);
|
G.HERE1(TWO)(INT);
|
|
|
IF NOT EQUAL(INT,IDENT_INT(20)) THEN
|
IF NOT EQUAL(INT,IDENT_INT(20)) THEN
|
FAILED ("IMPROPER RESULTS FROM FAMILY ENTRY SELECTION");
|
FAILED ("IMPROPER RESULTS FROM FAMILY ENTRY SELECTION");
|
END IF;
|
END IF;
|
|
|
RESULT;
|
RESULT;
|
END P;
|
END P;
|
|
|
PACKAGE PACK IS NEW P(INTEGER,ACCINTEGER,AI,AREC,ADISCREC,
|
PACKAGE PACK IS NEW P(INTEGER,ACCINTEGER,AI,AREC,ADISCREC,
|
AA,AONEDIM,ATASK,ATASK1,ANOTHERTASK);
|
AA,AONEDIM,ATASK,ATASK1,ANOTHERTASK);
|
|
|
BEGIN
|
BEGIN
|
NULL;
|
NULL;
|
END CC1225A;
|
END CC1225A;
|
|
|