Static Semantics
- (1)
- The procedures and functions described in this subclause provide for the
control of external files; their declarations are repeated in each of the
packages for sequential, direct, text, and stream input-output. For text input-output,
the procedures Create, Open, and Reset have additional effects described in
subclause A.10.2.
(2)
procedure Create(File : in out File_Type;
Mode : in File_Mode := default_mode;
Name : in String := "";
Form : in String := "");
- (3)
Establishes a new external file, with the given name and form,
and associates this external file with the given file. The given
file is left open. The current mode of the given file is set to the
given access mode. The default access mode is the mode Out_File for
sequential and text input-output; it is the mode Inout_File for
direct input-output. For direct access, the size of the created file
is implementation defined.
- (4)
A null string for Name specifies an external file that is not
accessible after the completion of the main program (a temporary
file). A null string for Form specifies the use of the default
options of the implementation for the external file.
- (5)
The exception Status_Error is propagated if the given file is
already open. The exception Name_Error is propagated if the string
given as Name does not allow the identification of an external file.
The exception Use_Error is propagated if, for the specified mode, the
external environment does not support creation of an external file
with the given name (in the absence of Name_Error) and form.
(6)
procedure Open(File : in out File_Type;
Mode : in File_Mode;
Name : in String;
Form : in String := "");
- (7)
Associates the given file with an existing external file having
the given name and form, and sets the current mode of the given file
to the given mode. The given file is left open.
- (8)
The exception Status_Error is propagated if the given file is
already open. The exception Name_Error is propagated if the string
given as Name does not allow the identification of an external file;
in particular, this exception is propagated if no external file with
the given name exists. The exception Use_Error is propagated if, for
the specified mode, the external environment does not support opening
for an external file with the given name (in the absence of Name_Error) and form.
(9)
procedure Close(File : in out File_Type);
- (10)
Severs the association between the given file and its associated
external file. The given file is left closed. In addition, for
sequential files, if the file being closed has mode Out_File or
Append_File, then the last element written since the most recent open
or reset is the last element that can be read from the file. If no
elements have been written and the file mode is Out_File, then the
closed file is empty. If no elements have been written and the file
mode is Append_File, then the closed file is unchanged.
- (11)
The exception Status_Error is propagated if the given file is
not open.
(12)
procedure Delete(File : in out File_Type);
- (13)
Deletes the external file associated with the given file. The
given file is closed, and the external file ceases to exist.
- (14)
The exception Status_Error is propagated if the given file is
not open. The exception Use_Error is propagated if deletion of the
external file is not supported by the external environment.
(15)
procedure Reset(File : in out File_Type; Mode : in File_Mode);
procedure Reset(File : in out File_Type);
- (16)
Resets the given file so that reading from its elements can be
restarted from the beginning of the file (for modes In_File and
Inout_File), and so that writing to its elements can be restarted at
the beginning of the file (for modes Out_File and Inout_File) or
after the last element of the file (for mode Append_File). In
particular, for direct access this means that the current index is
set to one. If a Mode parameter is supplied, the current mode of the
given file is set to the given mode. In addition, for sequential
files, if the given file has mode Out_File or Append_File when Reset
is called, the last element written since the most recent open or
reset is the last element that can be read from the file. If no
elements have been written and the file mode is Out_File, the reset
file is empty. If no elements have been written and the file mode is
Append_File, then the reset file is unchanged.
- (17)
The exception Status_Error is propagated if the file is not
open. The exception Use_Error is propagated if the external
environment does not support resetting for the external file and,
also, if the external environment does not support resetting to the
specified mode for the external file.
(18)
function Mode(File : in File_Type) return File_Mode;
- (19)
Returns the current mode of the given file.
- (20)
The exception Status_Error is propagated if the file is not
open.
(21)
function Name(File : in File_Type) return String;
- (22)
Returns a string which uniquely identifies the external file
currently associated with the given file (and may thus be used in an
Open operation). If an external environment allows alternative
specifications of the name (for example, abbreviations), the string
returned by the function should correspond to a full specification of
the name.
- (23)
The exception Status_Error is propagated if the given file is
not open. The exception Use_Error is propagated if the associated
external file is a temporary file that cannot be opened by any name.
(24)
function Form(File : in File_Type) return String;
- (25)
Returns the form string for the external file currently
associated with the given file. If an external environment allows
alternative specifications of the form (for example, abbreviations
using default options), the string returned by the function should
correspond to a full specification (that is, it should indicate
explicitly all options selected, including default options).
- (26)
The exception Status_Error is propagated if the given file is
not open.
(27)
function Is_Open(File : in File_Type) return Boolean;
- (28)
Returns True if the file is open (that is, if it is associated
with an external file), otherwise returns False.
Implementation Permissions
- (29)
- An implementation may propagate Name_Error or Use_Error if an attempt is
made to use an I/O feature that cannot be supported by the implementation due
to limitations in the external environment. Any such restriction should be
documented.
-- Email comments, additions, corrections, gripes, kudos, etc. to:
Magnus Kempe -- Magnus.Kempe@di.epfl.ch
Copyright statement
Page last generated: 95-03-12