WITH SEQUENTIAL_IO;
WITH REPORT; USE REPORT;
PROCEDURE CE2102G IS
INCOMPLETE : EXCEPTION;
BEGIN
TEST ("CE2102G", "CHECK THAT USE_ERROR IS RAISED IF AN " &
"IMPLEMENTATION DOES NOT SUPPORT RESET FOR " &
"SEQUENTIAL_IO");
DECLARE
PACKAGE SEQ IS NEW SEQUENTIAL_IO (INTEGER);
USE SEQ;
FILE1 : FILE_TYPE;
INT1 : INTEGER := IDENT_INT(1);
INT2 : INTEGER := 2;
BEGIN
BEGIN
CREATE (FILE1, OUT_FILE, LEGAL_FILE_NAME);
EXCEPTION
WHEN USE_ERROR =>
NOT_APPLICABLE ("USE_ERROR RAISED ON CREATE OF " &
"SEQUENTIAL FILE WITH OUT_FILE " &
"MODE");
RAISE INCOMPLETE;
WHEN NAME_ERROR =>
NOT_APPLICABLE ("NAME_ERROR RAISED ON CREATE OF " &
"SEQUENTIAL FILE WITH OUT_FILE " &
"MODE");
RAISE INCOMPLETE;
END;
WRITE (FILE1, INT2);
BEGIN
RESET (FILE1, IN_FILE);
COMMENT ("RESET FROM OUT_FILE TO IN_FILE IS ALLOWED");
BEGIN
READ (FILE1, INT1);
IF INT1 /= IDENT_INT(2) THEN
FAILED ("RESETTING FROM OUT_FILE TO IN_FILE " &
"AFFECTED DATA");
END IF;
EXCEPTION
WHEN OTHERS =>
FAILED ("UNEXPECTED EXCEPTION RAISED WHILE " &
"READING FROM FILE");
END;
EXCEPTION
WHEN USE_ERROR =>
COMMENT ("RESET FROM OUT_FILE TO IN_FILE IS NOT " &
"ALLOWED");
WHEN OTHERS =>
FAILED ("UNEXPECTED EXCEPTION RAISED WHEN " &
"RESETTING FROM OUT_FILE TO IN_FILE");
END;
CLOSE (FILE1);
BEGIN
OPEN (FILE1, IN_FILE, LEGAL_FILE_NAME);
EXCEPTION
WHEN USE_ERROR =>
NOT_APPLICABLE ("USE_ERROR RAISED ON OPENING OF " &
"SEQUENTIAL FILE WITH IN_FILE " &
"MODE");
RAISE INCOMPLETE;
END;
BEGIN
RESET (FILE1, OUT_FILE);
COMMENT ("RESET FROM IN_FILE TO OUT_FILE IS ALLOWED");
EXCEPTION
WHEN USE_ERROR =>
COMMENT ("RESET FROM IN_FILE TO OUT_FILE IS NOT " &
"ALLOWED");
WHEN OTHERS =>
FAILED ("UNEXPECTED EXCEPTION RAISED WHEN " &
"RESETTING FROM IN_FILE TO OUT_FILE");
END;
BEGIN
DELETE (FILE1);
EXCEPTION
WHEN USE_ERROR =>
NULL;
END;
EXCEPTION
WHEN INCOMPLETE =>
NULL;
END;
RESULT;
END CE2102G;