WITH REPORT; USE REPORT;
PROCEDURE CC3126A IS
BEGIN
TEST ("CC3126A","GENERIC ACTUAL PARAMETER MUST HAVE THE SAME "&
"NUMBER OF COMPONENTS (PER DIMENSION) AS THE "&
"GENERIC FORMAL PARMETER");
BEGIN
DECLARE
TYPE ARRY1 IS ARRAY (INTEGER RANGE <>) OF INTEGER;
SUBTYPE ARR IS ARRY1 (1 .. 10);
GENERIC
GARR : IN ARR;
PACKAGE P IS
NARR : ARR := GARR;
END P;
BEGIN
BEGIN
DECLARE
X : ARRY1 (2 .. 11) := (2 .. 11 => 0);
PACKAGE Q IS NEW P(X);
BEGIN
Q.NARR(2) := 1;
END;
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED 1");
END;
BEGIN
DECLARE
S : ARRY1 (1 .. 11) := (1 .. 11 => 0);
PACKAGE R IS NEW P(S);
BEGIN
FAILED ("EXCEPTION NOT RAISED 2");
R.NARR(1) := IDENT_INT(R.NARR(1));
END;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED 2");
END;
BEGIN
DECLARE
G : ARRY1 (1 .. 9) := (1 .. 9 => 0);
PACKAGE K IS NEW P(G);
BEGIN
FAILED ("EXCEPTION NOT RAISED 3");
IF EQUAL(3,3) THEN
K.NARR(1) := IDENT_INT(K.NARR(1));
END IF;
END;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED 3");
END;
BEGIN
DECLARE
S : ARRY1 (1 .. 11) := (1 .. 11 => 0);
PACKAGE F IS NEW P(S(2 .. 11));
BEGIN
F.NARR(2) := IDENT_INT(F.NARR(2));
END;
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED 4");
END;
END;
DECLARE
SUBTYPE STR IS STRING(1 .. 20);
GENERIC
GVAR : IN STR;
PACKAGE M IS
NVAR : STR := GVAR;
END M;
BEGIN
BEGIN
DECLARE
L : STRING (2 .. 15);
PACKAGE U IS NEW M(L);
BEGIN
FAILED ("EXCEPTION NOT RAISED 5");
U.NVAR(2) := IDENT_CHAR(U.NVAR(2));
END;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED 5");
END;
BEGIN
DECLARE
H : STRING (1 .. 20) := (OTHERS => 'R');
PACKAGE J IS NEW M(H);
BEGIN
IF EQUAL(3,3) THEN
J.NVAR(2) := IDENT_CHAR(J.NVAR(2));
END IF;
END;
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED 6");
END;
EXCEPTION
WHEN OTHERS =>
FAILED ("UNEXPECTED ERROR RAISED STRINGS");
END;
DECLARE
TYPE NARRY IS ARRAY (INTEGER RANGE <>) OF INTEGER;
SUBTYPE SNARRY IS NARRY (2 .. 0);
GENERIC
RD : IN SNARRY;
PACKAGE JA IS
CD : SNARRY := RD;
END JA;
BEGIN
BEGIN
DECLARE
AD : NARRY(1 .. 0);
PACKAGE PA IS NEW JA(AD);
BEGIN
IF NOT EQUAL(0,PA.CD'LAST) THEN
FAILED ("PARAMETER ATTRIBUTE INCORRECT");
END IF;
END;
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED 7");
END;
EXCEPTION
WHEN OTHERS =>
FAILED ("UNEXPECTED EXCEPTION RAISED FOR ARRAYS "&
"WITH NULL RANGES");
END;
END;
RESULT;
END CC3126A;