WITH CALENDAR; USE CALENDAR;
WITH REPORT; USE REPORT;
PROCEDURE C96004A IS
BEGIN
TEST("C96004A", "CHECK THAT PRE-DEFINED SUBTYPES FROM THE " &
"CALENDAR PACKAGE HAVE CORRECT RANGE CONSTRAINTS");
DECLARE
YR : YEAR_NUMBER;
BEGIN
BEGIN
YR := 1900;
FAILED ("EXCEPTION NOT RAISED - (A)1");
IF NOT EQUAL (YR, YR) THEN
COMMENT ("NO EXCEPTION RAISED");
END IF;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED - (A)1");
END;
BEGIN
YR := 84;
FAILED ("EXCEPTION NOT RAISED - (A)2");
IF NOT EQUAL (YR, YR) THEN
COMMENT ("NO EXCEPTION RAISED");
END IF;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED - (A)2");
END;
BEGIN
YR := 2099;
IF NOT EQUAL (YR, YR) THEN
COMMENT ("NO EXCEPTION RAISED");
END IF;
EXCEPTION
WHEN OTHERS =>
FAILED ("OK CASE RAISED EXCEPTION ON 2099 - (A)");
END;
BEGIN
YR := IDENT_INT(2100);
FAILED ("EXCEPTION NOT RAISED - (A)3");
IF NOT EQUAL (YR, YR) THEN
COMMENT ("NO EXCEPTION RAISED");
END IF;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED - (A)3");
END;
END;
DECLARE
MO : MONTH_NUMBER;
BEGIN
BEGIN
MO := IDENT_INT(0);
FAILED ("EXCEPTION NOT RAISED - (B)1");
IF NOT EQUAL (MO, MO) THEN
COMMENT ("NO EXCEPTION RAISED");
END IF;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED - (B)1");
END;
BEGIN
MO := 12;
IF NOT EQUAL (MO, MO) THEN
COMMENT ("NO EXCEPTION RAISED");
END IF;
EXCEPTION
WHEN OTHERS =>
FAILED ("OK CASE RAISED EXCEPTION ON 12 - (B)");
END;
BEGIN
MO := 13;
FAILED ("EXCEPTION NOT RAISED - (B)2");
IF NOT EQUAL (MO, MO) THEN
COMMENT ("NO EXCEPTION RAISED");
END IF;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED - (B)2");
END;
END;
DECLARE
DY : DAY_NUMBER;
BEGIN
BEGIN
DY := 0;
FAILED ("EXCEPTION NOT RAISED - (C)1");
IF NOT EQUAL (DY, DY) THEN
COMMENT ("NO EXCEPTION RAISED");
END IF;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED - (C)1");
END;
BEGIN
DY := IDENT_INT(32);
FAILED ("EXCEPTION NOT RAISED - (C)2");
IF NOT EQUAL (DY, DY) THEN
COMMENT ("NO EXCEPTION RAISED");
END IF;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED - (C)2");
END;
END;
DECLARE
SEGMENT : DAY_DURATION;
FUNCTION CHECK_OK (X : DAY_DURATION) RETURN BOOLEAN IS
I : INTEGER := INTEGER (X);
BEGIN
RETURN EQUAL (I,I);
END CHECK_OK;
BEGIN
BEGIN
SEGMENT := 86_400.0;
IF CHECK_OK (SEGMENT - 86_000.0) THEN
COMMENT ("NO EXCEPTION RAISED (D1)");
ELSE
COMMENT ("NO EXCEPTION RAISED (D2)");
END IF;
EXCEPTION
WHEN OTHERS =>
FAILED ("OK CASE RAISED EXCEPTION ON 86_400 - (D)");
END;
BEGIN
SEGMENT := -4.0;
FAILED ("EXCEPTION NOT RAISED - (D)1");
IF NOT EQUAL (INTEGER(SEGMENT), INTEGER(SEGMENT)) THEN
COMMENT ("NO EXCEPTION RAISED (D3)");
END IF;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED - (D)1");
END;
BEGIN
SEGMENT := 86_401.00;
IF CHECK_OK (SEGMENT - 86_000.0) THEN
FAILED ("NO EXCEPTION RAISED (D4)");
ELSE
FAILED ("NO EXCEPTION RAISED (D5)");
END IF;
EXCEPTION
WHEN CONSTRAINT_ERROR =>
NULL;
WHEN OTHERS =>
FAILED ("WRONG EXCEPTION RAISED - (D)2");
END;
END;
RESULT;
END C96004A;