WITH REPORT; USE REPORT;
PROCEDURE C36172B IS
SUBTYPE INT_10 IS INTEGER RANGE 1..10;
TYPE ARR2 IS ARRAY (INT_10 RANGE <>, INT_10 RANGE <>) OF INTEGER;
BEGIN
TEST ("C36172B", "CHECK THAT CONSTRAINT_ERROR IS RAISED FOR A " &
"NON-NULL DIMENSION OF A NULL MULTIDIMENSIONAL " &
"INDEX CONSTRAINT IF A BOUND LIES OUTSIDE THE " &
"INDEX SUBTYPE");
BEGIN
DECLARE
V : ARR2 (6..4, 9..11);
BEGIN
FAILED ("EXCEPTION NOT RAISED WHEN NON-NULL RANGE OF " &
"NULL INDEX CONSTRAINT HAS A BOUND OUTSIDE " &
"THE INDEX SUBTYPE (13) " & INTEGER'IMAGE(V'FIRST));
END;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("UNEXPECTED EXCEPTION RAISED - 13");
END;
BEGIN
DECLARE
V : ARR2 (0..3, 8..7);
BEGIN
FAILED ("EXCEPTION NOT RAISED WHEN NON-NULL RANGE OF " &
"NULL INDEX CONSTRAINT HAS A BOUND OUTSIDE " &
"THE INDEX SUBTYPE (14) " & INTEGER'IMAGE(V'FIRST));
END;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("UNEXPECTED EXCEPTION RAISED - 14");
END;
BEGIN
DECLARE
V : ARR2 (6..4, IDENT_INT(0)..2);
BEGIN
FAILED ("EXCEPTION NOT RAISED WHEN NON-NULL RANGE OF " &
"NULL INDEX CONSTRAINT HAS A BOUND OUTSIDE " &
"THE INDEX SUBTYPE (15) " & INTEGER'IMAGE(V'FIRST));
END;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("UNEXPECTED EXCEPTION RAISED - 15");
END;
BEGIN
DECLARE
V : ARR2 (9..IDENT_INT(11), 6..4);
BEGIN
FAILED ("EXCEPTION NOT RAISED WHEN NON-NULL RANGE OF " &
"NULL INDEX CONSTRAINT HAS A BOUND OUTSIDE " &
"THE INDEX SUBTYPE (16) " & INTEGER'IMAGE(V'FIRST));
END;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("UNEXPECTED EXCEPTION RAISED - 16");
END;
BEGIN
DECLARE
V : ARR2 (6..IDENT_INT(4), 9..IDENT_INT(11));
BEGIN
FAILED ("EXCEPTION NOT RAISED WHEN NON-NULL RANGE OF " &
"NULL INDEX CONSTRAINT HAS A BOUND OUTSIDE " &
"THE INDEX SUBTYPE (17) " & INTEGER'IMAGE(V'FIRST));
END;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("UNEXPECTED EXCEPTION RAISED - 17");
END;
BEGIN
DECLARE
V : ARR2 (IDENT_INT(-1)..2, IDENT_INT(6)..4);
BEGIN
FAILED ("EXCEPTION NOT RAISED WHEN NON-NULL RANGE OF " &
"NULL INDEX CONSTRAINT HAS A BOUND OUTSIDE " &
"THE INDEX SUBTYPE (18) " & INTEGER'IMAGE(V'FIRST));
END;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("UNEXPECTED EXCEPTION RAISED - 18");
END;
BEGIN
DECLARE
V : ARR2 (6..-1, 11..9);
BEGIN
IF NOT EQUAL (V'FIRST, V'FIRST) THEN
FAILED ("IMPOSSIBLE");
END IF;
END;
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED FOR NULL CONSTRAINT - 19");
END;
BEGIN
DECLARE
V : ARR2 (IDENT_INT(11)..9, 6..IDENT_INT(0));
BEGIN
IF NOT EQUAL (V'FIRST, V'FIRST) THEN
FAILED ("IMPOSSIBLE");
END IF;
END;
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED FOR NULL CONSTRAINT - 20");
END;
RESULT;
END C36172B;