(подвтекст):

для і до вегр F из код из f пока есть

цк ст (лит внутр, внешн) табл = (F из код из f) (і];

(внутр из табл = лит I k := внешн из табл ;

есть := истина)

кц

быв;

если есть то

выб текст из f в

(текст tl):tl [р] [1] fc] :=к

(подвтекст t2) : t2 [р] [1] [с] := к

быв;

с+:=1;

если тпоз вне ппоз то ппоз := тпоз

инее возм установка (f) А

позиция (р из ппоз, 1 из ппоз, 1) вне тпоз

то ппоз := тпоз;

(сжимаем (f) і

с размер строчки и страницы, содержащей логический размер дан­ной книги, и всех последующих строчек и страниц может увели­читься {например, до размеров, с которыми книга была заведена (10.3.l-4.ee) первоначально, или до размеров, предполагаемых из макс позиция из кан из f} с)

все

иначе к

если -S (испр ошибка литеры из f) (f, k)

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

все;

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

все

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

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

:) проц ^след позиция = (имя файл f) пуст:

(-* строчка хороша (f, для чтения из f) I не определено) строчка теперь хороша [ 10.3.1.6.dd} , а настройка на запись/чтение такая же, как и при входе fi;

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

£Для бесформатного ввода можно использовать ввод (а) и чит

(10.5.l.e). Значения из данной книги присваиваются каждому выстроенно­му имени N из списка данных следующим образом:

аа) Если вид этого N специфицируется посредством имя Д цел, то сна­чала в данной книге ищется первая литера, не являющаяся пробелом (при необходимости отыскиваются хорошие позиции в последующих строчках); затем из данной книги читается наибольшая строка, которую можно „со­ставить” (10.3.4.1.1.kk) под управлением некоторого шаблона, имеющего форму

+ п (kl) ” и (k2) dd или n (к2) dd

(где-кі и к2 выдают произвольные неотрицательные целые числа); эта строка преобразуется в целое число и присваивается N; если такое преобра­зование не было успешным, то вызывается процедура обработки события, соответствующая при ошибке значения.

bb) Если вид этого N специфицируется посредством имя Д вещ, то сна­чала в данной книге ищется первая литера, не являющаяся пробелом (при необходимости отыскиваются хорошие позиции в последующих строчках); затем из данной книги читается наибольшая строка, которую можно соста­вить под управлением некоторого шаблона, имеющего форму

+ n (kl) n (k2) d или n (к2) d,

с идущими затем

. n (k3)dd или ds.

и, возможно, далее

е п (к4) + п (к5) п (кб) dd или

е п (к5) п (кб) dd;

эта строка преобразуется в вещественное число и присваивается N; если та­кое преобразование не было успешным, то вызывается процедура обработ­ки события, соответствующая при ошибке значения.

сс) Если вид этого N специфицируется посредством имя Д компл, то сначала вводится (как в bb) вещественное число и присваивается первому подымени этого N; затем в данной книге ищется первая литера, не являю­щаяся пробелом, а потом вводится некоторая литера и, если она не являет­ся ни ”1”, ни ”.i”, ни ”и”, вызывается процедура обработки события, соот­ветствующая при ошибке литеры (10.3.1.3.СС), с предлагаемой литерой ”1”; наконец, вводится вещественное число и присваивается второму поды­мени данного N.

dd) Если вид этого N специфицируется посредством имя лог, то сначала в данной книге ищется первая литера, не являющаяся пробелом (при необ­ходимости отыскиваются хорошие позиции в последующих строчках); за­тем читается некоторая литера; если эта литера та же, что и выдаваемая да (нет), то N присваивается истина (ложь), а в противном случае вызывается процедура обработки события, соответствующая при ошибке литеры, с предлагаемой литерой нет.

ее) Если вид этого N специфицируется посредством имя Д бит, то про­изводится ввод (как в dd) для подымен этого N, одного за другим (с пере­ходом на новую строчку, когда это требуется).

ff) Если вид этого N специфицируется посредством имя лит, то снача­ла, если текущая строчка исчерпана, отыскивается хорошая позиция на не­которой последующей строчке, а затем читается и присваивается N некото­рая литера.

