WITH REPORT; USE REPORT;
PROCEDURE C35507O IS
TYPE CHAR IS ('A', B);
TYPE NEWCHAR IS NEW CHAR;
SPACE : CONSTANT CHARACTER := CHARACTER'(' ');
SUBTYPE NOCHAR IS CHARACTER RANGE CHARACTER'('Z') .. CHARACTER'('A');
SUBTYPE GRAPHIC IS CHARACTER RANGE SPACE .. ASCII.TILDE;
SUBTYPE NONGRAPHIC IS CHARACTER RANGE ASCII.NUL .. ASCII.US;
FUNCTION IDENT (CH : CHAR) RETURN CHAR IS
BEGIN
RETURN CHAR'VAL (IDENT_INT (CHAR'POS (CH)));
END IDENT;
FUNCTION IDENT (CH : NEWCHAR) RETURN NEWCHAR IS
BEGIN
RETURN NEWCHAR'VAL (IDENT_INT (NEWCHAR'POS (CH)));
END IDENT;
BEGIN
TEST( "C35507O" , "CHECK THAT THE ATTRIBUTES 'FIRST' AND " &
"'LAST' YIELD THE CORRECT RESULTS WHEN THE " &
"PREFIX IS A CHARACTER TYPE" );
BEGIN
IF IDENT (CHAR'FIRST) /= 'A' THEN
FAILED ( "INCORRECT VALUE FOR CHAR'FIRST" );
END IF;
IF CHAR'LAST /= B THEN
FAILED ( "INCORRECT VALUE FOR CHAR'LAST" );
END IF;
END;
BEGIN
IF NEWCHAR'FIRST /= 'A' THEN
FAILED ( "INCORRECT VALUE FOR NEWCHAR'FIRST" );
END IF;
IF NEWCHAR'LAST /= IDENT (B) THEN
FAILED ( "INCORRECT VALUE FOR NEWCHAR'LAST" );
END IF;
END;
BEGIN
IF NOCHAR'FIRST /= CHARACTER'('Z') THEN
FAILED ( "INCORRECT VALUE FOR NOCHAR'FIRST" );
END IF;
IF NOCHAR'LAST /= CHARACTER'('A') THEN
FAILED ( "INCORRECT VALUE FOR NOCHAR'LAST" );
END IF;
END;
BEGIN
IF CHARACTER'FIRST /= ASCII.NUL THEN
FAILED ( "INCORRECT VALUE FOR CHARACTER'FIRST" );
END IF;
END;
BEGIN
IF NONGRAPHIC'FIRST /= IDENT_CHAR (ASCII.NUL) THEN
FAILED ( "INCORRECT VALUE FOR NONGRAPHIC'FIRST" );
END IF;
IF NONGRAPHIC'LAST /= ASCII.US THEN
FAILED ( "INCORRECT VALUE FOR NONGRAPHIC'LAST" );
END IF;
END;
BEGIN
IF GRAPHIC'FIRST /= SPACE THEN
FAILED ( "INCORRECT VALUE FOR GRAPHIC'FIRST" );
END IF;
IF GRAPHIC'LAST /= ASCII.TILDE THEN
FAILED ( "INCORRECT VALUE FOR GRAPHIC'LAST" );
END IF;
END;
RESULT;
END C35507O;