Бесформатный вывод.
Прагматические замечания и описание с соответствуют ГОСТ 27974. а) проц вывод = (имя файл f,
[ ] об (выводимое, проц (имя файл) пуст) х) пуст:
если открыт из f то
для і до вегр х
цк выб настроить на запись (f) ; настроить на литерное (f) ; х [і] в (проц (имя файл) пусть пиф) : пиф (f), (выводимое выв):
начало
[ ] провывод у = стройвывод выв;
<£ процДпреоб разование /(вещ = (Двещг) строк: плав (г, Д разрядность вещ + Д разрядность
порядка + 4, Д разрядность вещ — 1, Д разрядность порядка + 1)1 для j до вегр у цк выб у [j] в
(об (число,< Д компл>) чиском):
начало строк s: =
выб чиском в
■ (Д цел к): целое (к, Д разрядность цел +1)
(Д вещ г): Д преоб вещ (г) (Д компл w): Д преоб вещ (вч w) + + Д преоб вещ (мч w) $■ быв;
имя имени ПОЗИЦИЯ 11103= тпоз из f.
цел п= вегр s;
пока
след позиция (f);
г (п > с из границы книги (f) I не определено);
с из тпоз + (с ИЗ Т ПОЗ =1 I ПІ п + 1) > с из границы книги (f) + 1
цк ( -і конец строчки исправлен (f) I вывод (f, нов строчка)); настроить на запись (f)
кц;
(с из тпозf і I припз);
для к до вегр s цк вывести литеру (f, s [к]) кц
конец вывода чисел yi
(лог Ь): (след позиция (f);
вывести литеру (f, (b I да 1нет))),
(Д бит дбит) :
для к до Д размер бит
цк вывод (f, (Д F из дбит) [к]) кц
(лит к): (след позиция (f); вывести литеру (f, к))
([ ] лит стр):
для к от нигр стр до вегр стр цк след позиция (f); вывести литеру (f, стр [к]) КЦ быв кц
конец
быв кц
иначе не определено все;
проц (имя файл, [] об (выводимое, проц (имя файл) пуст)) пуст put = вывод;
Ь) проц я. вывести литеру = (имя файл f, лит лит) пуст: если открыт из f Л -| строчка окончена (f) то имя позиция тпоз =тпоз из f, п поз =заполн из книга из f; настроить на литерное (f); натроить на запись (f); имя цел р =р из тпоз, 1 =1 из тпоз, с =с из т поз;
лит к; лог есть: =ложь;
выб текст из f в
(текст): (к: =лит; есть: = истина), (подвтекст):
для і до вегр F из код из f пока есть
цк ст (лит внутр, внешн) табл = (F из код из f) [і];
(внутр из табл =лит I к: = внешн из табл;
есть: = истина)
кц
быв;
если есть то
выб текст из f в
(текст 11) : tl [р] [1] [с] : = к,
(подвтекст t2) : t2 [р] [1] [с] : = к
быв;
с + : = 1;
если тпоз вне ппоз то ппоз: = тпоз
инее-, возм установка (f) 1 Д
позиция (р из ппоз, 1 из ппоз, 1) вне т поз то ппоз: = тпоз;
(сжимаем (f) I
с размер строчки и страницы, содержащей логический размер данной книги, и всех последующих строчек и страниц может увеличиться {например, до размеров, с которыми книга была заведена (10.3.1.4.сс) первоначально, или до размеров, предполагаемых из макс позиция из кан из f} с)
все
иначе к: = ;
если -j ошибка литеры исправлена (f, к)
то не определено; к: = ”х ”
все;
проверить позицию (f); вывести литеру (f, к)
все
иначе не определено
все настройка на запись сохраняется /;
Бесформатный ввод
Прагматические замечания аа, bb, сс, dd, ее, ff, gg, соответствуют ГОСТ 27974.
{hh) Если вид этого N специфицируется посредством имя строк, то литеры читаются до тех пор,
пока не встретится литера, содержащаяся в строке, присоединенной к данному файлу вызовом процедуры задать стопстроку,
либо пока не исчерпается текущая строчка, вследствие чего вызывается процедура конец строчки исправлен (или, где это целесообразно, конец страницы исправлен, конец физ файла исправлен или конец лог файла исправлен); если данная процедура обработки события продвигает текущую позицию к хорошей позиции (см. 10.3.3), го ввод литер возобновляется.
Строка, состоящая из введенных литер, присваивается N (отметим, что если текущая строчка была исчерпана либо текущая позиция была на начале пустой строчки или вне логического файла, то этому N присваивается пустая строка).}
а) проц ввод = (имя файл f,
[ ] об (вводимое, проц (имя файл) пуст) х) пуст:
если открыт из f, то
для і до вегр X
цк выб настроить на чтение (f); настроить на литерное (f);
х [і] в
(проц (имя файл) пуст пиф): пиф (f),
(вводимое вв):
начало
[ ] проввод у =стройввод вв; лит к; лог к пусто;
оп?. = (строк s) лог:
вырабатывает истина, если следующая литера, когда она есть, в текущей строчке содержится в 's' (эта литера присваивается 'к'), а иначе ложь
если к пусто Д (строчка окончена (f) V лог файл окончен (f) ) то ложь
иначе (к пусто I ввести литеру (f, к) );
к пусто: = литера в строке (к, лок цел, s) все;
оп? = (лит с) лог : ? строк (с);
прио! =8;
оп! = (строк s, лит с) лит:
запрашивает литеру, содержащуюся в 's'; если читается литера, не входящая в s', вызывается процедура обработки события, соответствующая 'при ошибке литеры', с предлагаемой литерой 'с'-Х
если (к пусто I проверить позицию (f);
ввести литеру (f, к) );
к пусто: = истина;
литера в строке (к, лок цел, s)
то к
иначе лит предл: = с;
если ошибка литеры исправлена (f, предл) то
(литера в строке (предл, лок цел, s)
іпредл I не определено; с)
иначе не определено; с
все;
настроить на чтение (f)
все;
оп! = (лит s, с) лит: строк (s) !с;
процпроп^уск / нач альных yl пробелов = пуст:
пока (к пусто I след позиция (f) ); ? ”л_ ”
цк пропуск кц;
процпроп уск f( пробелов - пуст :
пока ? ”з.” цк пропуск кц;
проц чит X ать X циф X ры X = строк:
(строк t: ”--”0123456789” ! "0” ;
пока ? ”0123456789” цк t плюспр к кц; t);
проц чит знак =лит:
(лит t = (проп пробелов; ” Iki ” + ”);
проп пробелов; t);
проц чит чис X ло X = строк:
(лит t = чит знак; t + чит циф);
проц чит вещ X ественное X = строк:
(строк t: =чит знак;
( — ? ”. ” 11 плюспр чит циф I к пусто: = ложь);
( ? ” . ” t плюспр ” . ” + чит циф);
(? ”ю е” It плюспр "]0” + чит чис); t);
для j до вегр у
цк лог не конч X ено yt: = ложь; к пусто: = истина;
выбу [j] в
(имя Д цел идц):
(проп нач пробелов;
не конч: =-i строку в Д цел (чит чис, 10, идц)) У>,
(имя Д вещ идв) :
(проп нач пробелов;
не конч: = -і строку в Д вещ (чит вещ, идв))
<£ (имя Д компл идк) :
(проп нач пробелов;
не конч: = -л строку в Д вещ (чит вещ, ивч идк);
проп пробелов; ’,’i и 1” !
не конч: =не конч V
-і строку в Д вещ (чит вещ, имч идк))
(имя лог ил):
(проп нач пробелов;
ил: = (да + нет) ! нет = да),
< (имя Д бит идб) :
для і до Д размер бит
цк ввод (f, (Д F из изб) [і]) кц
(имя лит ил) : (след позиция (f); ввести литеру (f, ил)).
(имя [ ] лит имл) :
для і от нигр имл до вегр имл
цк след позиция (f); ввести литеру (f, имл [І]) кц;
(имя строк ис):
начало строк t;
пока проверить позицию (f) ;
если строчка окончена (f) V пог файл окончен (f) то ложь
иначе ввести литеру (f, к);
к пусто: =-і литера в строке (к, лок цел, стопе из f) всецк t плюспр к кц; ис: =t конец
быв;
(-і к пусто I назад (f) );
если не конч
то ( -і ошибка значения исправлена (f) I не определено); настроить на чтение (f)
все кц конец быв кц иначе не определено все:
проц (имя файл, [ ] об (вводимое, проц (имя файл) пуст)) пуст get = ввод;
проц-?, ввести литеру = (имя файл f, имя лит лит) пуст:
если открыт из f Д строчка окончена (f) Д - < лог файл окончен (f)
то имя позиция т поз = т поз из f;
настроить на литерное (f); настроить на чтение (f);
цел р = р из тпоз, 1 = і из тпоз, с-сиз тпоз;
с из т поз + : = 1;
лит: = выб текст из f в
(текст t 1): t 1 [р] [1] [с], (подвтекст t 2):
(лит k: = 12 [р] [1] [с];
лог есть: =ложь;
для і до вегр F из код из f пока -п есть
цк ст (лит внутр, внешн) табл = (F из код ^из f) [і ] (внешн из табл =k I к : = внутрь из табл;
есть: = истина) цк;
если есть то к
иначе к: =
если ошибка литеры исправлена (f, к) то к
иначе не определено; все;
настроить на чтение (f) все) быв
иначе не определено
все yi настройка на чтение сохраняется j(;
проц $ проверить позицию = (имя файл f) пуст: начало лог чтение =для чтения из f;
лог не окончено: = истина;
пока не окончено: =не окончено Д страница хороша (f, чтение) строчка окончена (f)/j не окончено
цк не окончено: = конец строчки исправлен (f) кц конец;
Прагматическое замечание соответствует ГОСТ 27974.
Тексты формата
Прагматическое замечание соответствует ГОСТ 27974.
Наборы и шаблоны.
Синтаксис.
Прагматическое замечание, метаправила А, В, С, D, Е, F, G, Н, I, J, К, L, М, N, О, Р; гиперправила a, b, с, d, е, f, g, h, і, j, k, 1, m, n, о и разъяснения aa, bb, cc, dd, ее, ff, jj, kk, соответствуют ГОСТ 27974.
£gg) Формат может состоять из последовательности шаблонов, каждый из которых выбирается по очереди посредством взять след шаблон (10.3.5.Ь). В дополнение к этому некоторое множество шаблонов можно сгруппировать вместе и образовать повторяемый „набор’.’ (который сам может содержать подобные наборы). Когда выбирается последний шаблон набора, снова выбирается его первый шаблон и т. д., пока весь этот набор не повторится h раз, где п — целое число, вырабатываемое его повторителем. Набор можно снабдить двумя вставками, первая из которых осуществляется перед набором, а вторая — после него.
Формат может также вызывать другие форматы с помощью трафаретов 'форматного' (10.3.4.9.1).
Когда формат исчерпывается, вызывается процедура конец формата исправлен, если она вырабатывает ложь, то данный формат повторяется, а иначе, если только эта процедура обработки события не может обеспечить новый формат, вызывается не определено.
hh) Значение V выводится с помощью шаблона Р следующим образом: Если трафарет Q этого Р есть трафарет 'выбора' или 'бесформатного', то,у выводится с помощью Р (см. 10.3.4.8.1. aa, dd, 10.3.4.l.aa), а иначе V выводится так:
Р подготавливается.
Если вид этого V „совместим по выводу” с Q то »
V преобразуется в строку, управляемую (dd) этим Q
Если данный вид не совметим по выводу или если это преобразование не было успешным, то
вызывается процедура ошибка значения исправлена;
если она вырабатывает ложь, V выводится с помощью процедуры вывод и вызывается не определено;
а иначе данная строка „редактируется” (jj) с помощью трафарета Q;
осуществляется вставка из Р.
Значение вводится в имя N с помощью шаблона Р следующим образом:
Если трафарет Q этого Р есть трафарет выбора' или 'бесформатного', ■ то значение вводится в NcпомощьюР (см. 10.3.4.8.1.bb, ее. 10.3.4.10.1 .bb);
а иначе
Р подготавливается;
„составляется” строка, управляемая Q (kk).
Если вид этого N „совместим по вводу” с Q (см. соответствующий раздел),
> • данная строка преобразуется с помощью Q в подходящее для N значе
ние;
если это преобразование было успешным, данное значение присваива- г ется N.
Если данный вид не совместим по вводу или если это преобразование не было успешным,
то
вызывается процедура ошибка значения исправлена;
• если она вырабатывает ложь, вызывается не определено:
• осуществляется вставка из Р.
11) Элемент множества литер S „ожидается” с предлагаемой литерой С следующим образом:
• читается некоторая литера;
если это одна из ожидаемых литер (т. е. принадлежит множеству S), то . она подается,
а иначе вызывается процедура ошибка литеры исправлена с предлагаемой литерой С; если эта процедура вырабатывает истина, а (возможно, измененная) литера С есть одна из ожидаемых литер, то подается С, а иначе вызывается не определено . J
. Семантика соответствует ГОСТ 27974.
Трафареты целого соответствуют ГОСТ 27974.
Трафареты вещественного соответствут ГОСТ 27974.
Трафареты логического соответствуют ГОСТ 27974. •
Трафареты комплексного соответствуют ГОСТ 27974.
Трафареты строкового соответствуют ГОСТ 27974.
Трафареты битового соответствуют ГОСТ 27974.
Трафареты выбора.
Синтаксис.
Гиперправила а, Ь, с соответствуют ГОСТ 27974.
{аа) Значение V выводится с помощью шаблона Р, трафарет которого Q был выдан трафаретом-целого-выбора С, следующим образом:
• подготавливается (10.3.4.1.l.dd) и осуществляется (10.3.4.1.l.ee) вставка из Q;
Если вид значения V специфицируется посредством цел, а У>0,иесли число составляющих литералов в упаковашюм-списке-поясняемых-литералов этого С не меньше V,
подготавливается и осуществляется литерал, выдаваемый У -м из этих литералов;
а иначе
вызывается процедура ошибка значения исправлена;
если она вырабатывает ложь, V выводится с помощью вывод и вызывается не определено;
подготавливается и осуществляется вставка из Р
bb) Значение вводится в имя N с помощью шаблона Р, трафарет которого Q был выдан трафаретом-целого-выбора С, следующим образом:
подготавливается и осуществляется вставка из Q;
по очереди подготавливается и „отыскивается” (сс) каждый из литералов, выдаваемых составляющими литералами упакованного-списка-пояс- няемых-литералов этого С;
Если вид этого N специфицируется посредством имя цел и і-й литерал окажется первым из искомых,
то і присваивается N;
а иначе
вызывается процедура ошибка значения исправлена;
если она вырабатывает ложь, вызывается не определено;
подготавливается и осуществляется вставка из Р.
сс) Разъяснение соответствует ГОСТ 27974.
dd) Значение V выводится с помощью шаблона Р, трафарет Q которого был выдан трафаретом-логического-выбора С, следующим образом:
подготавливается и осуществляется вставка из Q;
Если вид этого V специфицируется посредством лог, то
если V — истина (ложь), подготавливается и осуществляется литерал, выдаваемый первым (вторым) составляющим литералом из С;