WITH REPORT;
PROCEDURE C64104B IS
USE REPORT;
SUBTYPE INT IS INTEGER RANGE 0..10;
TYPE REC (N : INT := 0) IS
RECORD
A : STRING (1..N);
END RECORD;
SUBTYPE SREC IS REC(N=>3);
PROCEDURE P1 (R : IN SREC) IS
BEGIN
FAILED ("EXCEPTION NOT RAISED ON CALL TO P1");
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED IN PROCEDURE P1");
END P1;
PROCEDURE P2 (R : IN OUT SREC) IS
BEGIN
FAILED ("EXCEPTION NOT RAISED ON CALL TO P2");
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED IN PROCEDURE P2");
END P2;
PROCEDURE P3 (R : OUT SREC) IS
BEGIN
FAILED ("EXCEPTION NOT RAISED ON CALL TO P3");
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED IN PROCEDURE P3");
END P3;
BEGIN
TEST ("C64104B", "CHECK RAISING OF CONSTRAINT_ERROR FOR " &
"PARAMETERS OF RECORD TYPES");
BEGIN P1 ((2,"AA"));
FAILED ("EXCEPTION NOT RAISED IN SUBTEST (A)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED IN SUBTEST (A)");
END;
BEGIN P1 ((IDENT_INT(2), "AA"));
FAILED ("EXCEPTION NOT RAISED IN SUBTEST (B)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED IN SUBTEST (B)");
END;
DECLARE R : REC := (IDENT_INT(2), "AA");
BEGIN P1 (R);
FAILED ("EXCEPTION NOT RAISED IN SUBTEST (C)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED IN SUBTEST (C)");
END;
DECLARE R : REC := (IDENT_INT(2), "AA");
BEGIN P2 (R);
FAILED ("EXCEPTION NOT RAISED IN SUBTEST (D)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED IN SUBTEST (D)");
END;
DECLARE R : REC;
BEGIN P3 (R);
FAILED ("EXCEPTION NOT RAISED IN SUBTEST (E)");
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED IN SUBTEST (E)");
END;
RESULT;
END C64104B;