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