1. Бесформатный вывод.

Прагматические замечания и описание с соответствуют ГОСТ 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, к)

все

иначе не определено

все настройка на запись сохраняется /;

  1. Бесформатный ввод

Прагматические замечания аа, bb, сс, dd, ее, ff, gg, соответствуют ГОСТ 27974.

{hh) Если вид этого N специфицируется посредством имя строк, то литеры читаются до тех пор,

  1. пока не встретится литера, содержащаяся в строке, присоединенной к данному файлу вызовом процедуры задать стопстроку,

  2. либо пока не исчерпается текущая строчка, вследствие чего вызы­вается процедура конец строчки исправлен (или, где это целесообраз­но, конец страницы исправлен, конец физ файла исправлен или конец лог файла исправлен); если данная процедура обработки события продвигает текущую позицию к хорошей позиции (см. 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 = ввод;

  1. проц-?, ввести литеру = (имя файл 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(;

  1. проц $ проверить позицию = (имя файл f) пуст: начало лог чтение =для чтения из f;

лог не окончено: = истина;

пока не окончено: =не окончено Д страница хороша (f, чтение) строчка окончена (f)/j не окончено

цк не окончено: = конец строчки исправлен (f) кц конец;

Прагматическое замечание соответствует ГОСТ 27974.

  1. Тексты формата

Прагматическое замечание соответствует ГОСТ 27974.

  1. Наборы и шаблоны.

    1. Синтаксис.

Прагматическое замечание, метаправила А, В, С, 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;

  • осуществляется вставка из Р.

  1. Значение вводится в имя 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

  1. . Семантика соответствует ГОСТ 27974.

  1. Трафареты целого соответствуют ГОСТ 27974.

  2. Трафареты вещественного соответствут ГОСТ 27974.

  3. Трафареты логического соответствуют ГОСТ 27974. •

  4. Трафареты комплексного соответствуют ГОСТ 27974.

  5. Трафареты строкового соответствуют ГОСТ 27974.

  6. Трафареты битового соответствуют ГОСТ 27974.

  7. Трафареты выбора.

    1. Синтаксис.

Гиперправила а, Ь, с соответствуют ГОСТ 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 — истина (ложь), подготавливается и осуществляется литерал, выдаваемый первым (вторым) составляющим литералом из С;