Contents Index Previous Next
A.8.3 Sequential Input-Output Operations
Static Semantics
1
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.
2
procedure Read(File : in File_Type; Item : out Element_Type);
3
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.
3.a
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.
3.b
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).
4
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'').
4.a
5
procedure Write(File : in File_Type; Item : in Element_Type);
6
Operates on a file of mode Out_File or Append_File.
Writes the value of Item to the given file.
7
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.
8
function End_Of_File(File : in File_Type) return Boolean;
9
Operates on a file of mode In_File. Returns
True if no more elements can be read from the given file; otherwise returns
False.
10
The exception Mode_Error is propagated if the
mode is not In_File.
Contents Index Previous Next Legal