вид «-вставка = подв [1 : 0] ст (проц цел повт 0 оритель 0, об (строк, лит) стр 0 ока текста 0) ;

вид «-шаблон = ст (об (трафарет, травыб, трафор, трабесф, пуст) траф, вставка в);

вид «-трафарет = ст (цел тип 0 трафарета 0, подв [1:0] рамка рамки);

вид «-рамка = ст (вставка в, проц цел повт 0 оритель 0, лог подав 0 ление 0, лит марк 0 ер 0);

вид «-травыб 0 трафарет выбора 0 =

ст (вставка в, цел тип

(t логического или целого Ji.

подв [1:0] вставка стр оки текста (к);

вид *-трафор fi трафарет форматного 0 = ст (вставка в, проц формат прф);

вид *-трабесф fi трафарет бесформатного = ст (вставка в, подв [1:0] проц цел спец);

  1. проц *взять след fi ующий 0 шаблон = (имя файл f, лог чит |іать ji, имя шаблон шаблон) пуст:

начало

лог есть шаблон := ложь, формат окончен := ложь;

пока есть шаблон

цк если. ук р азатель фор 0 мата из f = 0 то

если формат окончен

то не определено

инее (испр формат из f) (f)

то имя цел (укфор из f) := 1;

утн из (F из формат из f) [1] := 1;

счет из (F из формат из f) [1] := 1;

иначе формат окончен := истина все

иначе

имя цел укфор = укфор из f;

имя подв [ ] кадр алеф = F из формат из f:

выб (н из алеф [укфор]) [утн из алеф [укфор] ] в

(пакет пак):

([1 :вегр (в1 из пак)] подвставкапв;

оук из алеф [ удк из пак] := укфор; укфор := пропуск; (подготовить вставку (в1 из пак, пв), счет из алеф [удк из пак] := повт из пак);

(алеф :¥=: F из формат из f I не определено);

(чит I ввести вставку (f, пв)

I вывести вставку (f, пв) );

утн из алеф [удк из пак] :=

(счет из алеф [удк из пак] > 010

I есть шаблон := истина; шаблон := (пустое, ( ) );

вегр н из алеф [удк из пак]);

укфор := удк из пак),

(шаблон шабл) : (есть шаблон := истина; шаблон := шабл) быв;

пока

(укфор Ф 0

I утн из алеф [укфор] = вегр н из алеф [укфор]

I ложь)

цк если (счет из алеф [укфор] — := 1) < 0

то

если (укфор := оук из алеф [укфор]) #= 0

то

вставка добав =

выб (н из алеф [укфор]) [утн из алеф [укфор] ] в

(пакет пак):

(оук из алеф [удк из пак] :=0; в2изпак), (шаблон шабл): выб траф из шабл в

(трафор траф):

(цел к := укфор:

пока оук из алеф [к] ¥= укфор цк к +:= 1 кд;

алеф := алеф [:k - 1 ];

в из шабл) быв

быв;

цел m = вегр в из шаблон, п = вегр добав;

[l:m + n] ст (проц цел повт, об (строк, лит) стр) с;

с [1 : ш] :'= в из шаблон; с [m + 1 : т + п] := добав;

в из шаблон := с все

иначе утн из алеф [укфор] := О все кц;

(укфор Ф О I утн из алеф [укфор] +:= 1) все кц конец;

  1. вид *-подаставка = ст (цел повт, об (строк, лит) стр);

  2. проц ^-подготовить вставку =

(вставка вст, имя [ ] подвставка прдвст) пуст: ^совместно вызывает все повторители во 'вст' авке

если вегр вст = 1 то

повт из подвст [1] := повт из вст [1];

стр из подаст [1] := стр из вст [1]

инее вегр вст > 1

то (подготовить вставку (вст [1], подаст [1]), подготовить вставку (вст [2 :], подвст [2 :]))

все;

  1. вид *-подрамка =

ст (подв [1 : 0] подвставка пв, цел повт, лог подав, лит марк);

  1. проц ^подготовить рамки =

([ ] рамка рамки, имя [ ] подрамка подрамки) пуст: совместно вызывает

все повторители в рамках 'рамки' ji

если вегр рамки = 1 то

?- 136

f[1 : вегр (в из рамки [1])] подвставка пв; (подготовить вставку (в из рамки [1], пв), повт из подрамки [1 ] := повт из рамки [1]); пв из подрамки [1] :=пв;

подав из подрамки [1] := подав из рамки [1];

марк из подрамки [1] := марк из рамки [1]

инее вегр рамки > 1

то (подготовить рамки (рамки [1],подрамки [1]), подготовить рамки (рамки [2:], подрамки [2:]))

все;

  1. проц ^вывести вставку =

(имя файл f, [ ] подвставка пв) пуст: начало настроить на запись (f);

для к до вегр пв

ЦК

выб стр из пв [к] в

(лит а) : разместить (f, повт из пв [к], а, ложь), (строк s):

до повт из пв [к] ЦК

для і до вегр S

ц

вывести литеру (f, s [і])кц

к проверить позицию (f);

кц быв кц конец; h) проц ^ввести вставку = (имя файл f, [ ] подвставка пв) пуст: начало настроить на чтение (f);

для к до вегр пв цк

выб стр из пв [к] в

(лит а) : разместить (f, повт из пв [к], а, истина),

(строк s):

(лит с;

до повт из пв [к]

цк

для і до вегр S

цк проверить позицию (f);

ввести литеру (f, с);

(с #= s [і]

І (-і (испр ошибка литеры из f) (f, с := s [і])

I не определено);настроить на чтение (f) )

кц

кц)

быв

кц

конец;

і) проц ^-разместить =

