Д нарядность вещ

ЦК

если S [і] =# ” . ”

то х := х X Д 10.0 + У литеру в цифру (s [j ':= і]);

длина +:= 1

все ft все значащие цифры преобразованы ft

кц;

ft предварительно установить порядок: ft

цел пор ііядок ft := (р> j I р - j - 1 I p — j), показ := 0;

ft преобразовать порядок: ft

лог безопасно :=

если е < вегр s

то строку в Д цел (s [е + 1 :], 10, показ)

иначе истина

все; -

ft подготовить представление Д макс вещ для сравнения с Д вещ значением, которое должно быть выработано: ft

Д вещ макс мант ft исса ft := Д макс вещ, цел макс пор іАядок ft := 0;

Д нормализовать (макс мант, длина, 0, макс пор);

пор+:= показ;

если и безопасно V (пор > макс пор V пор = макс пор Л х > макс мант)

то ложі.

иначе г := (s [1] =”+” Ixl — х) X Д 10.0 t пор; истина все

конец;

  1. проц ^литеру в цифру = (лит х) цел:

10І цел і;

литера в строке (х, і,” 0123456789 abcdef” ); і —1);

  1. проц литера в строке = (лит с, имя цел і, строк s) лог:

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

для к от нигр s до вегр s пока "1 есть

цк (с = s [k] І і := к; есть := истина) кЦ;

есть);

проц (лит, имя цел, строк) лог char in string = литера в і строке;

ш) цел Д разрядность цел =

ft наименьшее целое значение, такое, что 'Д мак'с цел' можно преобразовать без ошибки, используя трафарет п (Д разрядность цел) d ft

(цел с := 1

;пока Д 10 t (с — 1) < Д.1 X Д макс цел цк с +:= 1 кц;

<0;

цел L int width = Д разрядность цел;

п) цел Д разрядность вещ =

наименьшее целое значение, такое, что при преобразовании

' 1.0' и ' 1.0 + Д точность вещ’, с помощью трафарета

d.n (Д разрядность вещ — 1) d порождаются разные строки $

  1. - С целч (Д лг (Д точность вещ) / Д лг (ДЮ));

цел L real width = Д разрядность вещ;

о) цел Д разрядность порядка =

ф наименьшее целое значение, такое, что 'Д макс вещ'

можно преобразовать без ошибки, используя трафарет

d.n (Д разрядность вещ — 1) den (Д разрядность

порядка) d#

  1. + С целч (Д лг (Д лг (Д макс вещ) / Д лг (Д 10)) /

Длг (ДЮ));

цел L exp width » Д разрядность порядка;

  1. Виды для обмена.

  1. вид *-провывод $ простые для вывода = об (< Д цел >, < Д цещ >, < Д компл >, лог, < Д бит >, лит, [ ] лит);

  2. вид ’'выводимое = с фактический-описатель, специфицирующий вид, объединенный из {2.13.6.aJ достаточно множества видов, ни один из которых не является 'пустым значением', и не содержит 'подвижное', 'имя', ’процедура', 'объединение' с;

  3. вид ’-проввод простые для ввода |к = об (< имя Д цел >,

  • имя Д вещ >, < имя Д компл >, имя лог,

  • имя Д бит >, имя лит, имя [ ] лит, имя строк);

  1. вид ^вводимое = с фактический-описатель, специфицирующий вид, объ­единенный из {2.1.3.6 а] 'имени подвижного вектора из литерных' вместе с достаточным множеством видов, каждый из которых есть 'имя', за которым следует вид, не содержащий 'подвижное', 'имя', 'про­цедура', 'объединение' с;

