Н. Джехани - Язык Ада (1988) (1160771), страница 121
Текст из файла (страница 121)
кущий номер страницы на единицу, а текущий номер строчки устанавливает равным единице. Если ЗРАСГМ6 больше единицы, то указанные действия повторяются ЗРАС)М6 раз. Если вид файла не СОТ Е)ЕЕ, то возбуждается исключение МОСЕ ЕВЙОВ. раоаеемк МЕЧУ ОМЕ(НЬЕ: Ь Р!ЬЕ ТУРЕ; ВРАС)МО; 1и Р081Т!ЧЕ СООМТ:= 1)! ргакеемк МЕЧУ ОМЕ[ВРАС)МО: Ь Р081Т!ЧЕ СООМТ ы !); Оперирует над файлом вида )М Е(ЕЕ. Если ЗРАС)МО равен единице, то считывает из файла и пропускает (игнорирует) все символы до признака конца строчки, а текущий номер столбца устанавливает равным единице. Если непосредственно за признаком конца строчки не следует признак конца страницы, то увеличивает текущий номер строчки на единицу.
З противном случае, когда за признаком кон. ца строчки непосредственно следует признак конца страницы, пропускает признак конца страницы, увеличивает текущий номер страницы на единицу, а текущий номер строчки устанавливает равным единице. Если ЗРАС)МО больше единицы, указанные действия повторяются ЗРАС(М6 раз. Если вид файла не 1М Р1ЕЕ, то возбуждается исключение й)ОСЕ ЕВВОВ. При попытке прочитать признак конца файла возбуждается исключение ЕМО ЕЙЙОВ. Ьошйк ЕМО ОР ОМЕ(Н!.Е: 1и РпьЕ ТУРЕ! ппмк 8001.ЕАМ! Ьпайоп ЕМО ОР ОМЕ пнмгп ВООЬЕАМ! Оперирует над файлом вида )й Р)~Е. Возвращает значение ТВОЕ, если текущий элемент файла — это признак конца строчки или признак конца файла; в противном случае возвращает значение РАСЗЕ. Если вид файла не )М Е)СЕ, то возбуждается исключение МОСЕ ЕЙНОЙ.
рсоаевмге МЕЧУ РАВЕ(йьЕ: 1и НЬЕ ТУРЕ); рлкмемге МЕЧУ РАОЕ; Оперирует над файлом вида СОТ Е(ЕЕ. Если текущая строчка не завершена или текущая страница пустая (т.е. текущие номера строчки или столбца оба равны единице), то выводит признак конца строчки. Затем выводит признак конца страницы, который завершает текущую страницу. Увеличивает номер текущей страницы на единицу, а текущие номера столбца и строчки устанавливает равными единице. Если вид файла не СОТ Р)СЕ, то возбуждается исключение МОСЕ ЕЙЙОВ.
ргааедмк ЗК)Р РА6Е(Н1.Е: )п Р)ЬЕ ТУРЕ); рпмкемк ВК!Р РАВЕ; Оперирует над файлами вида 1М Р)СЕ. Из файла читает и пропускает (игнорирует) все символы и признаки конца строчки, концая признаком конца страницы. Увеличивает текущий номер страницы на единицу, текущие номера столбца и строчки устанавливает равными единице. Если вид файла не 1М Р(СЕ, то возбуждается исключение )ИООЕ ЕЙНОЙ.
При попытке прочитать признак конца файла возбуждается исключение ЕМО ЕВВОВ. 1мпмЬп Ей0 ОР РАВЕ(Р!ьЕ: Ь РГКЕ ТУРЕ) капп 800).ЕАМ; Впкеоп ЕМО ОЕ РА6Е капп ВООЬЕАМ! Оперирует над файлом вида (М Р(ЕЕ. Возвращает значение ТВОЕ, если очередными эле ментами файла является последовательность из признаков конца строчки и страницы или если очередным элементов является признак конца файла; в противном случае возвращает значение РАьЗЕ.
Если вид файла отличен от )М Е)ЕЕ, то возбуждается исключение МОСЕ ЕЙНОЙ. 471 Вво .вывод Ьпсбап ЕМО Ор Н!ЬЕ!Р)сЕ: Ь Н1.Е ТУРЕ) кеип 8001.ЕАМ; Ьпабап ЕМО Ор Н!св кьип 8001.ЕАМ; Оперирует над файлом вида !М Р1ЕЕ. Возвращает значение ТВОЕ, если очередным элементом файла является признак конца файла или последовательность из признаков конца строчки, страницы и файла; в противном случае возвращает значение ГАЕВЕ. Если вид файла отличен от 1М Р!ЕЕ, то возбуждается исключение МОСЕ ЕЯВОВ. Следующие подпрограммы предназначены для управления текущей позицией чтения или записи в файл. Во всех этих подпрограммах в качестве файла по умолчанию используется текущий файл вывода. рсааввпп ЗЕТ СОИНЬЕ . '1П р!сЕ ТУРЕ; ТО: 1И РОЗПТЧЕ СООМТВ 1насебик ЗЕТ СОЕВО: )п РОЗГГ)ЧЕ СОВА. Для файла вида ОУТ Е!ЕЕ: Если значение параметра ТО больше текущего номера столбца, то выводит пробелы, причем после вывода каждого пробела увеличивает текущий номер столбца на единицу.
Это повторяется до тех пор, пока текущий номер столбца не станет равным значению параметра ТО. Если значение параметра ТО было равно текущему номеру столбца, то никаких Действий не производит. Если значение параметра ТО меньше текущего номера столбца, то сначала вы. попняет действия, эквивалентные вызову процедуры МЕ)Л/ 0МЕ( ВРАС!М6 = 1], затем выводит (ТΠ— 1] пробелов и текущий номер столбца устанавливает равным значению параметра ТО.
Если при ограниченной длина строчки (т.е. (.)МЕ ЕЕМОТН для этого файла имеет ненулевое значение) значение параметра ТО оказалось больше (.!МЕ ЕЕМОТН, то возбуждается исключение (АУООТ ЕЯВОВ. Для файла вида !И Р! Е: Читает и пропускает (игнорирует) отдельные символы, признаки конца строчки и страницы до тех пор, пока номер столбца очередного, подлежащего чтению символа не станет равным значению параметра ТО.
Если текущий номер столбца с самого начала равен этому значению, то никаких действий не производит. При передаче каждого символа или признака конца должным образом корректирует текущие номера столбца, строчки и страницы, как при работе процедуры 6ЕТ (см. 14.3.5).(Короткие строчки будут пропущены целиком, пока не встретится строчка, содержащая символ в указанной позиции от начала строчки.) При попытке чтения признака конца файла возбуждается исключение ЕМО ЕЯВОЯ. рксойиа ЗЕТ ЫМЕ(НЬЕ: 1и РП.Е ТУРЕ; ТО: 1п Р081Т)ЧЕ СООМТ); ркаеЬк ЗЕТ ОМЕ(ТО: 1п Р081ТГЧЕ СОЦМТ); Для файла вида 007 Р!ЕЕ: Если значение параметра ТО больше текущего номера строчки, то зта процедура эквивалентна повторным вызовам МЕЧУ 0МЕ (ВРАС!М6 = 1) до тех пор, пока текущий номер строчки не станет равным значению параметра ТО. Если значение параметра ТО было равно текущему номеру строчки, то никаких действий не производит, Если значение параметра ТО меньше текущего номера строчки, то эта процедура эквивалентна вызову НЕУЧ РА6Е, за которым ель дует вызов МЕЧУ (.!МЕ с параметром ВРАС)М6, равным (ТΠ— 1).
Если при ограниченной длине страницы (т.е. РА6Е ЕЕМОТН для этого файла имеет ненулевое значение) значение параметра ТО оказалось больше РАВЕ ЕЕМОТН, то возбуждается исключение (АУООТ ЕВВОЯ. Для файла нида !М Е~Е: Результат эквивалентен повторным вызовам процедуры ЗК)Р Е)МЕ (ВРАС!М6 = 1) до тех пор, пока текущий номер строчки не примет значение параметра ТО. Если текущий номер строчки с самого начала был равен значению параметра ТО, то никаких действий нв производит.(Короткие страницы будут пропущены целиком, пока не встретится страница, содержа. щая строчку в указанной позиции от начала страницы.) При попытке чтения признака конца файла возбуждается исключение.
ЕМО ЕВЯОЯ. Ьикбоп СОВРИ.Е: Ь Р)ЬЕ ТУРЕ! гаваи Р081Т)ЧЕ СООМТ! Ьпсбсп СОс сепии РОЗ(Т)ЧЕ СООМТ! Возвращает текущий номер столбца. Если этот номер больше значения СООМТ'ЕАЗТ, зто возбуждается исключение (АУООТ ЕВВОВ. 472 Глава тв Ьппепп ЫНЕ(Р!ЬЕ: Ь Р!ЬЕ 1УРЕ) геэпгп Р081ТГЧЕ СООМТ; Ьппзшп ОИЕ гпапе РОЗГПЧЕ СООМТ; Возвращает текущий номер строчки. Если этот номер больше значения СООМТ').АЗТ, то возбуждается исключение (АУООТ ЕЙЙОЙ. Ьппепп РАЗЕ(Р!ЬЕ ! !п Р!(Е ТУРЕ! евпп Р08!Т!ЧЕ СООНТ; Ьпшшп РАВЕ мыгп РОЗ!Т!ЧЕ СООМТ; Возвращает текущий номер страницы. Если этот номер больше значения СООМТ'(АЗТ, то возбуждается исключение (.АУООТ ЕЙЙОЙ. Номера столбца, строчки или страницы, вообще говоря, могут превысить значение СООМТ'1.АЗТ (в результате ввода или вывода достаточно большого числа символов, строчек или страниц).
При этом никакое исключение не возбуждается. Однако при вызове функции СОЦ ММЕ или РАВЕ если соответствующий номер оказался больше СООМТ') АЗТ, то возбуждается исключение 1 АУООТ ЕЙЙОЙ. Примечание. Признак конца страницы пропускается, если пропускается предшествующий ему признак конца строчки. Реализация может представить последовательность из таких двух признаков конца одним символом при условии, что он будет распознаваться при вводе. Ссылки: вид 1М Е1ЕЕ 14.1, длина страницы 14.3, исключение ЕМО ЕЙЙОВ 14.4, исключение (.АУООТ ЕЙЙОЙ 14.4, исключение МООЕ ЕЙЙОЙ 14.4, исключение ЗТАТОЗ ЕЙЙОЙ 14.4, максимальная длина страницы 14.3, номер строчки 14.3, открытый файл 14.1, признак конца страницы 14.3, признак конца отрочки 14.3, признак конца файла 14.3, процедура 6ЕТ 14.3.5, страница 14.3, строчка 14.3, текущий номер столбца 14.3, текущий номер страницы 14.3, текущий номер строчки 14.3, текущий файл по умолчанию 14.3, тип Р08(Т1ЧЕ СООМТ 14.3, файл 14.1.
14.3.5. ПРОЦЕДУРЫ ОБМЕНА В равд. 14.3.5 — 14.3.10 описаны процедуры 6ЕТ и РОТ для элементов типов СНАЙАСТЕЙ, ЗТЙ)М6, числового и перечислимого. В данном разделе описаны возможности этих процедур, общие для большинства таких типов. Процедуры 6ЕТ и РОТ для элементов типов СНАЙАСТЕЙ и ЗТЯ1М6 передают отдельные символьные значения, а для числовых и перечислимых типов передают лексемы. Первым параметром всех процедур 6ЕТ и РОТ является файл. Если он опущен, то подразумевается, что используется текущий файл (ввода или вывода) по умолчанию. Каждая процедура 6ЕТ оперирует над файлом вида )М Р1ЕЕ. Каждая процедура РОТ оперирует над файлом вида ООТ ЕН.Е.
Все процедуры 6ЕТ и РОТ меняют для заданного файла текущие номера столбца, строчки и страницы: каждая передача символа увеличивает на единицу текущий номер столбца Каж. дый вывод признака конца строчки устанавливает текущий номер столбца равным единице и добавляет единицу к текущему номеру строчки. Каждый вывод признака конца страниць! устанавливает текущие номера столбца и строчки равными единице и добавляет единицу к текущему номеру страницы. При вводе каждый пропуск признака конца строчки устанавливает текущий номер столбца равным единице и добавляет единицу к текущему номеру строчки; каждый пропуск признака конца страницы устанавливает текущие номера столбца и строчки равными единице и добавляет единицу к текущему номеру страницы.
Аналогичным образом определяется семантика процвдур 6ЕТ 1.!МЕ, РОТ ММЕ и ЗЕТ С01.. Некоторые процедуры 6ЕТ и РОТ для числовых и перечислимых типов имеют параметры, задающие формащ он указывает длины полей; эти параметры принадлежат неотрицательному подтипу Р)ЕЕО типа )МТЕОЕЙ. Ввод. вывод значений перечислимых типов использует синтаксис соответствующих лек.
сем. Любая процедура 6ЕТ для перечислимого типа сначала пропускает всв ведущие пропуски или признаки концов строчки и страницы; пропуск — это символ пробела или символ горизонтальной табуляции. Затем символы вводятся до тех пор, пока введенная последовательность является началом лексемы, соответствующей идентификатору или символьному литералу (в частности, ввод прекращается при достижении признака конца строчки).
Символ или признак конца строчки, вызвавшие прекращение ввода, остаются доступными для следующего ввода. Процедуры 6ЕТ для числовых типов имеют параметр УЧ)ОТН, задающий формат. Если он имеет нулевое значение, то процедура 6ЕТ выполняется также, как для перечислимых типов, 473 Примеры: В примерах этого раздела и в равд. 14.3.7 и 14.3.8 кавычки и строчная буква Ь не вводятся и не выводятся; они даны только для того, чтобы показать расположение и пробелы. Й: !НТЕВЕЯ: Б ЕТ(Н): значение Й вводимая последова— тепьность -12БЗБ 12 536Е1 12 536Š— символы на входе -12535 126350 (нет) ОАтА еяяоя Возбуждено ЬЬ-12635Ь ЬЫ2 636Е1Ь ЬЫ2 636Е; Пример игнорирования параметра ширины: Рцтлтем => -23, чч!Отн => 21; — "-23" Ссылки: вид 14.1, вид файла 1Й Е1ЕЕ 14.1, вид фаина 00Т Р)ЬЕ 14.1, исключение ОАТА ЕННОН 14.4, исключение ЕЙО ЕЯНОН 14.4, исключение )АУО07 ЕЯНОН 14.4, исключение МООЕ ЕЯНОН 14.4, исключение ВТАТ08 ЕННОН 14.4, максимальная длина строчки 14.3, номер столбца 14.3, номер страницы 14.3, номер строчки 14.3, параметр РОНЕ 14.3.8, параметр ЧЧ)ОТН 14.3.5, 14.3.7, 14.3.9, признак конца страницы 14.1, признак конца строчки 14.1, пропуск 14.3.9, просмотреть 14.3.7, 1438, 14.39, процедура 6ЕТ 14.36, 14.3.7, 14.3.8, 14.3.9, процедура ЙЕ)Й МЙЕ 14.3.4, процедура РОТ 14.3.6, 14.3.7, 14.3.8, 14.3.9, текущий файл по умолчанию 14.3, файл 14.1.