(имя файл f, цел повт, лит а, лог чит) пуст: если а = ”х” то до повт вперед (f) кц инее а = ”у” то до повт цк назад (f) кц инее а = ”1” то до повт цк нов строчка (f) кц инее а = ”р” то до повт цк нов страница (f) кц инее а = ”к” то уст номер литеры (f, повт) инее а = ”q”

то до повт

цк

если ЧИТ

то лит с; проверить позицию (f); ввести литеру (f, с);

(с ¥= пробел I

(-і (испр ошибка литеры из f) (f, с := пробел) I не определено); настроить на чтение (f)) иначе проверить позицию (f);

вывести литеру (f, пробел)

все;

кц

все;

І) проц ^-выполнить трафор = (имя файл f, трафор трафор, лог чит) пуст: начало формат прф;

[1 : вегр (в из трафор) ] подвставка пв; (подготовить вставку (в из трафор, пв), прф := прф из трафор);

(чит I ввести вставку (f, пв)

I вывести вставку (f, пв));

имя цел укфор = укфор из f;

имя подв [ ] кадр алеф = f из формата из f; цел ш = вегр алеф, п = вегр (F из прф);

[1 :m + n] кадре; с [1 : ш] :=алеф;

с [m + 1 : m + n] := F из прф;

алеф := с; оук из алеф [m + 1] := укфор;

укфор :=т+ 1; утниз алеф [укфор] := 1;

счет из алеф [укфор] := 1;

для і от m +1 до ш + п

для j до вегр н из алеф [і]

ЦК

выб (н из алеф [i]) [j] В

(пакет пак):

(н из алеф [i] [j] := пакет (в 1 из пак, повт из пак, удк из пак + т,в 2 из пак)

быв

кц

кц

конец;

к) проц ^присоединить формат =

(имя файл f, формат формат) пуст:

начало

формат из f :=

с вновь созданное имя, которое начинает именовать выдачу фактического-описателя-формата и область действия которого равна области действия значения, выдаваемого посредством 'формат' с

:= формат;

укфор из f := глоб цел := 1;

утн из (F из формат из f) [1] := 1;

