-- C36104B.ADA
|
-- C36104B.ADA
|
|
|
-- 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.
|
--*
|
--*
|
-- CHECK THAT CONSTRAINT_ERROR IS RAISED OR NOT, AS APPROPRIATE,
|
-- CHECK THAT CONSTRAINT_ERROR IS RAISED OR NOT, AS APPROPRIATE,
|
-- DURING DISCRETE_RANGE ELABORATIONS/EVALUATIONS IN LOOPS,
|
-- DURING DISCRETE_RANGE ELABORATIONS/EVALUATIONS IN LOOPS,
|
-- ARRAY_TYPE_DEFINITIONS, ARRAY AGGREGATES, SLICES,
|
-- ARRAY_TYPE_DEFINITIONS, ARRAY AGGREGATES, SLICES,
|
-- AND INDEX CONSTRAINTS IN OBJECT AND TYPE DECLARATIONS, WHERE
|
-- AND INDEX CONSTRAINTS IN OBJECT AND TYPE DECLARATIONS, WHERE
|
-- AN EXPLICIT (SUB)TYPE IS INCLUDED IN EACH DISCRETE_RANGE.
|
-- AN EXPLICIT (SUB)TYPE IS INCLUDED IN EACH DISCRETE_RANGE.
|
-- MEMBERSHIP OPERATORS ARE CHECKED HERE, ALSO, TO ENSURE THAT
|
-- MEMBERSHIP OPERATORS ARE CHECKED HERE, ALSO, TO ENSURE THAT
|
-- EXCEPTIONS ARE NOT RAISED FOR NULL RANGES.
|
-- EXCEPTIONS ARE NOT RAISED FOR NULL RANGES.
|
-- ONLY DYNAMIC CASES ARE CHECKED HERE.
|
-- ONLY DYNAMIC CASES ARE CHECKED HERE.
|
|
|
-- DAT 2/3/81
|
-- DAT 2/3/81
|
-- JRK 2/25/81
|
-- JRK 2/25/81
|
-- L.BROWN 7/15/86 1) ADDED ACCESS TYPES.
|
-- L.BROWN 7/15/86 1) ADDED ACCESS TYPES.
|
-- 2) DELETED "NULL INDEX RANGE, CONSTRAINT_ERROR
|
-- 2) DELETED "NULL INDEX RANGE, CONSTRAINT_ERROR
|
-- RAISED" SECTION.
|
-- RAISED" SECTION.
|
-- 3) MADE USE OF DYNAMIC-RESULT FUNCTIONS.
|
-- 3) MADE USE OF DYNAMIC-RESULT FUNCTIONS.
|
-- 4) DELETED ALL REFERENCES TO CASE STATEMENT CHOICES
|
-- 4) DELETED ALL REFERENCES TO CASE STATEMENT CHOICES
|
-- AND VARIANT PART CHOICES IN THE ABOVE COMMENT.
|
-- AND VARIANT PART CHOICES IN THE ABOVE COMMENT.
|
-- EDS 7/16/98 AVOID OPTIMIZATION
|
-- EDS 7/16/98 AVOID OPTIMIZATION
|
|
|
WITH REPORT;
|
WITH REPORT;
|
PROCEDURE C36104B IS
|
PROCEDURE C36104B IS
|
|
|
USE REPORT;
|
USE REPORT;
|
|
|
TYPE WEEK IS (SSUN, SMON, STUE, SWED, STHU, SFRI, SSAT);
|
TYPE WEEK IS (SSUN, SMON, STUE, SWED, STHU, SFRI, SSAT);
|
SUN : WEEK := WEEK'VAL(IDENT_INT(0));
|
SUN : WEEK := WEEK'VAL(IDENT_INT(0));
|
MON : WEEK := WEEK'VAL(IDENT_INT(1));
|
MON : WEEK := WEEK'VAL(IDENT_INT(1));
|
TUE : WEEK := WEEK'VAL(IDENT_INT(2));
|
TUE : WEEK := WEEK'VAL(IDENT_INT(2));
|
WED : WEEK := WEEK'VAL(IDENT_INT(3));
|
WED : WEEK := WEEK'VAL(IDENT_INT(3));
|
THU : WEEK := WEEK'VAL(IDENT_INT(4));
|
THU : WEEK := WEEK'VAL(IDENT_INT(4));
|
FRI : WEEK := WEEK'VAL(IDENT_INT(5));
|
FRI : WEEK := WEEK'VAL(IDENT_INT(5));
|
SAT : WEEK := WEEK'VAL(IDENT_INT(6));
|
SAT : WEEK := WEEK'VAL(IDENT_INT(6));
|
TYPE WEEK_ARRAY IS ARRAY (WEEK RANGE <>) OF WEEK;
|
TYPE WEEK_ARRAY IS ARRAY (WEEK RANGE <>) OF WEEK;
|
SUBTYPE WORK_WEEK IS WEEK RANGE MON .. FRI;
|
SUBTYPE WORK_WEEK IS WEEK RANGE MON .. FRI;
|
SUBTYPE MID_WEEK IS WORK_WEEK RANGE TUE .. THU;
|
SUBTYPE MID_WEEK IS WORK_WEEK RANGE TUE .. THU;
|
|
|
TYPE INT_10 IS NEW INTEGER RANGE -10 .. 10;
|
TYPE INT_10 IS NEW INTEGER RANGE -10 .. 10;
|
TYPE I_10 IS NEW INT_10;
|
TYPE I_10 IS NEW INT_10;
|
SUBTYPE I_5 IS I_10 RANGE I_10(IDENT_INT(-5)) ..
|
SUBTYPE I_5 IS I_10 RANGE I_10(IDENT_INT(-5)) ..
|
I_10(IDENT_INT(5));
|
I_10(IDENT_INT(5));
|
TYPE I_5_ARRAY IS ARRAY (I_5 RANGE <>) OF I_5;
|
TYPE I_5_ARRAY IS ARRAY (I_5 RANGE <>) OF I_5;
|
|
|
FUNCTION F(DAY : WEEK) RETURN WEEK IS
|
FUNCTION F(DAY : WEEK) RETURN WEEK IS
|
BEGIN
|
BEGIN
|
RETURN DAY;
|
RETURN DAY;
|
END;
|
END;
|
|
|
BEGIN
|
BEGIN
|
TEST ("C36104B", "CONSTRAINT_ERROR IS RAISED OR NOT IN DYNAMIC "
|
TEST ("C36104B", "CONSTRAINT_ERROR IS RAISED OR NOT IN DYNAMIC "
|
& "DISCRETE_RANGES WITH EXPLICIT TYPE_MARKS");
|
& "DISCRETE_RANGES WITH EXPLICIT TYPE_MARKS");
|
|
|
-- NON-NULL RANGES, CONSTRAINT_ERROR RAISED.
|
-- NON-NULL RANGES, CONSTRAINT_ERROR RAISED.
|
|
|
BEGIN
|
BEGIN
|
DECLARE
|
DECLARE
|
TYPE A IS ARRAY (I_5 RANGE 0 .. 6) OF I_5;
|
TYPE A IS ARRAY (I_5 RANGE 0 .. 6) OF I_5;
|
-- ABOVE DECLARATION RAISES CONSTRAINT_ERROR.
|
-- ABOVE DECLARATION RAISES CONSTRAINT_ERROR.
|
BEGIN
|
BEGIN
|
DECLARE
|
DECLARE
|
-- DEFINE AN OBJECT OF TYPE A AND USE IT TO AVOID
|
-- DEFINE AN OBJECT OF TYPE A AND USE IT TO AVOID
|
-- OPTIMIZATION OF SUBTYPE
|
-- OPTIMIZATION OF SUBTYPE
|
A1 : A := (A'RANGE => I_5(IDENT_INT(1)));
|
A1 : A := (A'RANGE => I_5(IDENT_INT(1)));
|
BEGIN
|
BEGIN
|
FAILED ("CONSTRAINT_ERROR NOT RAISED 1 " &
|
FAILED ("CONSTRAINT_ERROR NOT RAISED 1 " &
|
I_5'IMAGE(A1(1)) ); --USE A1
|
I_5'IMAGE(A1(1)) ); --USE A1
|
END;
|
END;
|
EXCEPTION
|
EXCEPTION
|
--MAKE SURE THAT CONSTRAINT_ERROR FROM ABOVE STATEMENTS
|
--MAKE SURE THAT CONSTRAINT_ERROR FROM ABOVE STATEMENTS
|
--REPORT FAILED.
|
--REPORT FAILED.
|
WHEN OTHERS => FAILED ("UNHANDLED EXCEPTION RAISED 1");
|
WHEN OTHERS => FAILED ("UNHANDLED EXCEPTION RAISED 1");
|
END;
|
END;
|
EXCEPTION
|
EXCEPTION
|
WHEN CONSTRAINT_ERROR => NULL;
|
WHEN CONSTRAINT_ERROR => NULL;
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ("WRONG EXCEPTION RAISED 1");
|
FAILED ("WRONG EXCEPTION RAISED 1");
|
END;
|
END;
|
|
|
BEGIN
|
BEGIN
|
FOR I IN MID_WEEK RANGE MON .. MON LOOP
|
FOR I IN MID_WEEK RANGE MON .. MON LOOP
|
|
|
IF EQUAL(2,2) THEN
|
IF EQUAL(2,2) THEN
|
SAT := SSAT;
|
SAT := SSAT;
|
END IF;
|
END IF;
|
|
|
END LOOP;
|
END LOOP;
|
FAILED ("CONSTRAINT_ERROR NOT RAISED 3");
|
FAILED ("CONSTRAINT_ERROR NOT RAISED 3");
|
EXCEPTION
|
EXCEPTION
|
WHEN CONSTRAINT_ERROR => NULL;
|
WHEN CONSTRAINT_ERROR => NULL;
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ("WRONG EXCEPTION RAISED 3");
|
FAILED ("WRONG EXCEPTION RAISED 3");
|
END;
|
END;
|
|
|
BEGIN
|
BEGIN
|
DECLARE
|
DECLARE
|
TYPE P IS ACCESS I_5_ARRAY (0 .. 6);
|
TYPE P IS ACCESS I_5_ARRAY (0 .. 6);
|
-- ABOVE DECLARATION RAISES CONSTRAINT_ERROR.
|
-- ABOVE DECLARATION RAISES CONSTRAINT_ERROR.
|
BEGIN
|
BEGIN
|
DECLARE
|
DECLARE
|
TYPE PA IS NEW P;
|
TYPE PA IS NEW P;
|
-- DEFINE AN OBJECT OF TYPE PA AND USE IT TO AVOID
|
-- DEFINE AN OBJECT OF TYPE PA AND USE IT TO AVOID
|
-- OPTIMIZATION OF TYPE
|
-- OPTIMIZATION OF TYPE
|
PA1 : PA :=NEW I_5_ARRAY'(0.. I_5(IDENT_INT(6)) =>
|
PA1 : PA :=NEW I_5_ARRAY'(0.. I_5(IDENT_INT(6)) =>
|
I_5(IDENT_INT(1)));
|
I_5(IDENT_INT(1)));
|
BEGIN
|
BEGIN
|
FAILED ("CONSTRAINT_ERROR NOT RAISED 4 " &
|
FAILED ("CONSTRAINT_ERROR NOT RAISED 4 " &
|
I_5'IMAGE(PA1(1))); --USE PA1
|
I_5'IMAGE(PA1(1))); --USE PA1
|
END;
|
END;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS => FAILED ("UNHANDLED EXCEPTION RAISED 4");
|
WHEN OTHERS => FAILED ("UNHANDLED EXCEPTION RAISED 4");
|
END;
|
END;
|
EXCEPTION
|
EXCEPTION
|
WHEN CONSTRAINT_ERROR => NULL;
|
WHEN CONSTRAINT_ERROR => NULL;
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ("WRONG EXCEPTION RAISED 4");
|
FAILED ("WRONG EXCEPTION RAISED 4");
|
END;
|
END;
|
|
|
DECLARE
|
DECLARE
|
W : WEEK_ARRAY (MID_WEEK);
|
W : WEEK_ARRAY (MID_WEEK);
|
BEGIN
|
BEGIN
|
W := (MID_WEEK RANGE MON .. WED => WED);
|
W := (MID_WEEK RANGE MON .. WED => WED);
|
-- CONSTRAINT_ERROR RAISED.
|
-- CONSTRAINT_ERROR RAISED.
|
BEGIN
|
BEGIN
|
FAILED ("CONSTRAINT_ERROR NOT RAISED 7 " &
|
FAILED ("CONSTRAINT_ERROR NOT RAISED 7 " &
|
MID_WEEK'IMAGE(W(WED))); --USE W
|
MID_WEEK'IMAGE(W(WED))); --USE W
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS => FAILED ("UNHANDLED EXCEPTION RAISED 7");
|
WHEN OTHERS => FAILED ("UNHANDLED EXCEPTION RAISED 7");
|
END;
|
END;
|
EXCEPTION
|
EXCEPTION
|
WHEN CONSTRAINT_ERROR => NULL;
|
WHEN CONSTRAINT_ERROR => NULL;
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ("WRONG EXCEPTION RAISED 7");
|
FAILED ("WRONG EXCEPTION RAISED 7");
|
END;
|
END;
|
|
|
DECLARE
|
DECLARE
|
W : WEEK_ARRAY (WORK_WEEK);
|
W : WEEK_ARRAY (WORK_WEEK);
|
BEGIN
|
BEGIN
|
W := (W'RANGE => WED); -- OK.
|
W := (W'RANGE => WED); -- OK.
|
W (MON .. WED) := W (MID_WEEK RANGE MON .. WED); -- EXCEPTION.
|
W (MON .. WED) := W (MID_WEEK RANGE MON .. WED); -- EXCEPTION.
|
BEGIN
|
BEGIN
|
FAILED ("CONSTRAINT_ERROR NOT RAISED 8 " &
|
FAILED ("CONSTRAINT_ERROR NOT RAISED 8 " &
|
MID_WEEK'IMAGE(W(WED))); --USE W
|
MID_WEEK'IMAGE(W(WED))); --USE W
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS => FAILED ("UNHANDLED EXCEPTION RAISED 8");
|
WHEN OTHERS => FAILED ("UNHANDLED EXCEPTION RAISED 8");
|
END;
|
END;
|
EXCEPTION
|
EXCEPTION
|
WHEN CONSTRAINT_ERROR => NULL;
|
WHEN CONSTRAINT_ERROR => NULL;
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ("WRONG EXCEPTION RAISED 8");
|
FAILED ("WRONG EXCEPTION RAISED 8");
|
END;
|
END;
|
|
|
BEGIN
|
BEGIN
|
DECLARE
|
DECLARE
|
W : WEEK_ARRAY (MID_WEEK RANGE MON .. FRI);
|
W : WEEK_ARRAY (MID_WEEK RANGE MON .. FRI);
|
-- ELABORATION OF ABOVE RAISES CONSTRAINT_ERROR.
|
-- ELABORATION OF ABOVE RAISES CONSTRAINT_ERROR.
|
BEGIN
|
BEGIN
|
W(WED) := THU; -- OK.
|
W(WED) := THU; -- OK.
|
FAILED ("CONSTRAINT_ERROR NOT RAISED 9 " &
|
FAILED ("CONSTRAINT_ERROR NOT RAISED 9 " &
|
WEEK'IMAGE(W(WED))); -- USE W
|
WEEK'IMAGE(W(WED))); -- USE W
|
END;
|
END;
|
EXCEPTION
|
EXCEPTION
|
WHEN CONSTRAINT_ERROR => NULL;
|
WHEN CONSTRAINT_ERROR => NULL;
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ("WRONG EXCEPTION RAISED 9");
|
FAILED ("WRONG EXCEPTION RAISED 9");
|
END;
|
END;
|
|
|
BEGIN
|
BEGIN
|
DECLARE
|
DECLARE
|
TYPE W IS NEW WEEK_ARRAY (MID_WEEK RANGE SUN .. WED);
|
TYPE W IS NEW WEEK_ARRAY (MID_WEEK RANGE SUN .. WED);
|
-- RAISES CONSTRAINT_ERROR.
|
-- RAISES CONSTRAINT_ERROR.
|
BEGIN
|
BEGIN
|
DECLARE
|
DECLARE
|
X : W; -- OK.
|
X : W; -- OK.
|
BEGIN
|
BEGIN
|
X(TUE) := THU; -- OK.
|
X(TUE) := THU; -- OK.
|
FAILED ("CONSTRAINT_ERROR NOT RAISED 10 " &
|
FAILED ("CONSTRAINT_ERROR NOT RAISED 10 " &
|
WEEK'IMAGE(X(TUE))); -- USE X
|
WEEK'IMAGE(X(TUE))); -- USE X
|
END;
|
END;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ("DID NOT RAISE CONSTRAINT_ERROR AT PROPER PLACE");
|
FAILED ("DID NOT RAISE CONSTRAINT_ERROR AT PROPER PLACE");
|
END;
|
END;
|
EXCEPTION
|
EXCEPTION
|
WHEN CONSTRAINT_ERROR => NULL;
|
WHEN CONSTRAINT_ERROR => NULL;
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ("WRONG EXCEPTION RAISED 10");
|
FAILED ("WRONG EXCEPTION RAISED 10");
|
END;
|
END;
|
|
|
BEGIN
|
BEGIN
|
DECLARE
|
DECLARE
|
SUBTYPE W IS WEEK_ARRAY (MID_WEEK RANGE MON .. THU);
|
SUBTYPE W IS WEEK_ARRAY (MID_WEEK RANGE MON .. THU);
|
-- RAISES CONSTRAINT_ERROR.
|
-- RAISES CONSTRAINT_ERROR.
|
BEGIN
|
BEGIN
|
DECLARE
|
DECLARE
|
T : W; -- OK.
|
T : W; -- OK.
|
BEGIN
|
BEGIN
|
T(TUE) := THU; -- OK.
|
T(TUE) := THU; -- OK.
|
FAILED ("CONSTRAINT_ERROR NOT RAISED 11 " &
|
FAILED ("CONSTRAINT_ERROR NOT RAISED 11 " &
|
WEEK'IMAGE(T(TUE)));
|
WEEK'IMAGE(T(TUE)));
|
END;
|
END;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ("DID NOT RAISE CONSTRAINT_ERROR AT PROPER PLACE");
|
FAILED ("DID NOT RAISE CONSTRAINT_ERROR AT PROPER PLACE");
|
END;
|
END;
|
EXCEPTION
|
EXCEPTION
|
WHEN CONSTRAINT_ERROR => NULL;
|
WHEN CONSTRAINT_ERROR => NULL;
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ("WRONG EXCEPTION RAISED 11");
|
FAILED ("WRONG EXCEPTION RAISED 11");
|
END;
|
END;
|
|
|
-- NULL DISCRETE/INDEX RANGES, EXCEPTION NOT RAISED.
|
-- NULL DISCRETE/INDEX RANGES, EXCEPTION NOT RAISED.
|
|
|
BEGIN
|
BEGIN
|
DECLARE
|
DECLARE
|
TYPE A IS ARRAY (I_5 RANGE I_5(IDENT_INT(-5)) .. -6) OF I_5;
|
TYPE A IS ARRAY (I_5 RANGE I_5(IDENT_INT(-5)) .. -6) OF I_5;
|
A1 : A;
|
A1 : A;
|
BEGIN
|
BEGIN
|
IF A1'FIRST /= I_5(IDENT_INT(-5)) THEN
|
IF A1'FIRST /= I_5(IDENT_INT(-5)) THEN
|
FAILED ("'FIRST OF NULL ARRAY INCORRECT");
|
FAILED ("'FIRST OF NULL ARRAY INCORRECT");
|
END IF;
|
END IF;
|
END;
|
END;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS => FAILED ("EXCEPTION RAISED 1");
|
WHEN OTHERS => FAILED ("EXCEPTION RAISED 1");
|
END;
|
END;
|
|
|
BEGIN
|
BEGIN
|
FOR I IN MID_WEEK RANGE SAT .. SUN LOOP
|
FOR I IN MID_WEEK RANGE SAT .. SUN LOOP
|
|
|
IF EQUAL(2,2) THEN
|
IF EQUAL(2,2) THEN
|
TUE := STUE;
|
TUE := STUE;
|
END IF;
|
END IF;
|
|
|
END LOOP;
|
END LOOP;
|
FOR I IN MID_WEEK RANGE FRI .. WED LOOP
|
FOR I IN MID_WEEK RANGE FRI .. WED LOOP
|
|
|
IF EQUAL(2,2) THEN
|
IF EQUAL(2,2) THEN
|
MON := SMON;
|
MON := SMON;
|
END IF;
|
END IF;
|
|
|
END LOOP;
|
END LOOP;
|
FOR I IN MID_WEEK RANGE MON .. SUN LOOP
|
FOR I IN MID_WEEK RANGE MON .. SUN LOOP
|
|
|
IF EQUAL(3,3) THEN
|
IF EQUAL(3,3) THEN
|
WED := SWED;
|
WED := SWED;
|
END IF;
|
END IF;
|
|
|
END LOOP;
|
END LOOP;
|
FOR I IN I_5 RANGE 10 .. -10 LOOP
|
FOR I IN I_5 RANGE 10 .. -10 LOOP
|
|
|
IF EQUAL(2,2) THEN
|
IF EQUAL(2,2) THEN
|
TUE := STUE;
|
TUE := STUE;
|
END IF;
|
END IF;
|
|
|
END LOOP;
|
END LOOP;
|
FOR I IN I_5 RANGE 10 .. 9 LOOP
|
FOR I IN I_5 RANGE 10 .. 9 LOOP
|
|
|
IF EQUAL(2,2) THEN
|
IF EQUAL(2,2) THEN
|
THU := STHU;
|
THU := STHU;
|
END IF;
|
END IF;
|
|
|
END LOOP;
|
END LOOP;
|
FOR I IN I_5 RANGE -10 .. -11 LOOP
|
FOR I IN I_5 RANGE -10 .. -11 LOOP
|
|
|
IF EQUAL(2,2) THEN
|
IF EQUAL(2,2) THEN
|
SAT := SSAT;
|
SAT := SSAT;
|
END IF;
|
END IF;
|
|
|
END LOOP;
|
END LOOP;
|
FOR I IN I_5 RANGE -10 .. -20 LOOP
|
FOR I IN I_5 RANGE -10 .. -20 LOOP
|
|
|
IF EQUAL(2,2) THEN
|
IF EQUAL(2,2) THEN
|
SUN := SSUN;
|
SUN := SSUN;
|
END IF;
|
END IF;
|
|
|
END LOOP;
|
END LOOP;
|
FOR I IN I_5 RANGE 6 .. 5 LOOP
|
FOR I IN I_5 RANGE 6 .. 5 LOOP
|
|
|
IF EQUAL(2,2) THEN
|
IF EQUAL(2,2) THEN
|
MON := SMON;
|
MON := SMON;
|
END IF;
|
END IF;
|
|
|
END LOOP;
|
END LOOP;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS => FAILED ("EXCEPTION RAISED 3");
|
WHEN OTHERS => FAILED ("EXCEPTION RAISED 3");
|
END;
|
END;
|
|
|
BEGIN
|
BEGIN
|
DECLARE
|
DECLARE
|
TYPE P IS ACCESS I_5_ARRAY (I_5(IDENT_INT(-5)) .. -6);
|
TYPE P IS ACCESS I_5_ARRAY (I_5(IDENT_INT(-5)) .. -6);
|
PA1 : P := NEW I_5_ARRAY (I_5(IDENT_INT(-5)) .. -6);
|
PA1 : P := NEW I_5_ARRAY (I_5(IDENT_INT(-5)) .. -6);
|
BEGIN
|
BEGIN
|
IF PA1'LENGTH /= IDENT_INT(0) THEN
|
IF PA1'LENGTH /= IDENT_INT(0) THEN
|
FAILED ("'LENGTH OF NULL ARRAY INCORRECT");
|
FAILED ("'LENGTH OF NULL ARRAY INCORRECT");
|
END IF;
|
END IF;
|
END;
|
END;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS =>
|
WHEN OTHERS =>
|
FAILED ("EXCEPTION RAISED 5");
|
FAILED ("EXCEPTION RAISED 5");
|
END;
|
END;
|
|
|
DECLARE
|
DECLARE
|
TYPE NARR IS ARRAY(INTEGER RANGE <>) OF INTEGER;
|
TYPE NARR IS ARRAY(INTEGER RANGE <>) OF INTEGER;
|
SUBTYPE SNARR IS INTEGER RANGE 1 .. 2;
|
SUBTYPE SNARR IS INTEGER RANGE 1 .. 2;
|
W : NARR(SNARR) := (1,2);
|
W : NARR(SNARR) := (1,2);
|
BEGIN
|
BEGIN
|
IF W = (SNARR RANGE IDENT_INT(4) .. 2 => 5) THEN
|
IF W = (SNARR RANGE IDENT_INT(4) .. 2 => 5) THEN
|
FAILED("EVALUATION OF EXPRESSION IS INCORRECT");
|
FAILED("EVALUATION OF EXPRESSION IS INCORRECT");
|
END IF;
|
END IF;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS => FAILED ("EXCEPTION RAISED 7");
|
WHEN OTHERS => FAILED ("EXCEPTION RAISED 7");
|
END;
|
END;
|
|
|
DECLARE
|
DECLARE
|
W : WEEK_ARRAY (MID_WEEK);
|
W : WEEK_ARRAY (MID_WEEK);
|
BEGIN
|
BEGIN
|
W := (W'RANGE => WED); -- OK.
|
W := (W'RANGE => WED); -- OK.
|
W (TUE .. MON) := W (MID_WEEK RANGE MON .. SUN);
|
W (TUE .. MON) := W (MID_WEEK RANGE MON .. SUN);
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS => FAILED ("EXCEPTION RAISED 8");
|
WHEN OTHERS => FAILED ("EXCEPTION RAISED 8");
|
END;
|
END;
|
|
|
BEGIN
|
BEGIN
|
DECLARE
|
DECLARE
|
W : WEEK_ARRAY (MID_WEEK RANGE MON .. SUN);
|
W : WEEK_ARRAY (MID_WEEK RANGE MON .. SUN);
|
BEGIN
|
BEGIN
|
|
|
IF EQUAL(W'LENGTH,0) THEN
|
IF EQUAL(W'LENGTH,0) THEN
|
TUE := STUE;
|
TUE := STUE;
|
END IF;
|
END IF;
|
|
|
END;
|
END;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS => FAILED ("EXCEPTION RAISED 9");
|
WHEN OTHERS => FAILED ("EXCEPTION RAISED 9");
|
END;
|
END;
|
|
|
BEGIN
|
BEGIN
|
DECLARE
|
DECLARE
|
TYPE W IS NEW WEEK_ARRAY (MID_WEEK RANGE TUE .. MON);
|
TYPE W IS NEW WEEK_ARRAY (MID_WEEK RANGE TUE .. MON);
|
BEGIN
|
BEGIN
|
|
|
IF EQUAL(W'LENGTH,0) THEN
|
IF EQUAL(W'LENGTH,0) THEN
|
MON := SMON;
|
MON := SMON;
|
END IF;
|
END IF;
|
|
|
END;
|
END;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS => FAILED ("EXCEPTION RAISED 10");
|
WHEN OTHERS => FAILED ("EXCEPTION RAISED 10");
|
END;
|
END;
|
|
|
BEGIN
|
BEGIN
|
DECLARE
|
DECLARE
|
SUBTYPE W IS WEEK_ARRAY (MID_WEEK RANGE TUE .. MON);
|
SUBTYPE W IS WEEK_ARRAY (MID_WEEK RANGE TUE .. MON);
|
BEGIN
|
BEGIN
|
|
|
IF EQUAL(W'LENGTH,0) THEN
|
IF EQUAL(W'LENGTH,0) THEN
|
WED := SWED;
|
WED := SWED;
|
END IF;
|
END IF;
|
|
|
END;
|
END;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS => FAILED ("EXCEPTION RAISED 12");
|
WHEN OTHERS => FAILED ("EXCEPTION RAISED 12");
|
END;
|
END;
|
|
|
-- NULL MEMBERSHIP RANGES, EXCEPTION NOT RAISED.
|
-- NULL MEMBERSHIP RANGES, EXCEPTION NOT RAISED.
|
|
|
BEGIN
|
BEGIN
|
IF F(SUN) IN SAT .. SUN
|
IF F(SUN) IN SAT .. SUN
|
OR SAT IN FRI .. WED
|
OR SAT IN FRI .. WED
|
OR F(WED) IN THU .. TUE
|
OR F(WED) IN THU .. TUE
|
OR THU IN MON .. SUN
|
OR THU IN MON .. SUN
|
OR F(FRI) IN SAT .. FRI
|
OR F(FRI) IN SAT .. FRI
|
OR WED IN FRI .. MON
|
OR WED IN FRI .. MON
|
THEN
|
THEN
|
FAILED ("INCORRECT 'IN' EVALUATION 1");
|
FAILED ("INCORRECT 'IN' EVALUATION 1");
|
END IF;
|
END IF;
|
|
|
IF IDENT_INT(0) IN 10 .. IDENT_INT(-10)
|
IF IDENT_INT(0) IN 10 .. IDENT_INT(-10)
|
OR 0 IN IDENT_INT(10) .. 9
|
OR 0 IN IDENT_INT(10) .. 9
|
OR IDENT_INT(0) IN IDENT_INT(-10) .. -11
|
OR IDENT_INT(0) IN IDENT_INT(-10) .. -11
|
OR 0 IN -10 .. IDENT_INT(-20)
|
OR 0 IN -10 .. IDENT_INT(-20)
|
OR IDENT_INT(0) IN 6 .. IDENT_INT(5)
|
OR IDENT_INT(0) IN 6 .. IDENT_INT(5)
|
OR 0 IN 5 .. IDENT_INT(3)
|
OR 0 IN 5 .. IDENT_INT(3)
|
OR IDENT_INT(0) IN 7 .. IDENT_INT(3)
|
OR IDENT_INT(0) IN 7 .. IDENT_INT(3)
|
THEN
|
THEN
|
FAILED ("INCORRECT 'IN' EVALUATION 2");
|
FAILED ("INCORRECT 'IN' EVALUATION 2");
|
END IF;
|
END IF;
|
|
|
IF F(WED) NOT IN THU .. TUE
|
IF F(WED) NOT IN THU .. TUE
|
AND IDENT_INT(0) NOT IN IDENT_INT(4) .. -4
|
AND IDENT_INT(0) NOT IN IDENT_INT(4) .. -4
|
THEN NULL;
|
THEN NULL;
|
ELSE FAILED ("INCORRECT 'NOT IN' EVALUATION");
|
ELSE FAILED ("INCORRECT 'NOT IN' EVALUATION");
|
END IF;
|
END IF;
|
EXCEPTION
|
EXCEPTION
|
WHEN OTHERS => FAILED ("EXCEPTION RAISED 52");
|
WHEN OTHERS => FAILED ("EXCEPTION RAISED 52");
|
END;
|
END;
|
|
|
RESULT;
|
RESULT;
|
END C36104B;
|
END C36104B;
|
|
|