Two
kinds of access to external files are defined in this subclause:
sequential
access and
direct access. The corresponding file types and
the associated operations are provided by the generic packages Sequential_IO
and Direct_IO. A file object to be used for sequential access is called
a
sequential file, and one to be used for direct access is called
a
direct file. Access to
stream files is described in
A.12.1.
For sequential access, the file
is viewed as a sequence of values that are transferred in the order of
their appearance (as produced by the program or by the external environment).
When the file is opened with mode In_File or Out_File, transfer starts
respectively from or to the beginning of the file. When the file is opened
with mode Append_File, transfer to the file starts after the last element
of the file.
For
direct access, the file is viewed as a set of elements occupying consecutive
positions in linear order; a value can be transferred to or from an element
of the file at any selected position. The position of an element is specified
by its
index, which is a number, greater than zero, of the implementation-defined
integer type Count. The first element, if any, has index one; the index
of the last element, if any, is called the
current size; the current
size is zero if there are no elements. The current size is a property
of the external file.
An open direct file has a
current
index, which is the index that will be used by the next read or write
operation. When a direct file is opened, the current index is set to
one. The current index of a direct file is a property of a file object,
not of an external file.