Contents Index Previous Next
A.10 Text Input-Output
Static Semantics
1
This clause describes the package Text_IO,
which provides facilities for input and output in human-readable form. Each
file is read or written sequentially, as a sequence of characters grouped into
lines, and as a sequence of lines grouped into pages. The specification of the
package is given below in subclause
A.10.1.
2
The facilities for file management given
above, in subclauses
A.8.2 and
A.8.3,
are available for text input-output. In place of Read and Write, however, there
are procedures Get and Put that input values of suitable types from text files,
and output values to them. These values are provided to the Put procedures,
and returned by the Get procedures, in a parameter Item. Several overloaded
procedures of these names exist, for different types of Item. These Get procedures
analyze the input sequences of characters based on lexical elements (see Section
2) and return the corresponding values; the Put procedures output the given
values as appropriate lexical elements. Procedures Get and Put are also available
that input and output individual characters treated as character values rather
than as lexical elements. Related to character input are procedures to look
ahead at the next character without reading it, and to read a character ``immediately''
without waiting for an end-of-line to signal availability.
3
In addition to the procedures Get and Put for
numeric and enumeration types of Item that operate on text files, analogous
procedures are provided that read from and write to a parameter of type
String. These procedures perform the same analysis and composition of
character sequences as their counterparts which have a file parameter.
4
For all Get and Put procedures that operate on
text files, and for many other subprograms, there are forms with and
without a file parameter. Each such Get procedure operates on an input
file, and each such Put procedure operates on an output file. If no file
is specified, a default input file or a default output file is used.
5
{standard input file}
{standard output file}
At the beginning of program execution the default
input and output files are the so-called standard input file and standard
output file. These files are open, have respectively the current modes
In_File and Out_File, and are associated with two implementation-defined
external files. Procedures are provided to change the current default
input file and the current default output file.
5.a
Implementation defined: external
files for standard input, standard output, and standard error
5.a.1/1
Implementation Note: {8652/0113}
The default input file and default output file are not the names of distinct
file objects, but rather the role played by one or more (other) file
object(s). Thus, they generally will be implemented as accesses to another file
object. An implementation that implements them by copying them is incorrect.
6
{standard error file}
At the beginning of program execution a default file
for program-dependent error-related text output is the so-called standard
error file. This file is open, has the current mode Out_File, and is
associated with an implementation-defined external file. A procedure
is provided to change the current default error file.
7
{line terminator}
{page terminator} {file
terminator} From a logical point of view,
a text file is a sequence of pages, a page is a sequence of lines, and
a line is a sequence of characters; the end of a line is marked by a
line terminator; the end of a page is marked by the combination
of a line terminator immediately followed by a
page terminator;
and the end of a file is marked by the combination of a line terminator
immediately followed by a page terminator and then a
file terminator.
Terminators are generated during output; either by calls of procedures
provided expressly for that purpose; or implicitly as part of other operations,
for example, when a bounded line length, a bounded page length, or both,
have been specified for a file.
8
The actual nature of terminators is not defined
by the language and hence depends on the implementation. Although terminators
are recognized or generated by certain of the procedures that follow,
they are not necessarily implemented as characters or as sequences of
characters. Whether they are characters (and if so which ones) in any
particular implementation need not concern a user who neither explicitly
outputs nor explicitly inputs control characters. The effect of input
(Get) or output (Put) of control characters (other than horizontal tabulation)
is not specified by the language.
{unspecified [partial]}
9
{column number} {current
column number} {current
line number} {current
page number} The characters of a line
are numbered, starting from one; the number of a character is called
its
column number. For a line terminator, a column number is also
defined: it is one more than the number of characters in the line. The
lines of a page, and the pages of a file, are similarly numbered. The
current column number is the column number of the next character or line
terminator to be transferred. The current line number is the number of
the current line. The current page number is the number of the current
page. These numbers are values of the subtype Positive_Count of the type
Count (by convention, the value zero of the type Count is used to indicate
special conditions).
10
type Count is range 0 .. implementation-defined;
subtype Positive_Count is Count range 1 .. Count'Last;
11
{maximum line length}
{maximum page length}
For an output file or an append file, a
maximum
line length can be specified and a
maximum page length can
be specified. If a value to be output cannot fit on the current line,
for a specified maximum line length, then a new line is automatically
started before the value is output; if, further, this new line cannot
fit on the current page, for a specified maximum page length, then a
new page is automatically started before the value is output. Functions
are provided to determine the maximum line length and the maximum page
length. When a file is opened with mode Out_File or Append_File, both
values are zero: by convention, this means that the line lengths and
page lengths are unbounded. (Consequently, output consists of a single
line if the subprograms for explicit control of line and page structure
are not used.) The constant Unbounded is provided for this purpose.
Extensions to Ada 83
11.a
{extensions to Ada 83}
Append_File is new in Ada 95.
Contents Index Previous Next Legal