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

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

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

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


Spec-Zone.ru

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