A.10.3 Default Input, Output, and Error Files
Static Semantics
The following subprograms provide for the control
of the particular default files that are used when a file parameter is
omitted from a Get, Put, or other operation of text input-output described
below, or when application-dependent error-related text is to be output.
procedure Set_Input(File : in File_Type);
Operates on a file of mode In_File. Sets the current
default input file to File.
The exception Status_Error
is propagated if the given file is not open. The exception Mode_Error
is propagated if the mode of the given file is not In_File.
procedure Set_Output(File : in File_Type);
procedure Set_Error (File : in File_Type);
Each operates on
a file of mode Out_File or Append_File. Set_Output sets the current default
output file to File. Set_Error sets the current default error file to
File. The exception Status_Error is propagated if the given file is not
open. The exception Mode_Error is propagated if the mode of the given
file is not Out_File or Append_File.
function Standard_Input return File_Type;
function Standard_Input return File_Access;
Returns the standard
input file (see
A.10), or an access value
designating the standard input file, respectively.
function Standard_Output return File_Type;
function Standard_Output return File_Access;
Returns the standard
output file (see
A.10) or an access value
designating the standard output file, respectively.
function Standard_Error return File_Type;
function Standard_Error return File_Access;
{
8652/0052}
{
AI95-00194-01}
Returns the standard error file (see
A.10),
or an access value designating the standard error file, respectively.
The Form strings implicitly
associated with the opening of Standard_Input, Standard_Output, and Standard_Error
at the start of program execution are implementation defined.
function Current_Input return File_Type;
function Current_Input return File_Access;
Returns the current
default input file, or an access value designating the current default
input file, respectively.
function Current_Output return File_Type;
function Current_Output return File_Access;
Returns the current
default output file, or an access value designating the current default
output file, respectively.
function Current_Error return File_Type;
function Current_Error return File_Access;
Returns the current
default error file, or an access value designating the current default
error file, respectively.
{
AI12-0130-1}
[The effect of Flush is the same as the corresponding subprogram in Sequential_IO
(see
A.8.2).] If File is not explicitly specified,
Current_Output is used.
Discussion: {
AI12-0052-1}
For the purpose of determining whether concurrent calls on text input-output
subprograms are required to perform as specified, subprograms that implicitly
operate on one of the default input-output files are considered to have
a parameter of Current_Input or Current_Output (as appropriate). The
result of Current_Output is considered to be overlapping with the file
given to the latest call of Set_Output (or Standard_Output if Set_Output
hasn't been called); a corresponding consideration applies to the result
of Current_Input. See the introduction of
Annex A
for details.
Erroneous Execution
{
8652/0053}
{
AI95-00063-01}
The execution of a program is erroneous if it invokes
an operation on a current default input, default output, or default error
file, and if the corresponding file object is closed or no longer exists.
Ramification: {
8652/0053}
{
AI95-00063-01}
Closing a default file, then setting the default file to another open
file before accessing it is not erroneous.
28 The standard input, standard output,
and standard error files cannot be opened, closed, reset, or deleted,
because the parameter File of the corresponding procedures has the mode
in out.
29 The standard input, standard output,
and standard error files are different file objects, but not necessarily
different external files.
Wording Changes from Ada 95
{
8652/0051}
{
AI95-00057-01}
Corrigendum: Corrected the parameter mode of Flush; otherwise
it could not be used on Standard_Output.
{
8652/0053}
{
AI95-00063-01}
Corrigendum: Clarified that execution is erroneous only when a
closed default file is accessed.
Wording Changes from Ada 2012
{
AI12-0130-1}
Corrigendum: Moved the definition of Flush to
A.8.2,
as all input-output packages now have it.
Ada 2005 and 2012 Editions sponsored in part by Ada-Europe