{ См. замечания после 10.2.3.1, касающиеся термина .достаточное мно- жество”.!

  1. Выстраивание.

  1. оп ’'стройвывод = (выводимое х) [ ] провывод: с результат „выстраивания” ’х' с;

  2. оп стройввод = (вводимое х) [ ] проввод: с результат выстраивания 'х' с;

  3. Результатом „выстраивания” данного значения V является { одно­мерный } массив W, получаемый следующим образом:

  • требуется, чтобы V , .{если оно есть имя,} не было псевдоименем;

  • некоторый счетчик і устанавливается в 0;

  • V „проходится” {d Jс помощью і;

  • б-1361 !61W составляется из паспорта ((1, і)) и получаемых прохождением V элементов;

если V не есть (есть) имя, то вид результата является видом, специфи­цируемым описателем [ ] провывод ([ ] проввод).

d) Значение V „проходится с помощью счетчика следующим образом: Если V — значение (именует значение), из которого объединен вид, специфицируемый описателем провывод,

то

  • і увеличивается на единицу;

  • элементом, выбираемым по (і) в W, является V;

иначе

Случай А: V — {одномерный } массив (именует одномерный массив) с паспортом ( (1, и) );

  • для j = 1,.... и элемент, выбираемый (подымя, выбираемое) по (І) в V, проходится с помощью і;

Случай В: V - {n-мерный, п > 2} массив (именует массив) с паспортом ((11,Ui), (l2,u2), -, (ln,un)),гдеп>2;

  • для j = 11 Ui массив, выбираемый {2.1.3.4.Ї } (имя, генери­

руемое £2.1.3.4.j] по отрезку (j, (l2,u2,0) ..., (ln,un,0)),прохо­дится с помощью і;

Случай С: V — структура (именует структуру) V 1:

поля (подымена V, именующие поля) этой VI, взятые в их порядке, проходятся с ПОМОЩЬЮ І.

10.3.3. Бесформатный обмен

|При бесформатном обмене элементы „списка данных” обмениваются один за другим через заданный файл. Каждый элемент этого списка данных является либо процедурой расположения, вид которой специфицируется проц (имя файл) пуст (10.3.1.6), либо значением вида, специфицируемого посредством выводимое (при выводе) или вводимое (при вводе). Когда процедура расположения встречается в списке данных, она вызывается с за­данным файлом в качестве параметра. Другие значения в списке данных сначала выстраиваются (10.3.2.3), а затем результирующие значения одно за другим обмениваются через заданный файл.

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

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

I Для бесформатного вывода можно использовать вывод (а) и печ (или зап) (10.5.l.d). Каждое выстроенное значение V из списка данных выводит­ся следующим образом:

аа) Если вид этого V специфицируется посредством Д цел, то сначала, если в остатке текущей строчки нет достаточно места для Д разрядность цел + 2 литер, отыскивается хорошая позиция на некоторой последующей строчке (см. 10.3.3), а затем, если это не начало строчки, дается один пробел и V выводится как бы под управлением шаблона

п (Д разрядность цел - 1) z + d.

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

+ d.n (Д разрядность вещ - 1) den (Д разрядность порядка - 1) z + d.

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

+ d.n (Д разрядность вещ - 1) den (Д разрядность порядка - 1) z

+ d”— і + d.n (Д разрядность вещ — 1) den (Д разрядность порядка — - 1) z + d.

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

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

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

gg) Если вид этого V специфицируется посредством [ ] лит, то эле­менты этого V выводятся (как в ff) один за другим (без прерывающих пробелов, но с переходом на новую строчку, когда это требуется). J а) проц вывод = (имя файл f, ,

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

если открыт из f то

для і до вегр X

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

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

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

начало

[ ] провывод у = стройвывод выв;

< проц Д преоб разование ф вещ =(Д вещ г) строк:

плав (г, Д разрядность вещ + Д разрядность порядка + 4, Д разрядность вещ — 1, Д разрядность порядка + 1) >;

для j до вегр у

цк выб у [j ] в

(об (число, < Д компл >) чиском) : начало строк s :=

выб чиском в

  • (Д цел к) : целое (к, Д разрядность цел + 1) >,

  • (Д вещ г): Д преоб вещ (г) >,

< (Д компл w): Д преоб вещ (вч w) I’.’il.”

+ Д преоб вещ (мч w) > быв;

имя имени позиция тпоз = тпоз из f, цел п = вегр s;

пока

след позиция (f);

(п > с из границы книги (f) I не определено);

с из тпоз + (с из тпоз = 1 I ПІ п + 1) >

с из границы книги (f) + 1

цк -1(испр строчка из f) (f) I вывод (f, нов строчка) ); настроить на запись (f)

кц;

(с из тпоз ¥= 1 I ’’х,” прип s);

для к до вегр s цк вывести литеру (f, s [к]) кц конец $ вывода чисел $

(лог Ь): (след позиция (f);

вывести литеру (f, (b І даі нет))),

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

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

цк вывод (f, F из дбит) [к]) кц >,

(лит к): (след позиция (f); вывести литеру (f, к) ), ([ ] лит стр) :

для к от нигр стр до вегр стр

цк след позиция (f); вывести литеру (f, стр (к]) кц быв кц

конец
быв кц

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

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

Ь) проц *-вывести литеру = (имя файл f, лит лит) пуст:

если открыт из f Л строчка окончена (f)

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

ппоз = заполн из книга из f;

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

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

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

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

(текст): (к :=лит; есть := истина),