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.