A.8.1 The Generic Package Sequential_IO
Static Semantics
1
The generic library 
package Sequential_IO has the following declaration: 
2
with Ada.IO_Exceptions;
generic
   type Element_Type(<>) 
is private;
package Ada.Sequential_IO 
is 
3
   type File_Type 
is limited private;
 
4
   type File_Mode 
is (In_File, Out_File, Append_File);
 
5
   -- File management
6
   procedure Create(File : 
in out File_Type;
                    Mode : 
in File_Mode := Out_File;
                    Name : 
in String := "";
                    Form : 
in String := "");
 
7
   procedure Open  (File : 
in out File_Type;
                    Mode : 
in File_Mode;
                    Name : 
in String;
                    Form : 
in String := "");
 
8
   procedure Close (File : 
in out File_Type);
   
procedure Delete(File : 
in out File_Type);
   
procedure Reset (File : 
in out File_Type; Mode : 
in File_Mode);
   
procedure Reset (File : 
in out File_Type);
 
9
   function Mode   (File : 
in File_Type) 
return File_Mode;
   
function Name   (File : 
in File_Type) 
return String;
   
function Form   (File : 
in File_Type) 
return String;
 
10
   function Is_Open(File : 
in File_Type) 
return Boolean;
 
11
   -- Input and output operations
12
   procedure Read  (File : 
in File_Type; Item : 
out Element_Type);
   
procedure Write (File : 
in File_Type; Item : 
in Element_Type);
 
13
   function End_Of_File(File : 
in File_Type) 
return Boolean;
 
14
   -- Exceptions
15
   Status_Error : 
exception renames IO_Exceptions.Status_Error;
   
Mode_Error   : 
exception renames IO_Exceptions.Mode_Error;
   
Name_Error   : 
exception renames IO_Exceptions.Name_Error;
   
Use_Error    : 
exception renames IO_Exceptions.Use_Error;
   
Device_Error : 
exception renames IO_Exceptions.Device_Error;
   
End_Error    : 
exception renames IO_Exceptions.End_Error;
   
Data_Error   : 
exception renames IO_Exceptions.Data_Error;
 
16
private
   ... -- not specified by the language
end Ada.Sequential_IO;
17/2
 {
AI95-00360-01} 
The type File_Type needs finalization (see 7.6) 
in every instantiation of Sequential_IO. 
Incompatibilities With Ada 83
17.a
{
incompatibilities with Ada 83} 
The 
new enumeration element Append_File may introduce upward incompatibilities. 
It is possible that a program based on the assumption that File_Mode'Last 
= Out_File will be illegal (e.g., case statement choice coverage) or 
execute with a different effect in Ada 95. 
 
17.a.1/2
This paragraph 
was deleted.Implementation Note: 
{
8652/0097} 
{
AI95-00115-01} 
{
AI95-00344-01} 
File_Type 
cannot be implemented as a (directly) controlled type, as Ada.Sequential_IO 
can be instantiated at any nesting depth. File_Type could have a component 
of a controlled type, as long as that type is declared in some other 
(non-generic) package.  
Incompatibilities With Ada 95
17.b/2
{
AI95-00360-01} 
{incompatibilities with Ada 95} Amendment 
Correction: File_Type in an instance of Sequential_IO is defined 
to need finalization. If the restriction No_Nested_Finalization (see 
D.7) applies to the partition, and File_Type 
does not have a controlled part, it will not be allowed in local objects 
in Ada 2005 whereas it would be allowed in original Ada 95. Such code 
is not portable, as another Ada compiler may have a controlled part in 
File_Type, and thus would be illegal.