Next: , Previous: A.8.2, Up: A.8


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, "A.13 Exceptions in Input-Output").

4.a

Discussion: Data_Error need not be propagated if the check is too complex. See A.13, "A.13 Exceptions in Input-Output".

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.