WITH REPORT; USE REPORT;
PROCEDURE C47002B IS
BEGIN
TEST( "C47002B", "CHECK THAT VALUES HAVING REAL TYPES " &
"CAN BE WRITTEN AS THE OPERANDS OF " &
"QUALIFIED EXPRESSIONS" );
DECLARE
TYPE RESULTS IS (FL1, FL2, FL3);
TYPE FLT IS DIGITS 3 RANGE -5.0 .. 5.0;
TYPE NFLT IS NEW FLOAT;
FUNCTION F (FL : FLT) RETURN RESULTS IS
BEGIN
RETURN FL1;
END F;
FUNCTION F (FL : NFLT) RETURN RESULTS IS
BEGIN
RETURN FL2;
END F;
FUNCTION F (FL : FLOAT) RETURN RESULTS IS
BEGIN
RETURN FL3;
END F;
BEGIN
IF F (FLT'(0.0)) /= FL1 THEN
FAILED ( "INCORRECT RESULTS FOR TYPE FLT" );
END IF;
IF F (NFLT'(0.0)) /= FL2 THEN
FAILED ( "INCORRECT RESULTS FOR TYPE NFLT" );
END IF;
IF F (FLOAT'(0.0)) /= FL3 THEN
FAILED ( "INCORRECT RESULTS FOR TYPE FLOAT" );
END IF;
END;
DECLARE
TYPE RESULTS IS (FI1, FI2, FI3);
TYPE FIXED IS DELTA 0.5 RANGE -5.0 .. 5.0;
TYPE NFIX IS NEW FIXED;
FUNCTION F (FI : FIXED) RETURN RESULTS IS
BEGIN
RETURN FI1;
END F;
FUNCTION F (FI : NFIX) RETURN RESULTS IS
BEGIN
RETURN FI2;
END F;
FUNCTION F (FI : DURATION) RETURN RESULTS IS
BEGIN
RETURN FI3;
END F;
BEGIN
IF F (FIXED'(0.0)) /= FI1 THEN
FAILED ( "INCORRECT RESULTS FOR TYPE FIXED" );
END IF;
IF F (NFIX'(0.0)) /= FI2 THEN
FAILED ( "INCORRECT RESULTS FOR TYPE NFIX" );
END IF;
IF F (DURATION'(0.0)) /= FI3 THEN
FAILED ( "INCORRECT RESULTS FOR TYPE DURATION" );
END IF;
END;
RESULT;
END C47002B;