счет из (F из формат из f) [1] :■= 1;

оук из (F из формат из f) [1] :=0

конец;

  1. Форматный вывод.

а) проц ф вывод =

(имя файл f, [ ] об (выводимое, формат) х) пуст: если открыт из f то

для к до вегр х

цк выб настроить на запись (f);

настроить на литерное (f);

х [к] в

(формат формат) : присоединить формат (f, формат), (выводимое выв):

начало цел j := 0

шаблон шаблон, [ ] провывод у = стройвывод выв;

пока (j +:= 1) < вегр у

цк лог не конч := ложь;

взять след шаблон (f, ложь, шаблон);

настроить на запись (f);

[1 : вегр (в из шаблон)] подвставк^ подвст;

выб траф из шаблон в

(трафарет трафарет):

начало цел повт, ук азатель рам ок := 1;

[1 : вегр (рамки из трафарет) ] подрамка Подрамки;(подготовить рамки (рамки из трафарет, подрамки), подготовить вставку (в из шаблон, подвст) );

строк s;

on ? = (строк s) лог:

истина, если следующий маркер есть один из элементов 's', а иначе ложь если украм > вегр подрамки

то ложь

иначе подрамка пр = подрамки [украм];

повт := повт из пр;

если литера в строке '

(марк из пр, лог цел, s)

то украм +:= 1; истина иначе ложь

все все; оп ? = (лит с) лог: ?строк (с); проц цел трафарет =

(имя лог образец знака) цел: (цел 1 := 0;

пока ? ”zuv” цк (повт >0 11 + := повт) кц;

образец знака := ? ”+

пока ? ”zd”

цк (повт >0 11 + := повт) кц; 1);

< проц ред актировать Д цел = (Д цел і) пуст: (лог образец знака;

цел 1 := цел трафарет (образец знака);

строк t = предст целого (абс і, 1);

если литера в строке (литера ошибки лок цел, t) V 1 = 0 V і образец знака А і < Д 0

то не конч := истина иначе t прип s;

(1 - верг t) X ”0” прип s;

(образец знака I (х < Д 0 I ” I ”+”) прип s) все) >;

< проп ред Д вещ = (Д вещ в) пуст:

(цел b := 0, а := 0,

пор := 0, Д вещ у := абс в, лог знак 1, строк точка = b := цел трафарет (знак 1); (? **. ” I а := цел трафарет (лок лог);

точка := ” .”);

если ? ”е”

то Д нормализовать (у, Ь, а, пор) ;

редцел (пор);

ю” прип S

все;

строк t = предст рационального

(у, b + а + (а #= 0 111 0), а);

если литера в строке

(литера ошибки, лок цел, t) V

а + b = 0 V _|знак 1 Л г < Д 0 то не конч := истина

иначе t [:b] + точка + t [Ь + 2:]прип s;

(b + а + (а =# о 111 0) - вегр t) X ” 0” прип s;

(знак 1 I (в < Д О I ”-”1 прип s)

все) >;

< проц ред Д компл = (Д компл дк) пуст:

пока ?’’ і” цк украм +:= 1 кц;

ред Д вещ (мч дк) ;

1” прип s; украм := 1; ред Д вещ (вчдк)) >;

< проц ред Д бит =

(Д бит дб, цел основание) пуст:

(Д цел п.:= абс дб; ? "г”;

цел 1 := цел трафарет (лок лог);

пока литеру в цифру (С (п мод У основание) ) прип s;

п -5-:= У основание; п ¥= Д О

цк пропуск кц;

если вегр s < 1

то (1 - вегр s) X "О” прип s

иначе не конч := истина

все) >,

проц счет 0 чик лит ер (і = цел :

(цел 1 := 0;

пока ? "а” цк (повт >0 I 1+:=повт) кц; 1) ;

выб тип из трафарет в

целое

(у В] і

< (Д цел і) : ред Д цел (і) >