DataMuseum.dk

Presents historical artifacts from the history of:

Rational R1000/400 Tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about Rational R1000/400 Tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - download
Index: ┃ T

⟦db0e6afd4⟧ TextFile

    Length: 111731 (0x1b473)
    Types: TextFile
    Names: »TIO_HELP«

Derivation

└─⟦5f3412b64⟧ Bits:30000745 8mm tape, Rational 1000, ENVIRONMENT 12_6_5 TOOLS 
    └─ ⟦91c658230⟧ »DATA« 
        └─⟦f6fec0485⟧ 
            └─⟦this⟧ 
└─⟦d10a02448⟧ Bits:30000409 8mm tape, Rational 1000, ENVIRONMENT, D_12_7_3
    └─ ⟦fc9b38f02⟧ »DATA« 
        └─⟦f95d63c89⟧ 
            └─⟦this⟧ 

TextFile


  @node !Io.Io

  This package provides a superset of the capabilities required
  for Text_Io in the Ada Language Reference Manual, Chapter
  14.  In addition to the nested generic packages that deal with
  I/O for arbitrary discrete or real types, package Io provides
  virtually preinstantiated operations for the Standard.Integer,
  Standard.Float, and Standard.Boolean types.

  The fundamental abstraction provided by package Io is the File_Type
  type.  Objects of this type denote file handles that can be mapped
  to external files.  Each file is read or written sequentially, as a
  sequence of characters grouped into lines and a sequence of lines
  grouped into pages.  Conversion operations are provided to convert
  Text_Io file handles to Io file handles and vice versa (as well as
  Device_Independent_Io files).

  At the beginning of program execution, the default input and output
  files are the standard input file and standard output file.  These
  files are open, have the In_File and Out_File modes, respectively,
  and are associated with two implementation-defined external files.
  These files are implicitly closed at the end of each job.  Package
  Io also introduces the notion of the standard error file, which
  follows the same semantics as the standard output file, except that
  it maps to the Message window by default.

  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 characters of a line are numbered, starting
  from 1; 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 Positive_Count subtype of the Count subtype (by convention,
  the value 0 of the Count subtype is used to indicate special
  conditions).

  For an output file, a maximum line length 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.  Further,
  if 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 the Out_File mode, both values are 0; 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
  Unbounded constant is provided for this purpose.

  Package Io provides a stack mechanism for managing current I/O
  files.  This is the same mechanism that is accessible with the
  operations in package Log (SJM). It can be used, for example,
  in managing output or log files and the like when nested calls
  to output or logging procedures need to be coordinated.  This
  mechanism allows all I/O to be performed on the current input,
  output, and error files.  It provides push operations (the
  Set_Input, Set_Output, and Set_Error procedures) that push files
  on the stack and make them the current input, output, and error
  files.  Pop and reset operations are also provided.  Pop removes
  a file from the stack.  Reset is equivalent to performing a close
  operation and then a pop of the top element of the stack.  Any
  files on the stack when a job terminates are automatically closed.

  The package also provides a generic iterator, the
  Wildcard_Iterator procedure, that can be used to perform a generic
  operation on a set of files matching a wildcard.
  @node !Io.Io."="

  function "=" (L, R : Count) return Boolean renames Text_Io."=";
  function "=" (L, R : File_Mode) return Boolean renames Text_Io."=";
  function "=" (L, R : Type_Set) return Boolean renames Text_Io."=";

  Gives visibility to the Text_Io equality operators.
  @node !Io.Io."<"

  function "<" (L, R : Count) return Boolean renames Text_Io."<";

  Gives visibility to the Text_Io comparison operator.
  @node !Io.Io.">"

  function ">" (L, R : Count) return Boolean renames Text_Io.">";

  Gives visibility to the Text_Io comparison operator.
  @node !Io.Io.Append

  procedure Append (File : in out File_Type;
                   Name :        String;
                   Form :        String     := "");
  procedure Append (File   : in out File_Type;
                   Object :        Directory.Version;
                   Form   :        String            := "");

  Opens the specified file for writing at the end of the file.

  This procedure associates the specified file with an existing file
  having the specified name and form; if a file does not exist, it
  creates one.  The current mode of the file is set to Out_File.

  Output starting after an Append procedure will begin on a new line
  but on the same page as the previous end of the file.

  The specified file is left open.  After the file is opened, the
  page and line lengths are unbounded, and the current line and
  current page numbers are set to the current size of the file.
  @node !Io.Io.Close

  procedure Close (File : in out File_Type);

  Severs the association between the file handle and its associated
  file.

  If the file has the current Out_File mode, it has the effect of
  calling the New_Page procedure.  If the current page is already
  terminated, the procedure outputs a file terminator.
  @node !Io.Io.Col

  function Col (File : File_Type) return Positive_Count;
  function Col return Positive_Count;

  Returns the current column number.

  If a File parameter is omitted, the default file is the current
  output file.
  @node !Io.Io.Convert

  function Convert (File: File_Type) return Text_Io.File_Type;
  function Convert (File: Text_Io.File_Type) return File_Type;

  Converts a file handle of Io.File_Type to Text_Io.File_Type and
  vice versa.

  When one type is converted to another, all file attributes are
  maintained.
  @node !Io.Io.Convert

  function Convert (File: File_Type) return Device_Independent_Io.File_Type;
  function Convert (File: Device_Independent_Io.File_Type) return File_Type;

  Converts a file handle of Io.File_Type to
  !Io.Device_Independent_Io.File_Type and vice versa to allow ac-
  cess to device-specific options when the file is opened.
  @node !Io.Io.Convert

  procedure Convert (From :        Device_Independent_Io.File_Type;
                    To   : in out Text_Io.File_Type);

  Converts a file handle of !Io.Device_Independent_Io.File_Type to
  Text_Io.File_Type.

  This procedure can be used, for example, to save file handles in
  variables of Text_Io.File_Type type, which are limited private.
  @node !Io.Io.Count

  subtype Count is Text_Io.Count;

  Specifies the range of possible values of the line and page count
  and the line and page length.
  @node !Io.Io.Create

  procedure Create (File : in out File_Type;
                   Mode :        File_Mode := Out_File;
                   Name :        String    := "";
                   Form :        String    := "");

  Establishes a new file with the specified name and associates this
  file with the specified file handle.

  The specified file is left open.
  @node !Io.Io.Current_Error

  function Current_Error return File_Type;
  function Current_Error return Text_Io.File_Type;

  Returns the handle to the current default error file.
  @node !Io.Io.Current_Input

  function Current_Input return File_Type;

  Returns the handle to the current default input file.
  @node !Io.Io.Current_Output

  function Current_Output return File_Type;

  Returns the handle to the current default output file.
  @node !Io.Io.Delete

  procedure Delete (File : in out File_Type);

  Deletes the file associated with the specified file handle.

  The file handle is closed, and the file ceases to exist.
  @node !Io.Io.Echo

  procedure Echo (Item : Character);

  Writes a character to the current error file (by default, the
  Message window).

  If the line length of the specified output file is bounded (that
  is, does not have the conventional value of 0) and the current
  column number exceeds it, this procedure has the effect of calling
  the New_Line procedure with a spacing of 1 for the current error
  file.  Then the procedure outputs the specified character to the
  file.
  @node !Io.Io.Echo

  procedure Echo (Item : String := "");

  Writes a string to the current error file (by default, the Message
  window).

  This procedure determines the length of the specified string and
  attempts that number of echo operations for successive characters
  of the string.  No operation is performed if the string is null.
  @node !Io.Io.Echo

  procedure Echo (Item  : Integer;
                 Width : Field       := 0;
                 Base  : Number_Base := 10);

  Writes an integer value to the current error file (by default, the
  Message window).

  Values are output as decimal or based literals, without underline
  characters or exponents, and are preceded by a minus sign if
  negative.  The format (which includes any leading spaces and a
  minus sign) can be specified by an optional field Width parameter.
  Values of widths of fields in output formats are of the nonnegative
  integer Field subtype.  Values of bases are of the integer
  Number_Base subtype.

  This procedure outputs the value of the Item parameter as an
  integer literal, with no underlines, no exponent, and no leading
  zeros (but a single zero for the value 0), and with a preceding
  minus sign for a negative value.

  If the resulting sequence of characters to be output has fewer
  characters than specified in the Width parameter, leading spaces
  are output to make up the difference.

  The procedure uses the syntax for decimal literal if the Base
  parameter has the value 10; otherwise, it uses the syntax for based
  literal, with any letters in uppercase.
  @node !Io.Io.Echo

  procedure Echo (Item : Float;
                 Fore : Field := 2;
                 Aft  : Field := 14;
                 Exp  : Field := 3);

  Writes a floating-point value to the current error file (by
  default, the Message window).

  Values are output as decimal literals without underline
  characters.  The format of each value output consists of a Fore
  field, a decimal point, an Aft field, and (if a nonzero Exp
  parameter is supplied) the letter E and an Exp field.  The two
  possible formats thus correspond to:
      Fore . Aft

  and:
      Fore . Aft E Exp

  with no spaces between these fields.  The Fore field can include
  leading spaces and a minus sign for negative values.  The Aft
  field includes only decimal digits (possibly with trailing zeros).
  The Exp field includes the sign (plus or minus) and the exponent
  (possibly with leading zeros).

  The Echo procedure outputs the value of the Item parameter as a
  decimal literal with the format defined by the Fore, Aft, and Exp
  parameters.  If the value is negative, a minus sign is included
  in the integer part.  If Exp has the value 0, then the integer
  part to be output has as many digits as needed to represent the
  integer part of the value of the Item parameter, overriding Fore if
  necessary, or it consists of the digit 0 if the value of Item has
  no integer part.

  If Exp has a value greater than 0, the integer part to be output
  has a single digit, which is nonzero except for the value 0.0 of
  the Item parameter.

  In both cases, however, if the integer part to be output has fewer
  than Fore characters, including any minus sign, leading spaces
  are output to make up the difference.  The number of digits of the
  fractional part is specified by Aft, or it is 1 if Aft equals 0.
  The value is rounded; a value of exactly one-half in the last place
  can be rounded either up or down.

  If Exp has the value 0, there is no exponent part.  If Exp has a
  value greater than 0, the exponent part to be output has as many
  digits as needed to represent the exponent part of the value of the
  Item parameter (for which a single-digit integer part is used), and
  it includes an initial sign (plus or minus).  If the exponent part
  to be output has fewer than Exp characters, including the sign,
  leading zeros precede the digits to make up the difference.  For
  the value 0.0 of the Item parameter, the exponent has the value 0.
  @node !Io.Io.Echo

  procedure Echo (Item  : Boolean;
                 Width : Field    := 0);

  Writes the Boolean value to the current error file (by default, the
  Message window).

  Values are output using either uppercase or lowercase letters for
  identifiers.

  The format (which includes any trailing spaces) can be specified by
  an optional field Width parameter.

  The procedure outputs the value of the Item parameter as an
  enumeration literal.  If the sequence of characters produced
  has fewer than the characters specified by the Width parameter,
  trailing spaces are output to make up the difference.
  @node !Io.Io.Echo_Line

  procedure Echo_Line (Item : String := "");

  Writes a string to the current error file (by default, the Message
  window) and advances the line.

  This procedure calls the Put procedure for the specified string
  and then calls the New_Line procedure with a spacing of 1 on the
  current error file.
  @node !Io.Io.End_Of_File

  function End_Of_File (File : File_Type) return Boolean;
  function End_Of_File return Boolean;

  Returns true if a file terminator or the combination of a line, a
  page, and a file terminator is the next item to be read from the
  file; otherwise, the function returns false.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.End_Of_Line

  function End_Of_Line (File : File_Type) return Boolean;
  function End_Of_Line return Boolean;

  Returns true if a line terminator or a file terminator is the next
  item to be read from the file; otherwise, the function returns
  false.

  If a File parameter is omitted, the current default file is
  understood to be specified.

  @node !Io.Io.End_Of_Page

  function End_Of_Page (File : File_Type) return Boolean;
  function End_Of_Page return Boolean;

  Returns true if a file terminator or the combination of a line
  and a page terminator is the next item to be read from the file;
  otherwise, the function returns false.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Field

  subtype Field is Integer range 0 .. Integer'Last;

  Specifies the range of possible values for the number of character
  positions used in formatting strings that represent discrete or
  real values.
  @node !Io.Io.File_Mode

  subtype File_Mode is Text_Io.File_Mode;

  Specifies the mode of access for which a file is open.

  In_File mode denotes a file with read-only access; Out_File mode
  denotes a file with write-only access.
  @node !Io.Io.File_Type

  type File_Type is private;

  Defines a file handle type for files to be processed by operations
  in this package.
  @node !Io.Io.Flush

  procedure Flush (File : File_Type);

  Causes any characters currently in internal buffers and not yet in
  the file to be forced out to the file.

  The procedure can be used to force logging output from programs at
  key points out to files so that the intermediate contents of the
  log can be viewed by the Rational Editor.
  @node !Io.Io.Form

  function Form (File : File_Type) return String;

  Currently returns the null string ("") in all cases.

  When the Form parameter to the Create and Open procedures is
  supported in the future, this function will return the Form value
  provided in the call to the Create or the Open procedure.
  @node !Io.Io.Get

  procedure Get (File :     File_Type;
                Item : out Character);
  procedure Get (Item : out Character);

  Reads a character from a file.

  After skipping any line and page terminators, this procedure reads
  the next character from the specified input file and returns the
  value of this character in the Item parameter.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Get

  procedure Get (File :     File_Type;
                Item : out String);
  procedure Get (Item : out String);

  Reads a string from a file.

  This procedure determines the length of the specified string and
  attempts that number of get operations for successive characters of
  the string.  No operation is performed if the string is null.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Get

  procedure Get (File        :     File_Type;
                Item        : out String;
                Last        : out Natural;
                End_Of_Line : out Boolean;
                End_Of_Page : out Boolean;
                End_Of_File : out Boolean);

  Reads part or all of a line from a file.

  This procedure determines the length of the specified string and
  attempts that number of get operations for successive characters
  of the string up to the end of the current line, not including
  terminators (no operation is performed if the string is null).  The
  index of the last character read is returned in the Last parameter.
  If no characters are read, the Last parameter contains a value one
  less than Item'First.

  The procedure also returns an indication of whether or not various
  terminators are encountered.
  @node !Io.Io.Get

  procedure Get (File  :     File_Type;
                Item  : out Integer;
                Width :     Field      := 0);
  procedure Get (Item  : out Integer;
                Width :     Field    := 0);

  Reads an integer value from a file.

  If the value of the Width parameter is 0, the Get procedure skips
  any leading blanks, line terminators, or page terminators, reads
  a plus or a minus sign if present, and then reads according to the
  syntax of an integer literal (which may be a based literal).  If a
  nonzero value of Width is supplied, then exactly Width characters
  or the characters (possibly none) up to a line terminator are
  input, whichever comes first; any skipped leading blanks are
  included in the count.

  The procedure returns, in the Item parameter, the value of the
  Integer type that corresponds to the sequence input.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Get

  procedure Get (File  :     File_Type;
                Item  : out Float;
                Width :     Field      := 0);
  procedure Get (Item  : out Float;
                Width :     Field  := 0);

  Reads a floating-point number from a file.

  If the value of the Width parameter is 0, the Get procedure skips
  any leading blanks, line terminators, or page terminators, reads
  a plus or a minus sign if present, and then reads according to
  the syntax of a real literal (which may be a based literal).  If a
  nonzero value of Width is supplied, then exactly Width characters
  or the characters (possibly none) up to a line terminator are
  input, whichever comes first; any skipped leading blanks are
  included in the count.

  The procedure returns, in the Item parameter, the value of Float
  type that corresponds to the sequence input.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Get

  procedure Get (File :     File_Type;
                Item : out Boolean);
  procedure Get (Item : out Boolean);

  Reads the Boolean value from a file.

  After skipping any leading blanks, line terminators, or page
  terminators, the Get procedure reads a Boolean literal in either
  lowercase or uppercase.

  The procedure returns, in the Item parameter, the value of the
  Boolean type that corresponds to the sequence input.

  If a File parameter is omitted, the current default file is read.
  @node !Io.Io.Get_Line

  function Get_Line (File : File_Type) return String;
  function Get_Line return String;

  Returns all remaining characters on the current line except for the
  line terminator.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Get_Line

  procedure Get_Line (File :     File_Type;
                     Item : out String;
                     Last : out Natural);
  procedure Get_Line (Item : out String;
                     Last : out Natural);

  Reads a string on a single line from a file, not including the line
  terminator.

  This procedure replaces successive characters of the specified
  string by successive characters read from the specified input file.
  Reading stops if the end of the line is encountered, in which case
  the Skip_Line procedure is called (in effect) with a spacing of
  1; reading also stops if the end of the string is encountered.
  Characters not replaced are left undefined.

  If characters are read, the Last parameter contains the index value
  such that Item(Last) is the last character replaced (the index of
  the first character replaced is Item'First).  If no characters are
  read, the Last parameter contains an index value that is one less
  than Item'First.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.In_File

  In_File : constant File_Mode := Text_Io.In_File;

  Defines a named constant for the In_File mode.
  @node !Io.Io.Is_Open

  function Is_Open (File : File_Type) return Boolean;

  Returns true if the file handle is open (that is, if it is
  associated with a file); otherwise, the function returns false.
  @node !Io.Io.Line

  function Line (File : File_Type) return Positive_Count;
  function Line return Positive_Count;

  Returns the current line number.

  If a File parameter is omitted, the default file is the current
  output file.
  @node !Io.Io.Line_Length

  function Line_Length (File : File_Type) return Count;
  function Line_Length return Count;

  Returns the maximum line length currently set for the specified
  output file; returns 0 if the line length is unbounded.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Lower_Case

  Lower_Case : constant Type_Set := Text_Io.Lower_Case;

  Defines a value indicating that enumeration literals are to be
  displayed in lowercase.
  @node !Io.Io.Mode

  function Mode (File : File_Type) return File_Mode;

  Returns the current mode of the specified file.
  @node !Io.Io.Name

  function Name (File : File_Type) return String;

  Returns the name of the file currently associated with the
  specified file handle.

  For temporary files, the function returns the unique name provided
  by the Rational Environment during the creation of the file.
  @node !Io.Io.New_Line

  procedure New_Line (File    : File_Type;
                     Spacing : Positive_Count := 1);
  procedure New_Line (Spacing : Positive_Count := 1);

  Adds the specified number of line terminators to the current file,
  forcing subsequent output to the following line.

  For a spacing of 1, the procedure outputs a line terminator, sets
  the current column number to 1, and then adds 1 to the current line
  number.  If the current line number is already greater than or
  equal to the maximum page length for a bounded page length, a page
  terminator is output, the current page number is increased by 1,
  and the current line number is set to 1.

  For a spacing greater than 1, the above actions are performed the
  number of times specified by the Spacing parameter.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.New_Page

  procedure New_Page (File : File_Type);
  procedure New_Page;

  Outputs a page terminator.

  The procedure outputs a line terminator if the current line is not
  terminated or if the current page is empty (that is, if the current
  column and line numbers are both equal to 1).  It then outputs a
  page terminator, which terminates the current page, adds 1 to the
  current page number, and sets the current column and line numbers
  to 1.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Number_Base

  subtype Number_Base is Integer range 2 .. 16;

  Specifies the range of possible values for the radix of numeric
  values to be written or read.
  @node !Io.Io.Open

  procedure Open (File : in out File_Type;
                 Mode :        File_Mode := Out_File;
                 Name :        String;
                 Form :        String    := "");
  procedure Open (File   : in out File_Type;
                 Mode   :        File_Mode;
                 Object :        Directory.Version;
                 Form   :        String            := "");

  Associates the file handle with an existing file having the
  specified name or version and sets the mode of the file to the
  specified mode.

  After a file is opened with the Out_File mode, the page length and
  line length are unbounded.  After a file is opened with the In_File
  or Out_File mode, the current column, current line, and current
  page numbers are set to 1.
  @node !Io.Io.Out_File

  Out_File : constant File_Mode := Text_Io.Out_File;

  Defines a named constant for the Out_File mode.
  @node !Io.Io.Page

  function Page (File : File_Type) return Positive_Count;
  function Page return Positive_Count;

  Returns the current page number.

  If a File parameter is omitted, the default file is the current
  output file.
  @node !Io.Io.Page_Length

  function Page_Length (File : File_Type) return Count;
  function Page_Length return Count;

  Returns the maximum page length currently set for the specified
  output file; returns 0 if the page length is unbounded.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Pop_Error

  procedure Pop_Error;

  Pops the current error file off the stack of error files.

  The procedure sets the current error file to be a file value
  previously saved by a Set_Error procedure.  The current value of
  the error file is not closed and will not be closed automatically
  at the end of the job because it is no longer on the stack.
  @node !Io.Io.Pop_Input

  procedure Pop_Input;

  Pops the current input file off the stack of input files.

  The procedure sets the current input file to be a file value
  previously saved by a Set_Input procedure.  The current value of
  the input file is not closed and will not be closed automatically
  at the end of the job because it is no longer on the stack.
  @node !Io.Io.Pop_Output

  procedure Pop_Output;

  Pops the current output file off the stack of output files.

  The procedure sets the current output file to be a file value
  previously saved by a Set_Output procedure.  The current value of
  the output file is not closed and will not be closed automatically
  at the end of the job because it is no longer on the stack.
  @node !Io.Io.Positive_Count

  subtype Positive_Count is Count range 1 .. Count'Last;

  Specifies the range of possible values for the number of lines to
  be skipped or inserted.
  @node !Io.Io.Put

  procedure Put (File : File_Type;
                Item : Character);
  procedure Put (Item : Character);

  Writes a character to a file.

  If the line length of the specified output file is bounded (that
  is, does not have the conventional value 0) and the current column
  number exceeds it, the procedure has the effect of calling the
  New_Line procedure with a spacing of 1.  Then the procedure outputs
  the specified character to the file.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Put

  procedure Put (File : File_Type;
                Item : String);
  procedure Put (Item : String);

  Writes a string to a file.

  Determines the length of the specified string and attempts that
  number of put operations for successive characters of the string.
  No operation is performed if the string is null.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Put

  procedure Put (File  : File_Type;
                Item  : Integer;
                Width : Field       := 0;
                Base  : Number_Base := 10);
  procedure Put (Item  : Integer;
                Width : Field       := 0;
                Base  : Number_Base := 10);

  Writes an integer value to a file.

  Values are output as decimal or based literals, without underline
  characters or exponents, and are preceded by a minus sign if
  negative.  The format (which includes any leading spaces and a
  minus sign) can be specified by an optional field Width parameter.
  Values of widths of fields in output formats are of the nonnegative
  integer Field subtype.  Values of bases are of the integer
  Number_Base subtype.

  This procedure outputs the value of the Item parameter as an
  integer literal, with no underlines, no exponent, and no leading
  zeros (but a single zero for the value 0), and with a preceding
  minus sign for a negative value.

  If the resulting sequence of characters to be output has fewer
  characters than specified in the Width parameter, leading spaces
  are output to make up the difference.

  This procedure uses the syntax for decimal literal if the Base
  parameter has the value 10; otherwise, it uses the syntax for based
  literal, with any letters in uppercase.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Put

  procedure Put (File : File_Type;
                Item : Float;
                Fore : Field     := 2;
                Aft  : Field     := 14;
                Exp  : Field     := 3);
  procedure Put (Item : Float;
                Fore : Field := 2;
                Aft  : Field := 14;
                Exp  : Field := 3);

  Writes a floating-point value to a file.

  Values are output as decimal literals without underline
  characters.  The format of each value output consists of a Fore
  field, a decimal point, an Aft field, and (if a nonzero Exp
  parameter is supplied) the letter E and an Exp field.  The two
  possible formats thus correspond to:
      Fore . Aft

  and:
      Fore . Aft E Exp

  with no spaces between these fields.  The Fore field can include
  leading spaces and a minus sign for negative values.  The Aft
  field includes only decimal digits (possibly with trailing zeros).
  The Exp field includes the sign (plus or minus) and the exponent
  (possibly with leading zeros).

  The Put procedure outputs the value of the Item parameter as a
  decimal literal with the format defined by the Fore, Aft, and Exp
  parameters.  If the value is negative, a minus sign is included in
  the integer part.  If Exp has the value 0, the integer part to be
  output has as many digits as needed to represent the integer part
  of the value of the Item parameter, overriding Fore if necessary,
  or it consists of the digit 0 if the value of Item has no integer
  part.

  If Exp has a value greater than 0, the integer part to be output
  has a single digit, which is nonzero except for the value 0.0 of
  the Item parameter.

  In both cases, however, if the integer part to be output has fewer
  than Fore characters, including any minus sign, leading spaces
  are output to make up the difference.  The number of digits of the
  fractional part is specified by Aft, or it is 1 if Aft equals 0.
  The value is rounded; a value of exactly one-half in the last place
  can be rounded either up or down.

  If Exp has the value 0, there is no exponent part.  If Exp has a
  value greater than 0, the exponent part to be output has as many
  digits as needed to represent the exponent part of the value of the
  Item parameter (for which a single-digit integer part is used), and
  it includes an initial sign (plus or minus).  If the exponent part
  to be output has fewer than Exp characters, including the sign,
  leading zeros precede the digits to make up the difference.  For
  the value 0.0 of the Item parameter, the exponent has the value 0.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Put

  procedure Put (File  : File_Type;
                Item  : Boolean;
                Width : Field      := 0);
  procedure Put (Item  : Boolean;
                Width : Field    := 0);

  Writes the Boolean value to a file.

  Values are output using either uppercase or lowercase letters for
  identifiers.

  The format (which includes any trailing spaces) can be specified by
  an optional field Width parameter.

  The procedure outputs the value of the Item parameter as an
  enumeration literal.  If the sequence of characters produced has
  fewer characters than specified by the Width parameter, trailing
  spaces are output to make up the difference.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Put_Line

  procedure Put_Line (File : File_Type;
                     Item : String);
  procedure Put_Line (Item : String);

  Writes a string to a file and advances the line.

  This procedure calls the Put procedure for the specified string and
  then calls the New_Line procedure with a spacing of 1.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Reset

  procedure Reset (File : in out File_Type;
                  Mode :        File_Mode);
  procedure Reset (File : in out File_Type);

  Resets the specified file so that reading from or writing to its
  elements can be restarted from the beginning of the file.

  If a Mode parameter is supplied, the mode of the specified file
  handle is set to the specified mode.

  If the file has the current Out_File mode, this procedure
  terminates the current page and outputs a file terminator.
  @node !Io.Io.Reset_Error

  procedure Reset_Error;

  Closes the current error file and pops it off the stack of error
  files.

  The procedure sets the current error file to be a file value
  previously saved by a Set_Error procedure.  The current value
  of the error file is closed.
  @node !Io.Io.Reset_Input

  procedure Reset_Input;

  Closes the current input file and pops it off the stack of input
  files.

  The procedure sets the current input file to be a file value
  previously saved by a Set_Input procedure.  The current value
  of the input file is closed.
  @node !Io.Io.Reset_Output

  procedure Reset_Output;

  Closes the current output file and pops it off the stack of output
  files.

  The procedure sets the current output file to be a file value
  previously saved by a Set_Output procedure.  The current value of
  the output file is closed.

  @node !Io.Io.Save

  procedure Save (File : File_Type);

  Causes the current contents of the file to be permanently saved
  after any characters currently in internal buffers and not yet in
  the file are forced out to the file using the Flush procedure.

  The procedure can be used to force logging output from programs
  at key points out to files so that the intermediate snapshots of
  the logs can be saved if the program terminates before the file is
  closed normally.
  @node !Io.Io.Set_Col

  procedure Set_Col (File : File_Type;
                    To   : Positive_Count);
  procedure Set_Col (To : Positive_Count);

  Sets the current column number of the specified file.

  If the file mode is Out_File:

  If the value specified by the To parameter is greater than the
  current column number, this procedure outputs spaces, adding 1
  to the current column number after each space, until the current
  column number equals the specified value.  If the value specified
  by To is equal to the current column number, there is no effect.
  If the value specified by To is less than the current column
  number, the procedure has the effect of calling the New_Line
  procedure (with a spacing of 1), and then it outputs (To - 1)
  spaces and sets the current column number to the specified value.

  If the file mode is In_File:

  The procedure reads (and discards) individual characters, line
  terminators, and page terminators until the next character to be
  read has a column number that equals the value specified by To;
  there is no effect if the current column number already equals this
  value.  Each transfer of a character or terminator maintains the
  current column, line, and page numbers in the same way that a Get
  or a Get_Line procedure does.

  If a File parameter is omitted, the default file is the current
  output file.

  The column number, line number, and page number are allowed to
  exceed Count'Last (as a consequence of the input or output of
  sufficiently many characters, lines, or pages).
  @node !Io.Io.Set_Error

  procedure Set_Error (File : File_Type);
  procedure Set_Error (Name : String := ">>FILE NAME<<");

  Sets the current default error file to the specified file handle or
  file and pushes the file onto the stack of error files.

  If a filename is specified, the file is opened with Out_File mode
  before it is set to be the default output file.  A file is created
  if one does not exist.

  Any files on the stack when a job terminates are automatically
  closed.
  @node !Io.Io.Set_Input

  procedure Set_Input (File : File_Type);
  procedure Set_Input (Name : String := "<SELECTION>");

  Sets the current default input file to the specified file handle or
  file and pushes the file onto the stack of input files.

  If a filename is specified, the file is opened with In_File mode
  before it is set to be the default input file.  A file is created if
  one does not exist.

  Any files on the stack when a job terminates are automatically
  closed.
  @node !Io.Io.Set_Line

  procedure Set_Line (File : File_Type;
                     To   : Positive_Count);
  procedure Set_Line (To : Positive_Count);

  Sets the current line number of the file.

  If the file mode is Out_File:

  If the value specified by the To parameter is greater than the
  current line number, the procedure has the effect of repeatedly
  calling the New_Line procedure (with a spacing of 1) until the
  current line number equals the specified value.  If the value
  specified by To is equal to the current line number, there is no
  effect.  If the value specified by To is less than the current
  line number, the procedure has the effect of calling the New_Page
  procedure followed by a call to the New_Line procedure with a
  spacing equal to (To - 1).

  If the file mode is In_File:

  The procedure has the effect of repeatedly calling the Skip_Line
  procedure (with a spacing of 1) until the current line number
  equals the value specified by To; there is no effect if the current
  line number already equals this value.  (Short pages will be
  skipped until a page is reached that has a line at the specified
  line position.)

  If a File parameter is omitted, the default file is the current
  output file.

  The column number, line number, and page number are allowed to
  exceed Count'Last (as a consequence of the input or output of
  sufficiently many characters, lines, or pages).
  @node !Io.Io.Set_Line_Length

  procedure Set_Line_Length (File : File_Type;
                            To   : Count);
  procedure Set_Line_Length (To : Count);

  Sets the maximum line length of the specified output file to the
  number of characters specified by the To parameter.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Set_Output

  procedure Set_Output (File : File_Type);
  procedure Set_Output (Name : String := ">>FILE NAME<<");

  Sets the current default output file to the specified file handle
  or file and pushes the file onto the stack of output files.

  If a filename is specified, the file is opened with Out_File mode
  before it is set to be the default output file.  A file is created
  if one does not exist.

  Any files on the stack when a job terminates are automatically
  closed.
  @node !Io.Io.Set_Page_Length

  procedure Set_Page_Length (File : File_Type;
                            To   : Count);
  procedure Set_Page_Length (To : Count);

  Sets the maximum page length of the specified output file to the
  number of lines specified by the To parameter.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Skip_Line

  procedure Skip_Line (File    : File_Type;
                      Spacing : Positive_Count := 1);
  procedure Skip_Line (Spacing : Positive_Count := 1);

  Ignores all remaining characters in the subsequent lines
  (specified by the Spacing parameter) and sets the current line
  to the following line.

  For a spacing of 1, this procedure reads and discards all
  characters until a line terminator has been read, and then sets
  the current column number to 1.  If the line terminator is not
  immediately followed by a page terminator, the current line
  number is increased by 1.  Otherwise, if the line terminator is
  immediately followed by a page terminator, the page terminator is
  skipped, the current page number is increased by 1, and the current
  line number is set to 1.

  For a spacing greater than 1, the above actions are performed the
  number of times specified by the Spacing parameter.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Skip_Page

  procedure Skip_Page (File : File_Type);
  procedure Skip_Page;

  Skips past all input until a page terminator is read.

  This procedure reads and discards all characters and line
  terminators until a page terminator has been read.  It then adds
  1 to the current page number and sets the current column and line
  numbers to 1.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Standard_Error

  function Standard_Error return File_Type;
  function Standard_Error return Text_Io.File_Type;

  Returns the handle to the standard error file (by default, the
  Message window).
  @node !Io.Io.Standard_Input

  function Standard_Input return File_Type;

  Returns the handle to the standard input file.
  @node !Io.Io.Standard_Output

  function Standard_Output return File_Type;

  Returns the handle to the standard output file.
  @node !Io.Io.Type_Set

  subtype Type_Set is Text_Io.Type_Set;

  Specifies the case in which enumeration literals are to be
  displayed.
  @node !Io.Io.Unbounded

  Unbounded : constant Count := Text_Io.Unbounded;

  Denotes an unbounded line and/or page length.
  @node !Io.Io.Upper_Case

  Upper_Case : constant Type_Set := Text_Io.Upper_Case;

  Defines a value indicating that enumeration literals are to be
  displayed in uppercase.

  This procedure calls a procedure once with an open file handle
  with mode In_File corresponding to each of the files matched by the
  wildcard or filename specified by the input parameter.  It can be
  used to perform an operation repeatedly over a set of files.

  The procedure's formal parameter list is:
  generic
    with procedure Process (File : in out File_Type) is <>;
    with procedure Note_Error (Message : String) is Io.Put_Line;
  procedure Wildcard_Iterator (Names : String);

  The Process procedure is called for each file.  The Note_Error
  procedure is used to report exceptions.
  @node !Io.Io.Note_Error

  with procedure Note_Error (Message : String) is Io.Put_Line;

  Reports errors and exceptions encountered in the processing of
  each file matched by the wildcard passed to the Wildcard_Iterator
  procedure.

  If no procedure is provided for this generic formal in an
  instantiation of the Wildcard_Iterator, the Put_Line procedure
  will be used.
  @node !Io.Io.Process

  with procedure Process (File : in out File_Type) is <>;

  Performs the processing on each file matched by the wildcard.

  This procedure will be called once for each file matched by the
  wildcard.  The file will be opened with In_File mode before the
  Process procedure is called by the Wildcard_Iterator procedure.

  If no procedure is provided for this generic formal in an
  instantiation of the Wildcard_Iterator, a procedure (visible at
  the point of instantiation) with the name Process and a matching
  parameter profile will be used.  Lack of either an explicit
  parameter or such a visible procedure is a semantic error.
  @node !Io.Io.Wildcard_Iterator

  procedure Wildcard_Iterator (Names : String);

  Resolves the wildcard or filename provided.

  For each file matched, the procedure performs the following
  processing in sequence:

  o Opens the file with In_File mode

  o Calls the Process procedure

  o Closes the file

  If errors are encountered, the Note_Error procedure is called and
  processing continues.
  @node !Io.Io.Enumeration_Io

  This package provides facilities for enumeration I/O.

  Values are output using either uppercase or lowercase letters for
  identifiers.  This is specified by the Set parameter, which is of
  the enumeration Type_Set subtype.

  The format (which includes any trailing spaces) can be specified by
  an optional field Width parameter.
  @node !Io.Io.Enumeration_Io.Default_Setting

  Default_Setting : Type_Set := Upper_Case;

  Denotes the default type set of values to be output.
  @node !Io.Io.Enumeration_Io.Default_Width

  Default_Width : Field := 0;

  Denotes the default number of characters to be output.
  @node !Io.Io.Enumeration_Io.Enum

  type Enum is (<>);

  Denotes the enumeration type to be used in instantiating this
  package.
  @node !Io.Io.Enumeration_Io.Get

  procedure Get (File :     File_Type;
                Item : out Enum);
  procedure Get (Item : out Enum);

  Reads an enumeration value from a file.

  After skipping any leading blanks, line terminators, or page
  terminators, the procedure reads an enumeration literal of Enum
  type in either lowercase or uppercase.  If Enum is of Character
  type, the literal value must include the apostrophes.

  The procedure returns, in the Item parameter, the value of the Enum
  type that corresponds to the sequence input.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Enumeration_Io.Get

  procedure Get (From :     String;
                Item : out Enum;
                Last : out Positive);

  Reads an enumeration value from a string.

  The procedure reads an enumeration value from the beginning of the
  specified string, following the same rule as the Get procedure that
  reads an enumeration value from a file but treating the end of the
  string as a file terminator.

  The procedure returns, in the Item parameter, the value of the Enum
  type that corresponds to the sequence input.  It returns, in the
  Last parameter, the index value such that From(Last) is the last
  character read.
  @node !Io.Io.Enumeration_Io.Put

  procedure Put (File  : File_Type;
                Item  : Enum;
                Width : Field     := Default_Width;
                Set   : Type_Set  := Default_Setting);
  procedure Put (Item  : Enum;
                Width : Field    := Default_Width;
                Set   : Type_Set := Default_Setting);

  Writes an enumeration value to a file.

  The procedure outputs the value of the Item parameter as an
  enumeration literal (either an identifier or a character literal).
  The optional Set parameter indicates whether lowercase or
  uppercase letters are used for identifiers; it has no effect
  for character literals.  If the sequence of characters produced
  has fewer than the number of characters specified by the Width
  parameter, trailing spaces are output to make up the difference.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Enumeration_Io.Put

  procedure Put (To   : out String;
                Item :     Enum;
                Set  :     Type_Set := Default_Setting);

  Writes an enumeration value to a string.

  The procedure outputs the value of the Item parameter to the
  specified string, following the same rule as for output to a file,
  using the length of the specified string as the value for the Width
  parameter.
  @node !Io.Io.Fixed_Io

  This package provides facilities for fixed-point I/O.

  Values are output as decimal literals without underline
  characters.  The format of each value output consists of a Fore

  field, a decimal point, an Aft field, and (if a nonzero Exp
  parameter is supplied) the letter E and an Exp field.  The two
  possible formats thus correspond to:
      Fore . Aft

  and:
      Fore . Aft E Exp

  with no spaces between these fields.  The Fore field can include
  leading spaces and a minus sign for negative values.  The Aft
  field includes only decimal digits (possibly with trailing zeros).
  The Exp field includes the sign (plus or minus) and the exponent
  (possibly with leading zeros).
  @node !Io.Io.Fixed_Io.Default_Aft

  Default_Aft : Field := Num'Aft;

  Denotes the default number of characters to be used after the
  decimal point in output procedures.
  @node !Io.Io.Fixed_Io.Default_Exp

  Default_Exp : Field := 0;

  Denotes the default number of exponent characters to be used in
  output procedures.
  @node !Io.Io.Fixed_Io.Default_Fore

  Default_Fore : Field := Num'Fore;

  Denotes the default number of characters to be used before the
  decimal point in output procedures.
  @node !Io.Io.Fixed_Io.Get

  procedure Get (File  :     File_Type;
                Item  : out Num;
                Width :     Field      := 0);
  procedure Get (Item  : out Num;
                Width :     Field := 0);

  Reads a fixed-point value from a file.

  If the value of the Width parameter is 0, the procedure skips any
  leading blanks, line terminators, or page terminators, reads a
  plus or a minus sign if present, and then reads according to the
  syntax of a real literal (which may be a based literal).  If a
  nonzero value of the Width parameter is supplied, then exactly
  Width characters are input, or the characters (possibly none) up
  to a line terminator are input, whichever comes first; any skipped
  leading blanks are included in the count.

  The procedure returns, in the Item parameter, the value of the Num
  type that corresponds to the sequence input.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Fixed_Io.Get

  procedure Get (From :     String;
                Item : out Num;
                Last : out Positive);

  Reads a fixed-point value from a string.

  This procedure reads a real value from the beginning of the
  specified string, following the same rule as the Get procedure
  that reads a real value from a file but treating the end of the
  string as a file terminator.

  The procedure returns, in the Item parameter, the value of the Num
  type that corresponds to the sequence input.  It returns, in the
  Last parameter, the index value such that From(Last) is the last
  character read.
  @node !Io.Io.Fixed_Io.Num

  type Num is delta <>;

  Denotes the fixed-point type for which the package is being
  instantiated.
  @node !Io.Io.Fixed_Io.Put

  procedure Put (File : File_Type;
                Item : Num;
                Fore : Field     := Default_Fore;
                Aft  : Field     := Default_Aft;
                Exp  : Field     := Default_Exp);
  procedure Put (Item : Num;
                Fore : Field := Default_Fore;
                Aft  : Field := Default_Aft;
                Exp  : Field := Default_Exp);

  Writes a fixed-point value to a file.

  The Put procedure outputs the value of the Item parameter as a
  decimal literal with the format defined by the Fore, Aft, and Exp
  parameters.  If the value is negative, a minus sign is included in
  the integer part.  If Exp has the value 0, the integer part to be
  output has as many digits as needed to represent the integer part
  of the value of the Item parameter, overriding Fore if necessary,
  or it consists of the digit 0 if the value of Item has no integer
  part.

  If Exp has a value greater than 0, the integer part to be output
  has a single digit, which is nonzero except for the value 0.0 of
  the Item parameter.

  In both cases, however, if the integer part to be output has fewer
  than Fore characters, including any minus sign, leading spaces
  are output to make up the difference.  The number of digits of the
  fractional part is specified by Aft, or it is 1 if Aft equals 0.
  The value is rounded; a value of exactly one-half in the last place
  can be rounded either up or down.

  If Exp has the value 0, there is no exponent part.  If Exp has a
  value greater than 0, the exponent part to be output has as many
  digits as needed to represent the exponent part of the value of
  the Item parameter (for which a single-digit integer part is used)
  and includes an initial sign (plus or minus).  If the exponent part
  to be output has fewer than Exp characters, including the sign,
  leading zeros precede the digits to make up the difference.  For
  the value 0.0 of Item, the exponent has the value 0.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Fixed_Io.Put

  procedure Put (To   : out String;
                Item :     Num;
                Aft  :     Field  := Default_Aft;
                Exp  :     Field  := Default_Exp);

  Writes a fixed-point value to a string.

  This procedure outputs the value of the Item parameter to the
  specified string, following the same rule as for output to a
  file, using a value for the width of the Fore field such that the
  sequence of characters output exactly fills the string, including
  any leading spaces.

  For an item with a positive value, if output to a string exactly
  fills the string without leading spaces, then output of the
  corresponding negative value raises the Io_Exceptions.Layout_Error
  exception.
  @node !Io.Io.Float_Io

  This package provides facilities for floating-point I/O.

  Values are output as decimal literals without underline
  characters.  The format of each value output consists of a Fore
  field, a decimal point, an Aft field, and (if a nonzero Exp
  parameter is supplied) the letter E and an Exp field.  The two
  possible formats thus correspond to:
      Fore . Aft

  and:
      Fore . Aft E Exp

  with no spaces between these fields.  The Fore field can include
  leading spaces and a minus sign for negative values.  The Aft
  field includes only decimal digits (possibly with trailing zeros).
  The Exp field includes the sign (plus or minus) and the exponent
  (possibly with leading zeros).
  @node !Io.Io.Float_Io.Default_Aft

  Default_Aft : Field := Num'Digits - 1;

  Denotes the default width to be used after the decimal point in
  output procedures.
  @node !Io.Io.Float_Io.Default_Exp

  Default_Exp : Field := 3;

  Denotes the default exponent width to be used in output
  procedures.
  @node !Io.Io.Float_Io.Default_Fore

  Default_Fore : Field := 2;

  Denotes the default width to be used before the decimal point in
  output procedures.
  @node !Io.Io.Float_Io.Get

  procedure Get (File  :     File_Type;
                Item  : out Num;
                Width :     Field      := 0);
  procedure Get (Item  : out Num;
                Width :     Field := 0);

  Reads a floating-point number from a file.

  If the value of the Width parameter is 0, the procedure skips any
  leading blanks, line terminators, or page terminators, reads a
  plus or a minus sign if present, and then reads according to the
  syntax of a real literal (which may be a based literal).  If a
  nonzero value of the Width parameter is supplied, then exactly
  Width characters are input, or the characters (possibly none) up
  to a line terminator are input, whichever comes first; any skipped
  leading blanks are included in the count.

  The procedure returns, in the Item parameter, the value of the Num
  type that corresponds to the sequence input.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Float_Io.Get

  procedure Get (From :     String;
                Item : out Num;
                Last : out Positive);

  Reads a floating-point value from a string.

  This procedure reads a real value from the beginning of the
  specified string, following the same rule as the Get procedure
  that reads a real value from a file but treating the end of the
  string as a file terminator.

  The procedure returns, in the Item parameter, the value of the Num
  type that corresponds to the sequence input.  It returns, in the
  Last parameter, the index value such that From(Last) is the last
  character read.
  @node !Io.Io.Float_Io.Num

  type Num is digits <>;

  Defines the floating-point type of the items that form the elements
  in the I/O stream.
  @node !Io.Io.Float_Io.Put

  procedure Put (File : File_Type;
                Item : Num;
                Fore : Field     := Default_Fore;
                Aft  : Field     := Default_Aft;
                Exp  : Field     := Default_Exp);
  procedure Put (Item : Num;
                Fore : Field := Default_Fore;
                Aft  : Field := Default_Aft;
                Exp  : Field := Default_Exp);

  Writes a floating-point value to a file.

  This procedure outputs the value of the Item parameter as a
  decimal literal with the format defined by the Fore, Aft, and
  Exp parameters.  If the value is negative, a minus sign is included
  in the integer part.  If Exp has the value 0, the integer part to be
  output has as many digits as needed to represent the integer part
  of the value of the Item parameter, overriding Fore if necessary,
  or it consists of the digit 0 if the value of Item has no integer
  part.

  If Exp has a value greater than 0, the integer part to be output
  has a single digit, which is nonzero except for the value 0.0 of
  the Item parameter.

  In both cases, however, if the integer part to be output has fewer
  than Fore characters, including any minus sign, leading spaces
  are output to make up the difference.  The number of digits of the
  fractional part is specified by Aft, or it is 1 if Aft equals 0.
  The value is rounded; a value of exactly one-half in the last place
  can be rounded either up or down.

  If Exp has the value 0, there is no exponent part.  If Exp has a
  value greater than 0, the exponent part to be output has as many
  digits as needed to represent the exponent part of the value of
  the Item parameter (for which a single-digit integer part is used)
  and includes an initial sign (plus or minus).  If the exponent part
  to be output has fewer than Exp characters, including the sign,
  leading zeros precede the digits to make up the difference.  For
  the value 0.0 of Item, the exponent has the value 0.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Float_Io.Put

  procedure Put (To   : out String;
                Item :     Num;
                Aft  :     Field  := Default_Aft;
                Exp  :     Field  := Default_Exp);

  Writes a floating-point value to a string.

  This procedure outputs the value of the Item parameter to the
  specified string, following the same rule as for output to a
  file, using a value for the width of the Fore field such that the
  sequence of characters output exactly fills the string, including
  any leading spaces.

  For an item with a positive value, if output to a string exactly
  fills the string without leading spaces, then output of the
  corresponding negative value raises the Io_Exceptions.Layout_Error
  exception.
  @node !Io.Io.Integer_Io

  This package provides facilities for integer I/O.

  Values are output as decimal or based literals, without underline
  characters or exponents, and preceded by a minus sign if negative.
  The format (which includes any leading spaces and a minus sign)
  can be specified by an optional field Width parameter.  Values of
  widths of fields in output formats are of the nonnegative integer
  Field subtype.  Values of bases are of the integer Number_Base
  subtype.
  @node !Io.Io.Integer_Io.Default_Base

  Default_Base : Number_Base := 10;

  Denotes the default radix base to be used in output procedures.
  @node !Io.Io.Integer_Io.Default_Width

  Default_Width : Field := Num'Width;

  Denotes the default width to be used in output procedures.
  @node !Io.Io.Integer_Io.Get

  procedure Get (File  :     File_Type;
                Item  : out Num;
                Width :     Field      := 0);
  procedure Get (Item  : out Num;
                Width :     Field := 0);

  Reads an integer value from a file.

  If the value of the Width parameter is 0, the procedure skips any
  leading blanks, line terminators, or page terminators, reads a
  plus or a minus sign if present, and then reads according to the
  syntax of an integer literal (which may be a based literal).  If
  a nonzero value of the Width parameter is supplied, then exactly
  Width characters are input, or the characters (possibly none) up
  to a line terminator are input, whichever comes first; any skipped
  leading blanks are included in the count.

  The procedure returns, in the Item parameter, the value of the Num
  type that corresponds to the sequence input.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Integer_Io.Get

  procedure Get (From :     String;
                Item : out Num;
                Last : out Positive);

  Reads an integer value from a string.

  This procedure reads an integer value from the beginning of the
  specified string, following the same rules as the Get procedure
  that reads an integer value from a file but treating the end of the
  string as a file terminator.

  The procedure returns, in the Item parameter, the value of the Num
  type that corresponds to the sequence input.  It returns, in the
  Last parameter, the index value such that From(Last) is the last
  character read.
  @node !Io.Io.Integer_Io.Num

  type Num is range <>;

  Defines the integer type of the items that form the elements in the
  I/O stream.
  @node !Io.Io.Integer_Io.Put

  procedure Put (File  : File_Type;
                Item  : Num;
                Width : Field       := Default_Width;
                Base  : Number_Base := Default_Base);
  procedure Put (Item  : Num;
                Width : Field       := Default_Width;
                Base  : Number_Base := Default_Base);

  Writes an integer value to a file.

  This procedure outputs the value of the Item parameter as an
  integer literal, with no underlines, no exponent, and no leading
  zeros (but a single zero for the value 0), and with a preceding
  minus sign for a negative value.

  If the resulting sequence of characters to be output has fewer
  characters than specified by the Width parameter, leading spaces
  are output to make up the difference.

  The procedure uses the syntax for decimal literal if the Base
  parameter has the value 10 (either explicitly or through
  Default_Base); otherwise, it uses the syntax for based literal,
  with any letters in uppercase.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Io.Integer_Io.Put

  procedure Put (To   : out String;
                Item :     Num;
                Base :     Number_Base := Default_Base);

  Writes an integer value to a string.

  This procedure outputs the value of the Item parameter to the
  specified string, following the same rule as for output to a file,
  using the length of the specified string as the value for the Width
  parameter.
  @node !Io.Io_Exceptions

  The exceptions in package Io_Exceptions can be raised by
  I/O operations.  The general conditions under which these
  exceptions can be raised are described in this section.  Specific
  circumstances under which they can be raised are provided for
  each operation exported by an I/O package.  If more than one
  error condition exists, the corresponding exception that appears
  earliest in the package is the one that is raised.

  Every other I/O package renames one or more of the exceptions
  exported from this package.  Rather than repeat the following
  descriptions in each of these packages, documentation of the
  renaming declarations is omitted in the subsequent sections.

  The Rational Environment provides additional information about
  exceptions raised by the I/O packages that describes why a given
  exception occurred.  This information, typically displayed
  in parentheses after the exception name, is documented in the
  reference entry for each exception.
  @node !Io.Io_Exceptions.Data_Error

  Data_Error : exception;

  Defines an exception raised by the Read procedure if the element
  read cannot be interpreted as a value of the required type.

  This exception is also raised by a Get or Read procedure if an
  input sequence fails to satisfy the required syntax or if the value
  input does not belong to the range of the required type or subtype.

  This exception is also raised by the Read and Write procedures of
  package Polymorphic_Sequential_Io (DIO) if these operations are
  attempted on files containing unsafe types (that is, containing
  access or task types as any of their components).

  The additional information supplied by the Environment when this
  exception is raised has the following meaning:

  o Input_Syntax_Error:  The input value has incorrect syntax.

  o Input_Value_Error:  The input value is out of range.

  o Output_Type_Error:  The output value is an unsafe type.

  o Output_Value_Error:  An attempt has been made to write a value
    out of range.
  @node !Io.Io_Exceptions.Device_Error

  Device_Error : exception;

  Defines an exception raised if an I/O operation cannot be completed
  because of a malfunction of the underlying system.

  The additional information supplied by the Environment when this
  exception is raised has the following meaning:

  o Device_Data_Error:  A hardware error such as a parity error has
    occurred.

  o Illegal_Reference_Error:  An illegal reference has been
    attempted.

  o Illegal_Heap_Access_Error:  An Illegal_Heap_Access exception was
    raised when the operation was attempted.

  o Page_Nonexistent_Error:  A nonexistent page was referenced.

  o Write_To_Read_Only_Page_Error:  A write to a read-only page was
    attempted.
  @node !Io.Io_Exceptions.End_Error

  End_Error : exception;

  Defines an exception raised by an attempt to skip (read past) the
  end of a file.
  @node !Io.Io_Exceptions.Layout_Error

  Layout_Error : exception;

  Defines an exception raised in TIO, packages Text_Io and Io, by
  a call to operations that violate the limits of Count and by
  an attempt to put too many characters to a string; also raised
  in package Window_Io (DIO) by an attempt to position the cursor
  outside the image boundary.

  The additional information supplied by the Environment when this
  exception is raised has the following meaning:

  o Column_Error:  A column exceeds the line or page length.

  o Illegal_Position_Error:  A position parameter is illegal.

  o Item_Length_Error:  An item length is too big or small.
  @node !Io.Io_Exceptions.Mode_Error

  Mode_Error : exception;

  Defines an exception raised by specifying a file whose mode
  conflicts with the desired operation.

  For example, this exception is raised by a call to Set_Input or Get
  when a file of the Out_File mode is provided.

  The additional information supplied by the Environment when this
  exception is raised is:

  o Illegal_Operation_On_Infile

  o Illegal_Operation_On_Outfile
  @node !Io.Io_Exceptions.Name_Error

  Name_Error : exception;

  Defines an exception raised by a call to the Create or Open
  procedure if the string given for the Name parameter does not
  allow the identification of a legal unique file.

  The Name_Error exception is raised by the Create procedure under
  any of the following conditions:

  o The filename does not conform to the syntax of a name.

  o An object of the nonfile class with the same name as the filename
    already exists in the context in which the creation is attempted.

  o The context in which the creation is attempted cannot contain
    files.  Files are allowed only in directories or worlds.

  The additional information supplied by the Environment when this
  exception is raised has the following meaning:

  o Ambiguous_Name_Error:  A name does not identify a unique
    object.

  o Illformed_Name_Error:  A name does not conform to the syntax for
    a legal Environment filename.

  o Nonexistent_Directory_Error:  A library in the name does not
    exist.

  o Nonexistent_Object_Error:  The specified object does not exist.

  o Nonexistent_Version_Error:  The specified version of the object
    does not exist.
  @node !Io.Io_Exceptions.Status_Error

  Status_Error : exception;

  Defines an exception raised by an attempt to operate upon a file
  handle that is not open and by an attempt to open a file handle
  that is already open.

  The additional information supplied by the Environment when this
  exception is raised has the following meaning:

  o Already_Open_Error:  The file handle is already open.

  o Not_Open_Error:  The file handle is not open.
  @node !Io.Io_Exceptions.Use_Error

  Use_Error : exception;

  Defines an exception raised if an operation is attempted that is
  not possible for reasons that depend on the file and the executing
  job's access rights.

  This exception is raised by an attempt to create when there are
  objects of nonfile classes with similar names, by an attempt to
  open or reset with a mode that is not supported for the file,
  and by a call to the Open parameter for a terminal object if the
  terminal is already assigned to a job.

  This exception is raised by the Delete procedure, among other
  circumstances, when the corresponding file is an object that cannot
  be deleted.

  This exception is raised by the Create and Open procedures in
  packages Direct_Io and Sequential_Io (DIO) if they are attempted
  with instantiations on unsafe types (that is, types containing
  access or task types as any of their components).

  The additional information supplied by the Environment when this
  exception is raised has the following meaning:

  o Access_Error:  There are insufficient access rights to perform
    the operation.

  o Capacity_Error:  The output file is full.

  o Check_Out_Error:  The object is not checked out using the
    configuration management and version control system.

  o Class_Error:  There is an existing object of a different class.

  o Frozen_Error:  An attempt is made to change a frozen object.

  o Line_Page_Length_Error:  An improper value for line or page
    length is encountered.

  o Lock_Error:  Another job has locked the object.

  o Reset_Error:  The file cannot be reset or have its mode
    changed.

  o Unsupported_Error:  The operation is not supported.
  @node !Io.Text_Io

  This package provides the capabilities for Text_Io as required by
  the Ada Language Reference Manual, Chapter 14.

  The fundamental abstraction provided by package Text_Io is the
  File_Type type.  Objects of this type denote file handles that can
  be mapped to files.  Each file is read or written sequentially, as
  a sequence of characters grouped into lines and a sequence of lines
  grouped into pages.

  At the beginning of program execution, the default input and output
  files are the standard input file and standard output file.  These
  files are open, have the In_File and Out_File modes, respectively,
  and are associated with two implementation-defined files.  These
  files are implicitly closed at the end of each job.

  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 characters of a line are numbered, starting
  from 1; 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
  Positive_Count subtype of the Count type (by convention, the value
  0 of the Count type is used to indicate special conditions).
      type Count is range 0 .. 1_000_000_000
      subtype Positive_Count is Count range 1 .. Count'Last;

  For an output file, a maximum line length 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, a new line
  is automatically started before the value is output.  Further,
  if this new line cannot fit on the current page, for a specified
  maximum page length, a new page is automatically started before the
  value is output.  Functions are provided to determine the maximum
  line and page lengths.  When a file is opened with the Out_File
  mode, both values are 0; by convention, this means that the line
  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 Unbounded constant is provided
  for this purpose.
  @node !Io.Text_Io.Close

  procedure Close (File : in out File_Type);

  Severs the association between the specified file and its
  associated file.

  If the file has the current Out_File mode, it has the effect of
  calling the New_Page procedure, unless the current page is already
  terminated; then it outputs a file terminator.
  @node !Io.Text_Io.Col

  function Col (File : File_Type) return Positive_Count;
  function Col return Positive_Count;

  Returns the current column number.

  If a File parameter is omitted, the default file is the current
  output file.
  @node !Io.Text_Io.Count

  type Count is range 0 .. 1_000_000_000;

  Specifies the range of possible values of the line and page counts
  and the line and page lengths.
  @node !Io.Text_Io.Create

  procedure Create (File : in out File_Type;
                   Mode :        File_Mode := Out_File;
                   Name :        String    := "";
                   Form :        String    := "");

  Establishes a new file with the specified name and associates this
  file with the specified file.

  The specified file is left open.
  @node !Io.Text_Io.Current_Input

  function Current_Input return File_Type;

  Returns the handle to the current default input file.
  @node !Io.Text_Io.Current_Output

  function Current_Output return File_Type;

  Returns the handle to the current default output file.
  @node !Io.Text_Io.Delete

  procedure Delete (File : in out File_Type);

  Deletes the file associated with the specified file.

  The specified file is closed, and the file ceases to exist.
  @node !Io.Text_Io.End_Of_File

  function End_Of_File (File : File_Type) return Boolean;
  function End_Of_File return Boolean;

  Returns true if a file terminator or the combination of a line, a
  page, and a file terminator is the next item to be read from the
  file; otherwise, the function returns false.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.End_Of_Line

  function End_Of_Line (File : File_Type) return Boolean;
  function End_Of_Line return Boolean;

  Returns true if a line terminator or a file terminator is the next
  item to be read from the file; otherwise, the function returns
  false.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.End_Of_Page

  function End_Of_Page (File : File_Type) return Boolean;
  function End_Of_Page return Boolean;

  Returns true if a file terminator or the combination of a line
  terminator and a page terminator is the next item to be read from
  the file; otherwise, the function returns false.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Field

  subtype Field is Integer range 0 .. Integer'Last;

  Specifies the range of possible values for the number of character
  positions used in formatting strings that represent discrete or
  real values.
  @node !Io.Text_Io.File_Mode

  type File_Mode is (In_File, Out_File);

  Specifies the mode of access for which a file is open.

  In_File denotes a file with read-only access; Out_File denotes a
  file with write-only access.
  @node !Io.Text_Io.File_Type

  type File_Type is limited private;

  Defines a file handle type for files to be processed by operations
  in this package.

  @node !Io.Text_Io.Form

  function Form (File : File_Type) return String;

  Returns the null string ("") in all cases.

  When the Form parameter to the Create and Open procedures is
  supported in the future, this function will return the Form value
  provided in the call to the Create or the Open procedure.
  @node !Io.Text_Io.Get

  procedure Get (File :     File_Type;
                Item : out Character);
  procedure Get (Item : out Character);

  Reads a character from a file.

  After skipping any line and page terminators, this procedure reads
  the next character from the specified input file and returns the
  value of this character in the Item parameter.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Get

  procedure Get (File :     File_Type;
                Item : out String);
  procedure Get (Item : out String);

  Reads a string from a file.

  This procedure determines the length of the specified string and
  attempts that number of get operations for successive characters of
  the string.  No operation is performed if the string is null.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Get_Line

  procedure Get_Line (File :     File_Type;
                     Item : out String;
                     Last : out Natural);
  procedure Get_Line (Item : out String;
                     Last : out Natural);

  Reads a string on a single line from a file, not including the line
  terminator.

  This procedure replaces successive characters of the string by
  successive characters read from the specified input file.  Reading
  stops if the end of the line is encountered, in which case the
  Skip_Line procedure is called (in effect) with a spacing of
  1; reading also stops if the end of the string is encountered.
  Characters not replaced are left undefined.

  If characters are read, the Last parameter contains the index value
  such that Item(Last) is the last character replaced (the index of
  the first character replaced is Item'First).  If no characters are
  read, the Last parameter contains an index value that is one less
  than Item'First.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Is_Open

  function Is_Open (File : File_Type) return Boolean;

  Returns true if the file handle is open (that is, if it is
  associated with a file); otherwise, the function returns false.
  @node !Io.Text_Io.Line

  function Line (File : File_Type) return Positive_Count;
  function Line return Positive_Count;

  Returns the current line number.

  If a File parameter is omitted, the default file is the current
  output file.
  @node !Io.Text_Io.Line_Length

  function Line_Length (File : File_Type) return Count;
  function Line_Length return Count;

  Returns the maximum line length currently set for the specified
  output file; returns 0 if the line length is unbounded.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Mode

  function Mode (File : File_Type) return File_Mode;

  Returns the current mode of the specified file.
  @node !Io.Text_Io.Name

  function Name (File : File_Type) return String;

  Returns the name of the file currently associated with the
  specified file handle.

  For temporary files, this function returns the unique name provided
  by the Rational Environment during the creation of the file.
  @node !Io.Text_Io.New_Line

  procedure New_Line (File    : File_Type;
                     Spacing : Positive_Count := 1);
  procedure New_Line (Spacing : Positive_Count := 1);

  Outputs a line terminator.

  For a spacing of 1, this procedure outputs a line terminator, sets
  the current column number to 1, and adds 1 to the current line
  number.  If the current line number is already greater than or
  equal to the maximum page length for a bounded page length, a page
  terminator is output, the current page number is increased by 1,
  and the current line number is set to 1.

  For a spacing greater than 1, the above actions are performed the
  number of times specified by the Spacing parameter.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.New_Page

  procedure New_Page (File : File_Type);
  procedure New_Page;

  Outputs a page terminator.

  This procedure outputs a line terminator if the current line is not
  terminated or if the current page is empty (that is, if the current
  column and line numbers are both equal to 1).  It then outputs a
  page terminator, which terminates the current page, adds 1 to the
  current page number, and sets the current column and line numbers
  to 1.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Number_Base

  subtype Number_Base is Integer range 2 .. 16;

  Specifies the range of possible values for the radix of numeric
  values to be written or read.
  @node !Io.Text_Io.Open

  procedure Open (File : in out File_Type;
                 Mode :        File_Mode := Out_File;
                 Name :        String;
                 Form :        String    := "");

  Associates the specified file with an existing file having the
  specified name and sets the mode of the file to the specified mode.

  After a file is opened with the Out_File mode, the page and line
  lengths are unbounded.  After a file is opened with the In_File or
  Out_File mode, the current column, current line, and current page
  numbers are set to 1.
  @node !Io.Text_Io.Page

  function Page (File : File_Type) return Positive_Count;
  function Page return Positive_Count;

  Returns the current page number.

  If a File parameter is omitted, the default file is the current
  output file.
  @node !Io.Text_Io.Page_Length

  function Page_Length (File : File_Type) return Count;
  function Page_Length return Count;

  Returns the maximum page length currently set for the specified
  output file; returns 0 if the page length is unbounded.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Positive_Count

  subtype Positive_Count is Count range 1 .. Count'Last;

  Specifies the range of possible values for the current line and
  page number.
  @node !Io.Text_Io.Put

  procedure Put (File : File_Type;
                Item : Character);
  procedure Put (Item : Character);

  Writes a character to a file.

  If the line length of the specified output file is bounded (that
  is, does not have the conventional value 0) and the current column
  number exceeds it, this procedure has the effect of calling the
  New_Line procedure with a spacing of 1.  It then outputs the
  specified character to the file.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Put

  procedure Put (File : File_Type;
                Item : String);
  procedure Put (Item : String);

  Writes a string to a file.

  This procedure determines the length of the specified string and
  attempts that number of put operations for successive characters of
  the string.  No operation is performed if the string is null.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Put_Line

  procedure Put_Line (File : File_Type;
                     Item : String);
  procedure Put_Line (Item : String);

  Writes a string to a file and advances the line.

  This procedure calls the Put procedure for the specified string and
  then calls the New_Line procedure with a spacing of 1.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Reset

  procedure Reset (File : in out File_Type;
                  Mode :        File_Mode);
  procedure Reset (File : in out File_Type);

  Resets the specified file so that reading from or writing to its
  elements can be restarted from the beginning of the file.

  If a Mode parameter is supplied, the current mode of the specified
  file is set to the specified mode.

  If the file has the current Out_File mode, this procedure has the
  effect of calling the New_Page procedure, unless the current page
  is already terminated, and it then outputs a file terminator.
  If the new file mode is Out_File, the page and line lengths are
  unbounded.  For all modes, the current column, line, and page
  numbers are set to 1.
  @node !Io.Text_Io.Set_Col

  procedure Set_Col (File : File_Type;
                    To   : Positive_Count);
  procedure Set_Col (To : Positive_Count);

  Sets the current column number of the specified file.

  If the file mode is Out_File:

  If the value specified by the To parameter is greater than the
  current column number, this procedure outputs spaces, adding 1
  to the current column number after each space, until the current
  column number equals the specified value.  If the value specified
  by To is equal to the current column number, there is no effect.
  If the value specified by To is less than the current column
  number, the procedure has the effect of calling the New_Line
  procedure (with a spacing of 1).  It then outputs (To - 1) spaces
  and sets the current column number to the specified value.

  If the file mode is In_File:

  This procedure reads (and discards) individual characters, line
  terminators, and page terminators until the next character to be
  read has a column number that equals the value specified by To;
  there is no effect if the current column number already equals this
  value.  Each transfer of a character or terminator maintains the
  current column, line, and page numbers in the same way that a Get
  or a Get_Line procedure does.

  If a File parameter is omitted, the default file is the current
  output file.

  The column, line, and page numbers are allowed to exceed Count'Last
  (as a consequence of the input or output of sufficiently many
  characters, lines, or pages).
  @node !Io.Text_Io.Set_Input

  procedure Set_Input (File : File_Type);

  Sets the current default input file to the specified file handle.
  @node !Io.Text_Io.Set_Line

  procedure Set_Line (File : File_Type;
                     To   : Positive_Count);
  procedure Set_Line (To : Positive_Count);

  Sets the current line number of the file.

  If the file mode is Out_File:

  If the value specified by the To parameter is greater than the
  current line number, this procedure has the effect of repeatedly
  calling the New_Line procedure (with a spacing of 1) until the
  current line number equals the specified value.  If the value
  specified by To is equal to the current line number, there is no
  effect.  If the value specified by To is less than the current
  line number, it has the effect of calling the New_Page procedure
  followed by a call to the New_Line procedure with a spacing equal
  to (To - 1).

  If the mode is In_File:

  This procedure has the effect of repeatedly calling the Skip_Line
  procedure (with a spacing of 1) until the current line number
  equals the value specified by To; there is no effect if the current
  line number already equals this value.  (Short pages will be
  skipped until a page is reached that has a line at the specified
  line position.)

  If a File parameter is omitted, the default file is the current
  output file.

  The column, line, and page numbers are allowed to exceed Count'Last
  (as a consequence of the input or output of sufficiently many
  characters, lines, or pages).
  @node !Io.Text_Io.Set_Line_Length

  procedure Set_Line_Length (File : File_Type;
                            To   : Count);
  procedure Set_Line_Length (To : Count);

  Sets the maximum line length of the specified output file to the
  number of characters specified by the To parameter.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Set_Output

  procedure Set_Output (File : File_Type);

  Sets the current default output file to the specified file handle.
  @node !Io.Text_Io.Set_Page_Length

  procedure Set_Page_Length (File : File_Type;
                            To   : Count);
  procedure Set_Page_Length (To : Count);

  Sets the maximum page length of the specified output file to the
  number of lines specified by the To parameter.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Skip_Line

  procedure Skip_Line (File    : File_Type;
                      Spacing : Positive_Count := 1);
  procedure Skip_Line (Spacing : Positive_Count := 1);

  Skips all subsequent input until the next line terminator.

  For a spacing of 1, this procedure reads and discards all
  characters until a line terminator has been read, and then it
  sets the current column number to 1.  If the line terminator is
  not immediately followed by a page terminator, the current line
  number is increased by 1.  Otherwise, if the line terminator is
  immediately followed by a page terminator, the page terminator is
  skipped, the current page number is increased by 1, and the current
  line number is set to 1.

  For a spacing greater than 1, the above actions are performed the
  number of times specified by the Spacing parameter.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Skip_Page

  procedure Skip_Page (File : File_Type);
  procedure Skip_Page;

  Skips past all input until a page terminator is read.

  This procedure reads and discards all characters and line
  terminators until a page terminator has been read.  Then it adds
  1 to the current page number and sets the current column and line
  numbers to 1.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Standard_Input

  function Standard_Input return File_Type;

  Returns the handle to the standard input file.
  @node !Io.Text_Io.Standard_Output

  function Standard_Output return File_Type;

  Returns the handle to the standard output file.
  @node !Io.Text_Io.Type_Set

  type Type_Set is (Lower_Case, Upper_Case);

  Specifies the case in which enumeration literals are to be
  displayed.
  @node !Io.Text_Io.Unbounded

  Unbounded: constant Count := 0;

  Denotes an unbounded line and/or page length.
  @node !Io.Text_Io.Enumeration_Io

  This package provides facilities for enumeration I/O.

  Values are output using either uppercase or lowercase letters for
  identifiers.  This is specified by the Set parameter, which is of
  the enumeration Type_Set type.

  The format (which includes any trailing spaces) can be specified by
  an optional field Width parameter.
  @node !Io.Text_Io.Enumeration_Io.Default_Setting

  Default_Setting : Type_Set := Upper_Case;

  Denotes the default type set of values to be output.
  @node !Io.Text_Io.Enumeration_Io.Default_Width

  Default_Width : Field := 0;

  Denotes the default number of characters to be output.
  @node !Io.Text_Io.Enumeration_Io.Enum

  type Enum is (<>);

  Denotes the enumeration type to be used in instantiating this
  package.
  @node !Io.Text_Io.Enumeration_Io.Get

  procedure Get (File :     File_Type;
                Item : out Enum);
  procedure Get (Item : out Enum);

  Reads an enumeration value from a file.

  After skipping any leading blanks, line terminators, or page
  terminators, this procedure reads an enumeration literal of Enum
  type in either lowercase or uppercase.  If Enum is of Character
  type, the literal value must include the apostrophes.

  The procedure returns, in the Item parameter, the value of the Enum
  type that corresponds to the sequence input.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Enumeration_Io.Get

  procedure Get (From :     String;
                Item : out Enum;
                Last : out Positive);

  Reads an enumeration value from a string.

  This procedure reads an enumeration value from the beginning of
  the specified string, following the same rule as the Get procedure
  that reads an enumeration value from a file treating the end of the
  string as a file terminator.

  The procedure returns, in the Item parameter, the value of the Enum
  type that corresponds to the sequence input.  It returns, in the
  Last parameter, the index value such that From(Last) is the last
  character read.
  @node !Io.Text_Io.Enumeration_Io.Put

  procedure Put (File  : File_Type;
                Item  : Enum;
                Width : Field     := Default_Width;
                Set   : Type_Set  := Default_Setting);
  procedure Put (Item  : Enum;
                Width : Field    := Default_Width;
                Set   : Type_Set := Default_Setting);

  Writes an enumeration value to a file.

  This procedure outputs the value of the Item parameter as an
  enumeration literal (either an identifier or a character literal).
  The optional Set parameter indicates whether lowercase or
  uppercase letters are used for identifiers; it has no effect for
  character literals.  If the sequence of characters produced has
  fewer than Width characters, trailing spaces are output to make up
  the difference.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Enumeration_Io.Put

  procedure Put (To   : out String;
                Item :     Enum;
                Set  :     Type_Set := Default_Setting);

  Writes an enumeration value to a string.

  This procedure outputs the value of the Item parameter to the
  specified string, following the same rule as for output to a file,
  using the length of the specified string as the value for the Width
  parameter.
  @node !Io.Text_Io.Fixed_Io

  This package provides facilities for fixed-point I/O.

  Values are output as decimal literals without underline
  characters.  The format of each value output consists of a Fore
  field, a decimal point, an Aft field, and (if a nonzero Exp
  parameter is supplied) the letter E and an Exp field.  The two
  possible formats thus correspond to:
      Fore . Aft

  and:
      Fore . Aft E Exp

  with no spaces between these fields.  The Fore field can include
  leading spaces and a minus sign for negative values.  The Aft
  field includes only decimal digits (possibly with trailing zeros).
  The Exp field includes the sign (plus or minus) and the exponent
  (possibly with leading zeros).
  @node !Io.Text_Io.Fixed_Io.Default_Aft

  Default_Aft : Field := Num'Aft;

  Denotes the default number of characters to be used after the
  decimal point in output procedures.
  @node !Io.Text_Io.Fixed_Io.Default_Exp

  Default_Exp : Field := 0;

  Denotes the default number of exponent characters to be used in
  output procedures.
  @node !Io.Text_Io.Fixed_Io.Default_Fore

  Default_Fore : Field := Num'Fore;

  Denotes the default number of characters to be used after the
  decimal point in output procedures.
  @node !Io.Text_Io.Fixed_Io.Get

  procedure Get (File  :     File_Type;
                Item  : out Num;
                Width :     Field      := 0);
  procedure Get (Item  : out Num;
                Width :     Field := 0);

  Reads a fixed-point value from a file.

  If the value of the Width parameter is 0, this procedure skips
  any leading blanks, line terminators, or page terminators, reads
  a plus or a minus sign if present, and then reads according to
  the syntax of a real literal (which may be a based literal).  If
  a nonzero value of the Width parameter is supplied, then exactly
  Width characters are input, or the characters (possibly none) up
  to a line terminator are input, whichever comes first; any skipped
  leading blanks are included in the count.

  The procedure returns, in the Item parameter, the value of the Num
  type that corresponds to the sequence input.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Fixed_Io.Get

  procedure Get (From :     String;
                Item : out Num;
                Last : out Positive);

  Reads a fixed-point value from a string.

  This procedure reads a real value from the beginning of the
  specified string, following the same rule as the Get procedure
  that reads a real value from a file but treating the end of the
  string as a file terminator.

  The procedure returns, in the Item parameter, the value of the Num
  type that corresponds to the sequence input.  It returns, in the
  Last parameter, the index value such that From(Last) is the last
  character read.
  @node !Io.Text_Io.Fixed_Io.Num

  type Num is delta <>;

  Denotes the fixed-point type for which the package is being
  instantiated.
  @node !Io.Text_Io.Fixed_Io.Put

  procedure Put (File : File_Type;
                Item : Num;
                Fore : Field     := Default_Fore;
                Aft  : Field     := Default_Aft;
                Exp  : Field     := Default_Exp);
  procedure Put (Item : Num;
                Fore : Field := Default_Fore;
                Aft  : Field := Default_Aft;
                Exp  : Field := Default_Exp);

  Writes a fixed-point value to a file.

  The Put procedure outputs the value of the Item parameter as a
  decimal literal with the format defined by the Fore, Aft, and Exp
  parameters.  If the value is negative, a minus sign is included in
  the integer part.  If Exp has the value 0, the integer part to be
  output has as many digits as needed to represent the integer part
  of the value of the Item parameter, overriding Fore if necessary,
  or it consists of the digit 0 if the value of Item has no integer
  part.

  If Exp has a value greater than 0, the integer part to be output
  has a single digit, which is nonzero except for the value 0.0 of
  the Item parameter.

  In both cases, however, if the integer part to be output has fewer
  than Fore characters, including any minus sign, leading spaces
  are output to make up the difference.  The number of digits of the
  fractional part is specified by Aft, or it is 1 if Aft equals 0.
  The value is rounded; a value of exactly one-half in the last place
  can be rounded either up or down.

  If Exp has the value 0, there is no exponent part.  If Exp has
  a value greater than 0, the exponent part to be output has as
  many digits as needed to represent the exponent part of the value
  of Item (for which a single-digit integer part is used), and it
  includes an initial sign (plus or minus).  If the exponent part
  to be output has fewer than Exp characters, including the sign,
  leading zeros precede the digits to make up the difference.  For
  the value 0.0 of Item, the exponent has the value 0.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Fixed_Io.Put

  procedure Put (To   : out String;
                Item :     Num;
                Aft  :     Field  := Default_Aft;
                Exp  :     Field  := Default_Exp);

  Writes a fixed-point value to a string.

  This procedure outputs the value of the Item parameter to the
  specified string, following the same rule as for output to a
  file, using a value for the width of the Fore field such that the
  sequence of characters output exactly fills the string, including
  any leading spaces.

  For an item with a positive value, if output to a string exactly
  fills the string without leading spaces, then output of the
  corresponding negative value raises the Io_Exceptions.Layout_Error
  exception.

  @node !Io.Text_Io.Float_Io

  This package provides facilities for floating-point I/O.

  Values are output as decimal literals without underline
  characters.  The format of each value output consists of a Fore
  field, a decimal point, an Aft field, and (if a nonzero Exp
  parameter is supplied) the letter E and an Exp field.  The two
  possible formats thus correspond to:
      Fore . Aft

  and:
      Fore . Aft E Exp

  with no spaces between these fields.  The Fore field can include
  leading spaces and a minus sign for negative values.  The Aft
  field includes only decimal digits (possibly with trailing zeros).
  The Exp field includes the sign (plus or minus) and the exponent
  (possibly with leading zeros).
  @node !Io.Text_Io.Float_Io.Default_Aft

  Default_Aft : Field := Num'Digits - 1;

  Denotes the default width to be used after the decimal point in
  output procedures.
  @node !Io.Text_Io.Float_Io.Default_Exp

  Default_Exp : Field := 3;

  Denotes the default exponent width to be used in output
  procedures.
  @node !Io.Text_Io.Float_Io.Default_Fore

  Default_Fore : Field := 2;

  Denotes the default width to be used before the decimal point in
  output procedures.
  @node !Io.Text_Io.Float_Io.Get

  procedure Get (File  :     File_Type;
                Item  : out Num;
                Width :     Field      := 0);
  procedure Get (Item  : out Num;
                Width :     Field := 0);

  Reads a floating-point number from a file.

  If the value of the Width parameter is 0, this procedure skips
  any leading blanks, line terminators, or page terminators, reads
  a plus or a minus sign if present, and then reads according to
  the syntax of a real literal (which may be a based literal).  If
  a nonzero value of the Width parameter is supplied, then exactly
  Width characters are input, or the characters (possibly none) up
  to a line terminator are input, whichever comes first; any skipped
  leading blanks are included in the count.

  The procedure returns, in the Item parameter, the value of the Num
  type that corresponds to the sequence input.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Float_Io.Get

  procedure Get (From :     String;
                Item : out Num;
                Last : out Positive);

  Reads a floating-point value from a string.

  This procedure reads a real value from the beginning of the
  specified string, following the same rule as the Get procedure
  that reads a real value from a file but treating the end of the
  string as a file terminator.

  The procedure returns, in the Item parameter, the value of the Num
  type that corresponds to the sequence input.  It returns, in the
  Last parameter, the index value such that From(Last) is the last
  character read.
  @node !Io.Text_Io.Float_Io.Num

  type Num is digits <>;

  Defines the floating-point type of the items that form the elements
  in the I/O stream.
  @node !Io.Text_Io.Float_Io.Put

  procedure Put (File : File_Type;
                Item : Num;
                Fore : Field     := Default_Fore;
                Aft  : Field     := Default_Aft;
                Exp  : Field     := Default_Exp);
  procedure Put (Item : Num;
                Fore : Field := Default_Fore;
                Aft  : Field := Default_Aft;
                Exp  : Field := Default_Exp);

  Writes a floating-point value to a file.

  This procedure outputs the value of the Item parameter as a
  decimal literal with the format defined by the Fore, Aft, and
  Exp parameters.  If the value is negative, a minus sign is included
  in the integer part.  If Exp has the value 0, the integer part to be
  output has as many digits as needed to represent the integer part
  of the value of the Item parameter, overriding Fore if necessary,
  or it consists of the digit 0 if the value of Item has no integer
  part.

  If Exp has a value greater than 0, the integer part to be output
  has a single digit, which is nonzero except for the value 0.0 of
  the Item parameter.

  In both cases, however, if the integer part to be output has fewer
  than Fore characters, including any minus sign, leading spaces
  are output to make up the difference.  The number of digits of the
  fractional part is specified by Aft, or it is 1 if Aft equals 0.
  The value is rounded; a value of exactly one-half in the last place
  can be rounded either up or down.

  If Exp has the value 0, there is no exponent part.  If Exp has
  a value greater than 0, the exponent part to be output has as
  many digits as needed to represent the exponent part of the value
  of Item (for which a single-digit integer part is used), and it
  includes an initial sign (plus or minus).  If the exponent part
  to be output has fewer than Exp characters, including the sign,
  leading zeros precede the digits to make up the difference.  For
  the value 0.0 of Item, the exponent has the value 0.

  If a File parameter is omitted, the current default file is
  understood to be specified.

  @node !Io.Text_Io.Float_Io.Put

  procedure Put (To   : out String;
                Item :     Num;
                Aft  :     Field  := Default_Aft;
                Exp  :     Field  := Default_Exp);

  Writes a floating-point value to a string.

  This procedure outputs the value of the Item parameter to the
  specified string, following the same rule as for output to a
  file, using a value for the width of the Fore field such that the
  sequence of characters output exactly fills the string, including
  any leading spaces.

  For an item with a positive value, if output to a string, the
  parameter exactly fills the string without leading spaces,
  then output of the corresponding negative value raises the
  Io_Exceptions.Layout_Error exception.
  @node !Io.Text_Io.Integer_Io

  This package provides facilities for integer I/O.

  Values are output as decimal or based literals, without underline
  characters or exponents, and preceded by a minus sign if negative.
  The format (which includes any leading spaces and a minus sign)
  can be specified by an optional field Width parameter.  Values of
  widths of fields in output formats are of the nonnegative integer
  Field subtype.  Values of bases are of the integer Number_Base
  subtype.
  @node !Io.Text_Io.Integer_Io.Default_Base

  Default_Base : Number_Base := 10;

  Denotes the default radix base to be used in output procedures.
  @node !Io.Text_Io.Integer_Io.Default_Width

  Default_Width : Field := Num'Width;

  Denotes the default width to be used in output procedures.
  @node !Io.Text_Io.Integer_Io.Get

  procedure Get (File  :     File_Type;
                Item  : out Num;
                Width :     Field      := 0);
  procedure Get (Item  : out Num;
                Width :     Field := 0);

  Reads an integer value from a file.

  If the value of the Width parameter is 0, this procedure skips any
  leading blanks, line terminators, or page terminators, reads a
  plus or a minus sign if present, and then reads according to the
  syntax of an integer literal (which may be a based literal).  If
  a nonzero value of the Width parameter is supplied, then exactly
  Width characters are input, or the characters (possibly none) up
  to a line terminator are input, whichever comes first; any skipped
  leading blanks are included in the count.

  The procedure returns, in the Item parameter, the value of the Num
  type that corresponds to the sequence input.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Integer_Io.Get

  procedure Get (From :     String;
                Item : out Num;
                Last : out Positive);

  Reads an integer value from a string.

  This procedure reads an integer value from the beginning of the
  specified string, following the same rules as the Get procedure
  that reads an integer value from a file but treating the end of the
  string as a file terminator.

  The procedure returns, in the Item parameter, the value of the Num
  type that corresponds to the sequence input.  It returns, in the
  Last parameter, the index value such that From(Last) is the last
  character read.
  @node !Io.Text_Io.Integer_Io.Num

  type Num is range <>;

  Defines the integer type of the items that form the elements in the
  I/O stream.
  @node !Io.Text_Io.Integer_Io.Put

  procedure Put (File  : File_Type;
                Item  : Num;
                Width : Field       := Default_Width;
                Base  : Number_Base := Default_Base);
  procedure Put (Item  : Num;
                Width : Field       := Default_Width;
                Base  : Number_Base := Default_Base);

  Writes an integer value to a file.

  This procedure outputs the value of the Item parameter as an
  integer literal, with no underlines, no exponent, and no leading
  zeros (but a single zero for the value 0), and with a preceding
  minus sign for a negative value.

  If the resulting sequence of characters to be output has fewer
  characters than specified by the Width parameter, leading spaces
  are output to make up the difference.

  The procedure uses the syntax for decimal literal if the Base
  parameter has the value 10 (either explicitly or through
  Default_Base); otherwise, it uses the syntax for based literal,
  with any letters in uppercase.

  If a File parameter is omitted, the current default file is
  understood to be specified.
  @node !Io.Text_Io.Integer_Io.Put

  procedure Put (To   : out String;
                Item :     Num;
                Base :     Number_Base := Default_Base);

  Writes an integer value to a string.

  This procedure outputs the value of the Item parameter to the
  specified string, following the same rule as for output to a file,
  using the length of the specified string as the value for the Width
  parameter.