gg) Если вид этого N специфицируется посредством имя [ ] лит, то производится ввод (как в ff) для'подымен этого N, одного за другим (с переходом на новую строчку, когда это требуется).

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, лит с) лит:

ft запрашивает литеру, содержащуюся в ,'s'; если читается литера, не входящая в 's', вызывается процедура обработки события, соответствующая 'при ошибке литеры', с предлагаемой литерой 'с' ft если (к пусто I проверить позицию (f);

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

к пусто := истина;

литера в строке (к, лок цел, s) то к

иначе лит предл := с;

если (испр ошибка литеры из f) (f, предл) то (литера в строке (предл, лок цел, s) I предл I не определено; с)

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

все:

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

все;

оп ! = (лит s, с) лит: строк (S) ! с;

проц проп ft пуск ft нач ft альных ft пробелов =

пуст:

пока (к пусто I след позиция (f) );

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

проц проп ft уск ft пробелов = пуст:

пока 7’*1—” цк пропуск кц;

проц чит р ать ft циф ft ры ft = строк:

(строк f :=”012345б789” !”,0”:

пока ? ”,0123456789” цк t плюспр к кц; t);

проц чит знак — лит:

(лит t = (проп пробелов; ? ”+— ” I kl ”,+”);

проп пробелов; t);

проц чит чис (к ло ft=строк:

(лит t = чит знак; t + чит циф);

проц чит вещ ft естественное ft = строк:

(строк t := чит знак;

("-і? .’’It плюспр чит циф I к пусто := ложь);

( ? ” . ” t плюспр ” . ” + чит циф);

( ? ”юе I t плюспр ”10” + чит чис); ,t);

для j до вегр у

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

к пусто := истина;

выбу [j] в

< (имя Д цел идц) :

(проп нач пробелов;

не конч := -«строку в Д цел (чит чис, 10, идц)) >,

< (имя Д вещ идв): (проп нач пробелов;

не конч:=

строку в Д вещ (чит вещ, идв) ) >,

< (имя Д компл идк) : (проп нач пробелов: не конч:=

-> строку в Д вещ (чит вещ, ивч идк); проп пробелов; „і и і „!” 1”;

не конч := не конч V

строку в Д вещ (чит вещ, имчидк)) >, (имя лог ил):

(проп нач пробелов;

ил := (да + нет) ! нет = да),

< (имя Д бит идб) :

для і до Д размер бит

цк ввод (f, F из идб) [і]) кц >, (имя лит ил): (след позиіщя (f) :

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

(имя [ ] лит имл):

для і от нигр имл до вегр имл цк след позиция (f);

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

(имя строк ис): начало строк t: пока проверить позицию (f); если строчка окончена (f)

V лог файл окончен (f) то ложь иначе ввести литеру (f, к); к пусто := литера в строке (к, лок цел, стопе из f) все

цк t плюспр к кц;

ис := t конец быв;

(“’кпусто I назад (f));

если не конч

то ( (испр ошибка значения из f) (f) I

не определено);

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

все

кц

конец

быв кц

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

все:

проц (имя файл, [ ] об (вводимое, проц (имя файл пуст)) пуст get = ввод:

  1. проц ^ввести литеру = (имя файл f, имя лит лит) пуст: если открыт из f Л строчка окончена (f) Л -»лог файл окончен (f)

то имя позиция тпоз = тпоз из f:

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

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

цел р = р из тпоз, 1 = 1 из тпоз, с = с из тпоз;

сизтпоз+:=1;

лит := выб текст из f в

(текст tl): tl [pl [1] [с],

(подвтекст t2):

(лит k := t2 [р] [1] [с]:

лог есть := ложь;

для і до вегр F из код из f пока -- есть

цк ст (лит внутр, внешн) табл =

(F из код из f) [і];

(внешн из табл = k I к := внутрь из табл:

есть := истина)

цк;

если есть то к

иначе к :=”л.”;

если (испр ошибка литеры из f) (f, к) то к

иначе не определено; ” . ”

все;

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

все)

быв

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

все ft настройка на чтение сохраняется

  1. проц ^-проверить позицию = (имя файл f) пуст:

начало лог чтение = для чтения из f;

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

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