WITH REPORT; USE REPORT;
WITH DIRECT_IO;
PROCEDURE CE2401E IS
END_SUBTEST : EXCEPTION;
BEGIN
TEST ("CE2401E", "CHECK THAT READ, WRITE, SET_INDEX, " &
"INDEX, SIZE, AND END_OF_FILE ARE " &
"SUPPORTED FOR DIRECT FILES WITH " &
"ELEMENT_TYPE FLOAT");
DECLARE
PACKAGE DIR_FLT IS NEW DIRECT_IO (FLOAT);
USE DIR_FLT;
FILE_FLT : FILE_TYPE;
BEGIN
BEGIN
CREATE (FILE_FLT, INOUT_FILE, LEGAL_FILE_NAME);
EXCEPTION
WHEN USE_ERROR | NAME_ERROR =>
NOT_APPLICABLE ("USE_ERROR | NAME_ERROR RAISED " &
"ON CREATE - FLOAT");
RAISE END_SUBTEST;
WHEN OTHERS =>
FAILED ("UNEXPECTED ERROR RAISED ON " &
"CREATE - FLOAT");
RAISE END_SUBTEST;
END;
DECLARE
FLT : FLOAT := 65.0;
ITEM_FLT : FLOAT;
ONE_FLT : POSITIVE_COUNT := 1;
TWO_FLT : POSITIVE_COUNT := 2;
BEGIN
BEGIN
WRITE (FILE_FLT, FLT);
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED ON WRITE FOR " &
"FLOATING POINT - 1");
END;
BEGIN
WRITE (FILE_FLT, FLT, TWO_FLT);
EXCEPTION
WHEN OTHERS =>
FAILED ("EXCEPTION RAISED ON WRITE FOR " &
"FLOATING POINT - 2");
END;
BEGIN
IF SIZE (FILE_FLT) /= TWO_FLT THEN
FAILED ("SIZE FOR FLOATING POINT");
END IF;
IF NOT END_OF_FILE (FILE_FLT) THEN
FAILED ("WRONG END_OF_FILE VALUE FOR " &
"FLOATING POINT");
END IF;
SET_INDEX (FILE_FLT, ONE_FLT);
IF INDEX (FILE_FLT) /= ONE_FLT THEN
FAILED ("WRONG INDEX VALUE FOR " &
"FLOATING POINT");
END IF;
END;
CLOSE (FILE_FLT);
BEGIN
OPEN (FILE_FLT, IN_FILE, LEGAL_FILE_NAME);
EXCEPTION
WHEN USE_ERROR =>
NOT_APPLICABLE ("OPEN FOR IN_FILE " &
"MODE NOT SUPPORTED");
RAISE END_SUBTEST;
END;
BEGIN
READ (FILE_FLT, ITEM_FLT);
IF ITEM_FLT /= FLT THEN
FAILED ("WRONG VALUE READ FOR " &
"FLOATING POINT");
END IF;
EXCEPTION
WHEN OTHERS =>
FAILED ("READ WITHOUT FROM FOR " &
"TYPE FLOATING POINT");
END;
BEGIN
READ (FILE_FLT, ITEM_FLT, ONE_FLT);
IF ITEM_FLT /= FLT THEN
FAILED ("WRONG VALUE READ WITH INDEX FOR " &
"FLOATING POINT");
END IF;
EXCEPTION
WHEN OTHERS =>
FAILED ("READ WITH FROM FOR " &
"TYPE FLOATING POINT");
END;
BEGIN
DELETE (FILE_FLT);
EXCEPTION
WHEN USE_ERROR =>
NULL;
END;
END;
EXCEPTION
WHEN END_SUBTEST =>
NULL;
END;
RESULT;
END CE2401E;