Spec-Zone.ru › Ada 2012
Справочник Ada 2012

A.10.5 Операции над колонками, строками и страницами

Статическая семантика

Подпрограммы, описанные в этом подпункте, обеспечивают явный контроль над структурой строк и страниц; они работают либо с файлом, заданным в качестве первого параметра, либо, при отсутствии такого параметра файла, с соответствующим текущим файлом по умолчанию (ввода или вывода). Исключение Status_Error распространяется любой из этих подпрограмм, если используемый файл не открыт.
procedure New_Line(File : in File_Type; Spacing : in Positive_Count := 1);
procedure New_Line(Spacing : in Positive_Count := 1);
Работает с файлом в режиме Out_File или Append_File.
При Spacing равном единице: выводит символ конца строки и устанавливает текущий номер колонки в единицу. Затем увеличивает текущий номер строки на единицу, за исключением случая, когда текущий номер строки уже больше или равен максимальной длине страницы для ограниченной длины страницы; в этом случае выводится символ конца страницы, текущий номер страницы увеличивается на единицу, а текущий номер строки устанавливается в единицу.
При Spacing большем единицы, вышеуказанные действия выполняются Spacing раз.
Исключение Mode_Error распространяется, если режим не Out_File или Append_File.
procedure Skip_Line(File : in File_Type; Spacing : in Positive_Count := 1);
procedure Skip_Line(Spacing : in Positive_Count := 1);
Работает с файлом в режиме In_File.
При Spacing равном единице: считывает и игнорирует все символы до тех пор, пока не будет прочитан символ конца строки, а затем устанавливает текущую колонку в единицу. Если символ конца строки не следует непосредственно за символом конца страницы, текущий номер строки увеличивается на единицу. В противном случае, если символ конца строки непосредственно следует за символом конца страницы, то символ конца страницы пропускается, текущий номер страницы увеличивается на единицу, а текущий номер строки устанавливается в единицу.
При Spacing большем единицы, вышеуказанные действия выполняются Spacing раз.
Исключение Mode_Error распространяется, если режим не In_File. Исключение End_Error распространяется, если попытка чтения символа конца файла.
function End_Of_Line(File : in File_Type) return Boolean;
function End_Of_Line return Boolean;
Работает с файлом в режиме In_File. Возвращает True, если следующий символ — это символ конца строки или символ конца файла; в противном случае возвращает False.
Исключение Mode_Error распространяется, если режим не In_File.
procedure New_Page(File : in File_Type);
procedure New_Page;
Работает с файлом в режиме Out_File или Append_File. Выводит символ конца строки, если текущая строка не завершена или если текущая страница пуста (то есть текущие номера колонки и строки оба равны единице). Затем выводит символ конца страницы, который завершает текущую страницу. Увеличивает текущий номер страницы на единицу и устанавливает текущие номера колонки и строки в единицу.
Исключение Mode_Error распространяется, если режим не Out_File или Append_File.
procedure Skip_Page(File : in File_Type);
procedure Skip_Page;
Работает с файлом в режиме In_File. Считывает и игнорирует все символы и символы конца строки до тех пор, пока не будет прочитан символ конца страницы. Затем увеличивает текущий номер страницы на единицу и устанавливает текущие номера колонки и строки в единицу.
Исключение Mode_Error распространяется, если режим не In_File. Исключение End_Error распространяется, если попытка чтения символа конца файла.
function End_Of_Page(File : in File_Type) return Boolean;
function End_Of_Page return Boolean;
Работает с файлом в режиме In_File. Возвращает True, если следующий символ — это комбинация символа конца строки и символа конца страницы или символ конца файла; в противном случае возвращает False.
Исключение Mode_Error распространяется, если режим не In_File.
function End_Of_File(File : in File_Type) return Boolean;
function End_Of_File return Boolean;
Работает с файлом в режиме In_File. Возвращает True, если следующим символом является символ конца файла или комбинация символов конца строки, конца страницы и конца файла; в противном случае возвращает False.
Исключение Mode_Error распространяется, если режим не In_File.
Следующие подпрограммы обеспечивают управление текущей позицией чтения или записи в файле. Во всех случаях файлом по умолчанию является текущий файл вывода.
procedure Set_Col(File : in File_Type; To : in Positive_Count);
procedure Set_Col(To : in Positive_Count);
Если режим файла Out_File или Append_File:
Если значение, заданное параметром To, больше текущего номера колонки, выводит пробелы, увеличивая текущий номер колонки на единицу после каждого пробела, до тех пор, пока текущий номер колонки не станет равным заданному значению. Если значение, заданное параметром To, равно текущему номеру колонки, то никаких действий не выполняется. Если значение, заданное параметром To, меньше текущего номера колонки, выполняется вызов New_Line (с параметром Spacing, равным единице), затем выводится (To – 1) пробелов и устанавливается текущий номер колонки в заданное значение.
Исключение Layout_Error распространяется, если значение, заданное параметром To, превышает Line_Length, когда длина строки ограничена (то есть, когда она не имеет стандартного значения ноль).
Если режим файла In_File:
Читает (и игнорирует) отдельные символы, символы конца строки и конца страницы, до тех пор, пока следующий символ для чтения не будет иметь номер колонки, равный значению, заданному параметром To; никаких действий не выполняется, если текущий номер колонки уже равен этому значению. Каждое перемещение символа или разделителя сохраняет текущие номера колонки, строки и страницы так же, как процедура Get (см. A.10.6). (Короткие строки будут пропущены, пока не будет достигнута строка, содержащая символ в указанной позиции колонки).
Исключение End_Error распространяется, если попытка чтения символа конца файла.
procedure Set_Line(File : in File_Type; To : in Positive_Count);
procedure Set_Line(To : in Positive_Count);
Если режим файла Out_File или Append_File:
Если значение, заданное параметром To, больше текущего номера строки, то выполняется повторный вызов New_Line (с параметром Spacing, равным единице), пока текущий номер строки не станет равным заданному значению. Если значение, заданное параметром To, равно текущему номеру строки, то никаких действий не выполняется. Если значение, заданное параметром To, меньше текущего номера строки, то выполняется вызов New_Page, а затем, если To больше 1, вызов New_Line с параметром Spacing, равным (To – 1).
Исключение Layout_Error распространяется, если значение, заданное параметром To, превышает Page_Length, когда длина страницы ограничена (то есть, когда она не имеет стандартного значения ноль).
Если режим In_File:
Выполняется повторный вызов Skip_Line (с параметром Spacing, равным единице), пока текущий номер строки не станет равным значению, заданному параметром To; никаких действий не выполняется, если текущий номер строки уже равен этому значению. (Короткие страницы будут пропущены, пока не будет достигнута страница, содержащая строку в указанной позиции строки).
Исключение End_Error распространяется, если попытка чтения символа конца файла.
function Col(File : in File_Type) return Positive_Count;
function Col return Positive_Count;
Возвращает текущий номер колонки.
Исключение Layout_Error распространяется, если это число превышает Count'Last.
function Line(File : in File_Type) return Positive_Count;
function Line return Positive_Count;
Возвращает текущий номер строки.
Исключение Layout_Error распространяется, если это число превышает Count'Last.
function Page(File : in File_Type) return Positive_Count;
function Page return Positive_Count;
Возвращает текущий номер страницы.
Исключение Layout_Error распространяется, если это число превышает Count'Last.
Номер колонки, строки или страницы может превышать Count'Last (вследствие ввода-вывода достаточного количества символов, строк или страниц). Эти события не вызывают распространения исключений. Однако вызов Col, Line или Page распространяет исключение Layout_Error, если соответствующее число превышает Count'Last.
ПРИМЕЧАНИЯ
30 Символ конца страницы всегда пропускается, когда пропускается предшествующий символ конца строки. Реализация может представлять комбинацию этих разделителей одним символом, при условии, что он правильно распознаётся на входе.


Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API