A.8.3 Sequential Input-Output Operations
Static Semantics
The operations available for sequential input and
output are described in this subclause. The exception Status_Error is
propagated if any of these operations is attempted for a file that is
not open.
procedure Read(File : in File_Type; Item : out Element_Type);
Operates on a file of mode In_File. Reads an element
from the given file, and returns the value of this element in the Item
parameter.
Discussion: We considered basing Sequential_IO.Read
on Element_Type'Read from an implicit stream associated with the sequential
file. However, Element_Type'Read is a type-related attribute, whereas
Sequential_IO should take advantage of the particular constraints of
the actual subtype corresponding to Element_Type to minimize the size
of the external file. Furthermore, forcing the implementation of Sequential_IO
to be based on Element_Type'Read would create an upward incompatibility
since existing data files written by an Ada 83 program using Sequential_IO
might not be readable by the identical program built with an Ada 95 implementation
of Sequential_IO.
An Ada 95 implementation might still use an
implementation-defined attribute analogous to 'Read to implement the
procedure Read, but that attribute will likely have to be subtype-specific
rather than type-related, and it need not be user-specifiable. Such an
attribute will presumably be needed to implement the generic package
Storage_IO (see
A.9).
The exception Mode_Error
is propagated if the mode is not In_File. The exception End_Error is
propagated if no more elements can be read from the given file. The exception
Data_Error can be propagated if the element read cannot be interpreted
as a value of the subtype Element_Type (see
A.13,
“
Exceptions in Input-Output”).
procedure Write(File : in File_Type; Item : in Element_Type);
Operates on a file of mode Out_File or Append_File.
Writes the value of Item to the given file.
The exception Mode_Error
is propagated if the mode is not Out_File or Append_File. The exception
Use_Error is propagated if the capacity of the external file is exceeded.
function End_Of_File(File : in File_Type) return Boolean;
Operates on a file of mode In_File. Returns True
if no more elements can be read from the given file; otherwise returns
False.
The exception Mode_Error is propagated if the
mode is not In_File.