Введение в программирование - Учебное пособие (Корочкин А. В.)

15.2 пакет direcmo

Пакет обеспечивает ввод-вывод для файлов прямого доступа. При прямом доступе файл рассматривается как набор элементов, занимаю­щих последовательные позиции в линейном порядке. Позиция элемен­та задается индксом (тип Count). Открытый прямой файл имеет те­кущий индекс.

Описание настройки пакета DirectJO :

with    Ada.lO_Exceptions; generic

type    Element_Type is   private; package  Ada . DirectJO is

type File_Type  is   limited  private;

type File_Mode is   (ln_File,   lnout_File, Out_File);

type Count is   range   0. .  - -определяется реализацией

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

- -    Управление файлами

procedure Create (File   :   in              out   File_Type;

Mode:   in              File_Mode    : =     lnout_File;

Name:   in             String   : =   "";

Form :   in              String    : =    ""   ) ;

procedure Open (File Mode Name Form

procedure Close (File

in             out    File_Type;

in             File_Mode;

in             String;

in             String := "" );

in             out      File_Type );

 

in         File_Type)

return     Boolean;

Глава 15. Ввод-вывод

procedure Delete ( File

 

:      in

 

out       File_Type ) ;

 

procedure Resest ( File

 

:      in

 

out       File_Type ;

 

Mode

 

:     in

 

File_Mode ) ;

 

procedure Resest ( File

 

:      in

 

out       FileJType);

 

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;

 

function ls_Open ( File         : - -    Операции ввода - вывода

procedure   Read ( File Item From

procedure   Read ( File Item

procedure   Write (File Item To

procedure    Write (File Item

in             File_Type;

out          Element_Type;

in             Positive_Count );

in             File_Type;

out          Element_Type  );

in             File_Type;

in             Element_Type;

in             Postive_Count );

in             File_Type;

in             E!ement_Type );

procedure    Set_lndex( File : in FileJType;

To   :   in      Positive_Count ) ;

function       Index ( File : in    File_Type)

return      Positive_Count; function      Size   (   File : in     File_Type)   return   Count;

function        End_Of_File   (File : in File_Type)

return    Boolean;

187

Глава 15. Ввод-вывод

 

 

186

Ада 95. Введение в программирование

- - Исключения

Status_Error:   exception    renames

IO_Exceptions.Status_Error; ModeJError:    exception   renames

IO_Exceptions. ModeJError; 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

lOJExceptions.EndJError; Data_Error:    exception    renames

IO_Exceptions. Data_Error;

private

...      - - He определены в языке end  Ada . DirectJO ;

Операции над прямымим файлами выполняются с помощью подпро­грамм Read, Write, Setjndex, Index, Size, End_Of_File.

Рассмотрим подробно представленные подпрограммы.

procedure  Read( File : in    File_Type; Item : out   ElementJType;

From : in Positive_Count); procedure Read ( File : in    FileJType ;ltem : out    ElementJType);

Первая процедура сначала устанавливает текущий индекс (параметр From ), а затем через параметр Item возвращает значение текущего элемента и увеличивает текущий индекс на единицу.

procedure. Write ( File : in FileJType; Item : in ElememtJType;

To: in Positive_Count); procedure  Write ( File : in Fi!e_Type;   Item : in ElementJType);

Первая процедура вначала устанавливвает индекс файла ( параметр То ), а затем текущему элементу присваивается значение Item и теку­щий индекс увеличивается на единицу.

procedure Set_lndex( File : in   FileJType;

To: out  Positive_Count);

Устанавливает текущий индекс данного файла через параметр То. function Index ( File : in   File_type)  return Positive_Count;

Возвращает текущий индекс файла. function Size ( File : in   FileJType)  return Count;

Возвращает текущий размер внешнего файла, связанного с данным файлом.

function End_Of_File ( File:    in   FileJType) return Boolean;

Если значение текущего индекса больше размера внешнего файла, то возвращает значение True , иначе False.