Форма вызова команды ul - .ul N, начальное зна-


49
АПК.00322-01 33 01-15

чение - выключить, нет аргументов - N=1, приме-
чание - Е. Подчеркнуть текст, содержащийся в
следующих N строках входного текста, при этом
режим "без заполнения" не включается. Выход,
сгенерированный командой tl, попадает под дей-
ствие команды ul, но при этом N не уменьшается.
Если N>1, то имеется опасность того, что интер-
полированное "захватыванием" макро может выдать
строки текста в пределах данного пространства.
Чтобы избежать этого можно соответствующим обра-
зом изменять окружение (см. разд. 17);

ft - изменить текущий шрифт. Форма вызова команды ft
- .ft F, начальное значение - обычный, нет аргу-
ментов - предыдущий, примечание - Е. Заменяет
текущий шрифт на F. Чтобы последующий текст был
подчеркнут, нужно указать F=I. Чтобы вернуться к
обычному шрифту (без подчеркивания) надо указать
F=R. Аналогичный результат получится, если вос-
пользоваться функцией пepeключения шрифта \fN,
где N - тип шрифта;

cu - подчеркивать следующие N строк. Форма вызова ко-
манды cu - .cu N, начальное значение - выклю-
чить, нет аргументов - N=1, примечание - Е. Раз-
новидность команды ul, при которой подчеркивает-
ся каждый символ.




50
АПК.00322-01 33 01-15

10.3. Управляющие символы

Kак управляющий символ ".", так и управляющий символ,
не вызывающий прерываний, " ' " при желании можно изме-
нить. Разумеется, такое изменение должно согласовываться с
построением любых макроопределений, встречающихся в преде-
лах действия этого изменения, и, особенно, всех макроко-
манд, вызываемых по "ловушке".

Используются следующие команды установки управляющего
символа:

cc - установить основной управляющий символ. Форма
вызова команды cc - .cc c, начальное значение -
., нет аргументов - ., примечание - Е. Основной
управляющий символ устанавливается в "c" или,
если c отсутствует, устанавливается в ".";

c2 - установить управляющий символ без прерывания.
Форма вызова команды c2 - c2 c, начальное значе-
ние - ', нет аргументов - ', примечание - Е.
Управляющий символ, не вызывающий прерывания за-
полнения, устанавливается в "c" или, если c от-
сутствует, устанавливается в " ' " (апостроф).








51
АПК.00322-01 33 01-15

10.4. "Прозрачный" вывод

Входная строка, начинающаяся с последовательности \!
считывается в режиме копирования и выводится "в чистом
виде" (без начального символа \!), иными словами, эти
строки не поступают на обработку. Этот механизм можно ис-
пользовать для передачи какому-либо постпроцессору управ-
ляющей информации или помещения управляющих строк в макро-
команду, созданную при отведениях.

10.5. Комментарии и скрытые символы новой строки

Слишком длинные входные строки, которые должны оста-
ваться одной строкой (например, определение цепочки или
незаполняемый текст), можно разбить на несколько физичес-
ких строк, каждая из которых, кроме последней, должна за-
канчиваться знаком переключения \. Последовательность
"\(символ новой строки)" всегда игнорируется, если только
она не появляется в комментариях. Комментарий можно вста-
вить в конец любой строки, написав перед ним \". Символ
новой строки, находящийся в конце комментария, не может
быть скрытым. Строка, начинающаяся с \", будет восприни-
маться как пустая строка и обрабатываться как команда .sp
1. Комментарий может также занимать целую строку если она
начинается с ``.\"''.





52
АПК.00322-01 33 01-15


11. ЛОКАЛЬНЫЕ ВЕРТИКАЛЬНЫЕ И
ГОРИЗОНТАЛЬНЫЕ ПЕРЕМЕЩЕНИЯ И ФУНКЦИЯ
ШИРИНЫ


11.1. Локальные перемещения

Функции \v'N' и \h'N' можно использовать для локаль-
ных перемещений по вертикали и горизонтали, соответствен-
но. Расстояние N может быть отрицательным. Перемещениями в
положительных направлениях считаются перемещения вправо и
вниз. Локальным перемещением является любое перемещение в
пределах одной строки. Чтобы избежать неожиданных верти-
кальных смещений, необходимо следить за тем, чтобы общее
перемещение по вертикали, в пределах слова в заполненном
тексте и в пределах строки в остальных случаях, равнялось
нулю. Последовательности переключения, обеспечивающие раз-
личные подвижки, указаны в табл.5.












53
АПК.00322-01 33 01-15

Таблица 5
Переключательные последовательности
---------------------------------------------------
Iверти- | действие Iгоризон-| действие I
Iкальные | Iталные | I
Iподвижки| Iподвижки| I
I--------+---------------+--------+-------------- I
I \v'N' |подвинуть I \h'N' |подвинуть I
I |на расстояние NI |на расстояние NI
I \u |1/2 строки I\(проб.)|незаполнять I
I | вверх I |пробел I
I \d |1/2 строки I \0 |пробел рав- I
I | вниз I |ный ширине I
I \r |1 строку I |цифры I
I | вверх I | I
---------------------------------------------------

11.2. Функция ширины

Функция ширины \w'цепочка' вычисляет ширину "цепочки"
(в базовых единицах). Изменения типа шрифта можно безопас-
но вставлять в цепочку, при этом текущие условия формати-
рования не изменяются. Например, команду .ti -\w'1.'u
можно было бы использовать для формирования временного
отступа слева равного размеру цепочки "1."





54
АПК.00322-01 33 01-15

11.3. Отметка горизонтального положения

Переключающая последовательность \kx вызовет запоми-
нание в регистре x текущей горизонтальной позиции во вход-
ной строке.

Переключающая последовательность \jx вызовет запоми-
нание в регистре x текущей горизонтальной позиции в выход-
ной строке.

Например, конструкция
\jxслово \h'|\nx+2u'слово
будет выделять "слово", посредством возврата к
его началу и повторной его печати, в результате чего
будет напечатано жирным шрифтом "слово".
При использовании этой конструкции следует иметь в виду,
что занесение значения в регистр произойдет после того,
как будет сформировано слово, и в такой конструкции
\jxслово\h'|\nx+2u'слово
содержимое регистра x будет равно нулю (если этот регистр
ранее не был определен).










55
АПК.00322-01 33 01-15


12. НЕКОТОРЫЕ СПЕЦИАЛЬНЫЕ ПРИЕМЫ
ПЕЧАТИ


12.1. Печать с наложением на одной позиции

Функция печати с наложением в одной позиции \o'цепоч-
ка' обеспечивает автоматически центрированную печать на
одной позиции до девяти символов. Символы "цепочки" печа-
таются один поверх другого с выравниванием по центру каж-
дого символа. Общая ширина будет равнa ширине самого широ-
кого символа. Цепочка не должна содержать локальных верти-
кальных перемещений. Например, последовательность \o'+_'
даст _.

12.2. Символы нулевой ширины

Функция \zc будет выводить символ c, не оставляя за
ним интервала, и может быть использована для получения
комбинации символов посредством печати на одном месте с
выравниванием по левому краю. Например, последовательность
\zO/ напечатает перечеркнутое O, а последовательность \z|_
напечатает _.







56
АПК.00322-01 33 01-15

12.3. Рисование линий

При использованиии функции \l'Nc' будет формироваться
цепочка повторяющихся символов 'c' слева направо длиной N.
Если 'c' можно понять как продолжение выражения N, то его
можно отделить от N символом \&. Если 'c' не задано, то
используется символ подчеркивания '_'. При отрицательном N
перед "рисованием" цепочки выполняется горизонтальное пе-
ремещение в обратном направлении на расстояние N. Если от-
ношение N/(ширина 'c') имеет остаток, то интервал, равный
значению остатка, помещается в начале (с левого края) це-
почки. В тех случаях, когда символы должны быть напечатаны
слитно, например, линейка подчеркивания, оставшееся
пространство закрывается с помощью наложения. Если N
меньше ширины символа 'c', то печатается один символ 'c',
и его середина находится на расстоянии N. Например, можно
написать следующую макрокоманду для подчеркивания цепочки:
.de us
\\$1\\l'-\\w%\\$1%u_'
..
Таким образом, вызвав макро
.us "Подчеркнутые слова"
получим
__________________

Функция \L'Nc' будет "вычерчивать" вертикальную ли-
нию, состоящую из символов c, расположенных в столбец с
интервалом в одну строку; если "c" не указано, то, по



57
АПК.00322-01 33 01-15

умолчанию, используется символ "|" (вертикальная черта).
Линия начинается без какого-либо начального смещения отно-
сительно основания текущей строки. Положительное N опреде-
ляет линию, проведенную вниз, а отрицательное N определяет
линию, проведенную вверх. После вычерчивания линии никаких
компенсирующих перемещений не выполняется и текущее поло-
жение точки будет находиться в конце линии.

Используя совместно функции вычерчивания горизонталь-
ных и вертикальных линеек, можно, например, заключить не-
который блок текста в рамку.




















58
АПК.00322-01 33 01-15


13. ПЕРЕНОС СЛОВ

Механизм автоматического переноса слов можно отклю-
чить и включить. Символ указателя переноса (последователь-
ность \%)можно вставить в слово для указания желаемых по-
зиций переноса или написать перед словом для отмены пере-
носа только этого слова.

Для автоматического переноса подходят только слова,
содержащие внутри цепочку алфавитных символов, окруженную
цепочками неалфавитных символов. Слова исходного текста,
содержащие дефисы (минусы), например, такие как из-за,
темно-серо-фиолетовый или Семенов-Тянь-Шаньский переносят-
ся после этих символов независимо от того, действует или
нет режим автоматического переноса.

Используются следующие команды переноса слов:

nh - отключить режим автоматического переноса. Форма
вызова команды nh - .nh, начальное значение -
да, нет аргументов - нет, примечание - Е;

hy - включить режим автоматического переноса слов.
Форма вызова команды hy - .hy N, начальное зна-
чение - N=1, нет аргументов - N=1, примечание -
Е. Включить автоматический перенос слов при N>=1
или отключить при N=0.

hc - установить символ указателя переноса. Форма вы-
зова команды hc - .hc c, начальное значение -


59
АПК.00322-01 33 01-15

нет, нет аргументов - нет, примечание -Е. Символ
указателя переноса устанавливается в c или по
умолчанию \%. Указатель переноса при печати не
выводится.


























60
АПК.00322-01 33 01-15


14. ЗАГОЛОВКИ ИЗ ТРЕХ ЧАСТЕЙ

Команда формирования заголовка tl обеспечивает авто-
матическое размещение в трех полях строки: левом,
центральном и правом. Длина заголовка определяется коман-
дой lt. Команду tl можно использовать где угодно и она не
зависит от процесса обработки обычного текста. Как прави-
ло, эта команда используется в макрокомандах обработки на-
чала и конца страницы.

Используются следующие команды формирования заголов-
ка:

tl - "заголoвок из трех частей". Форма вызова команды
tl - .tl 'лев.'центр.'прав.', начальное значение
- нет, нет аргументов - нет, примечание -нет.
Цепочки "лев.", "центр." и "прав." выравниваются
по левому краю, центрируются и выравниваются по
правому краю, соответственно, в пределах текущей
длины заголовка. Любая из цепочек может быть
пустой и допускается перекрытие. В качестве
разграничителя цепочек можно использовать любой
символ. Если в любом из полей встречается символ
номера страницы (изначально %), то он заменяется
на текущий номер сраницы, в формате, который ус-
тановлен для регистра %, содержащего номер стра-
ницы;




61
АПК.00322-01 33 01-15

pc - установить символ номера страницы. Форма вызова
команды pc - .pc c, начальное значение - %, нет
аргументов - выключить, примечание - нет. Символ
номера страниц устанавливается в c или (если ар-
гумент отсутствует) символ ликвидируется.
Регистром номера страницы остается %;

lt - установить длину заголовка из трех частей. Форма
вызова команды lt - .lt _N,начальное значение -
65n, нет аргументов - предыдущее, примечание
-Е,n. Длина заголовка из трех частей устанавли-
вается в _N. Длина строки и длина заголовка яв-
ляются независимыми величинами. В заголовках
отступы не делаются.

















62
АПК.00322-01 33 01-15


15. НУМЕРАЦИЯ СТРОК ВЫХОДНОГО ТЕКСТА

С помощью команды nm можно подключить механизм авто-
матической последовательной нумерации строк выходного
текста. При задании этого режима перед каждой выходной
4 строкой печатается трехзначный номер строки в виде
арабских цифр, за которым следует пробел. Таким образом,
строки смещаются на четыре позиции, но длина строки сохра-
няется. Для того чтобы обеспечить совпадение правого края
8 с имевшимся ранее, может потребоваться уменьшение длины
строк. Пустые строки и прочие промежутки, а также строки,
сгенерированные по команде tl, не нумеруются. Нумерацию
можно временно отменить с помощью команды nn; ее также
12 можно отменить, используя команду .nm без параметров, за
которой позднее для восстановления нумерации с последнего
номера последует .nm +0. Кроме того, в поле номера строки
можно задать отступ I для номера строки и количество про-
16 белов S, отделяющих текст от номера. Далее можно по-
пробовать, чтобы печатались только те номера строк, кото-
рые кратны некоторому числу M (при этом поле нумерации у
других строк остается незаполненным).

20 Используются следующие команды:

nm - включить режим нумерации выходных строк. Форма
вызова команды nm - .nm _N M S I, начальное зна-
чение - нет, нет аргументов - выключить, приме-
чание -Е. Если _N задано, включается нумерация



63
АПК.00322-01 33 01-15

строк и следующей строке присваивается номер _N
по отношению к последней пронумерованной строке.
Значениями по умолчанию являются M=1, S=1 и I=0.
Параметры, соответствующие пропущенным аргумен-
там, не меняются; нецифровой аргумент считается
отсутствующим. При отсутствии всех аргументов
режим нумерации отменяется. Номер следующей
строки сохраняется для возможного дальнейшего
использования в числовом регистре ln;

nn - не нумеровать следующие N строк. Форма вызова
команды nn - .nn N, начальное значение -нет, нет
аргументов - N=1, примечание - Е. Следующие N
строк выходного текста не нумеруются.

В качестве примера, текст данного раздела был прону-
мерован при помощи команды .nm 1 4, которая расположена в
начале раздела. В конце первого абзаца стояло .nm, а перед
24 этим абзацем нумерация была восстановлена при помощи ко-
манды .nm +0, и в конце раздела стоит снова .nm. Длина
строк была также изменена в соответствующих местах. Другим
примером может служить запись вида .nm +5 5 x 3, которая
28 включает режим нумерации, при этом номер очередной строки
текста будет на 5 больше номера последней пронумерованной
строки; М=5 означает, что номер ставится пeред каждой
пятой строкой; интервал между текстом и номером не изменя-
32 ется и отступ I устанавливается равным 3.




64
АПК.00322-01 33 01-15


16. УСЛОВНЫЙ ВВОД ТЕКСТА

Через "c" обозначено односимвольное встроенное имя
условия, "!" обозначает отрицание, "N" - численное выраже-
ние; "цеп1" и "цеп2" являются цепочками, разделенными
любым символом, не встречающимся в цепочках и отличным от
пробела и цифры; "что-либо" - то, что вводится по условию.

Используются следующие команды:

if - 1-ая форма вызова команды - .if c что-либо, на-
чальное значение - нет, нет аргументов -нет,
примечание - нет. Если условие c истинно, ввести
"что-либо"; в случае, когда вводимый текст зани-
мает несколько строк, используйте \- что-либо \-
. 2-ая форма вызова команды - .if !с что-либо,
начальное значение - нет, нет аргументов - нет,
примечание -нет. Если условие с ложно, то ввести
"что-либо". 3-я форма вызова команды - .if N
что-либо, начальное значение - нет, нет аргумен-
тов - нет, примечание - u. Если выражение N > 0,
то ввести "что-либо". 4-ая форма вызова команды
- .if !N что-либо, начальное значение - нет, нет
аргументов - нет, примечание - u. Если выражение
N <= 0, то ввести "что-либо". 5-ая форма вызова
команды - .if 'цеп1'цеп2' что-либо, начальное
значение - нет, нет аргументов - нет, примечание
- нет. Если "цеп1" совпадает с "цеп2", то ввести



65
АПК.00322-01 33 01-15

"что-либо". 6-ая форма вызова команды - .if
!'цеп1'цеп2' что-либо, начальное значение - нет,
нет аргументов - нет, примечание - нет. Если
"цеп1" не совпадает с "цеп2", то ввести "что-
либо";

ie - часть if конструкции if-else. Форма вызова ко-
манды ie - .ie c что-либо, начальное значение -
нет, нет аргументов - нет, примечание - u. Все
перечисленные выше формы справедливы и для этой
команды (аналогичной if);

el - часть else конструкции if-else. Форма вызова ко-
манды el - .el c что-либо, начальное значение -
нет, нет аргументов - нет, примечание - u. Имена
встроенных условий приводятся на рис.2
Встроенные условия
-------------------------------------------
| имя | имеет значение "истина", если |
|условия| |
|-------|---------------------------------|
| o | номер текущей страницы -нечетный|
| e | номер текущей страницы - четный |
-------------------------------------------
рис.2

Если условие c истинно, или если число N больше нуля,
или если цепочки тождественно совпадают (включая перемеще-




66
АПК.00322-01 33 01-15

ния, размер символов и шрифт), то вводится "что-либо".
Если условию, числу или сравниваемым цепочкам предшествует
знак !, то смысл условия меняется на противоположный.

Пробелы между условием и текстом, предназначенным для
ввода ("что-либо"), игнорируются. "Что-либо" может содер-
жать либо одну строку исходного текста (обычного текста,
макрокоманды или чего-нибудь еще), либо несколько входных
строк. В случае нескольких строк первая строка должна на-
чинаться с левого ограничителя \- . Последняя строка
должна заканчиваться правым ограничителем \- .

Команда ie (if-else) идентична команде if за исключе-
нием того, что запоминается условие ввода. Последующая до-
полняющая команда el (else) будет использовать обратное
значение этого условия. Блоки ie-el могут быть вложенными.

Приведем несколько примеров:
.if e .tl'Четная страница' %'''
эта команда выводит заголовок, если номер текущей страницы
четный. В следующем примере:
.ie \n%>1 \{\
'sp 3v
.tl 'страница %'''
'sp |7v \}\
.el .sp |15v
первая страница обрабатывается не так, как остальные.





67
АПК.00322-01 33 01-15


17. ПЕРЕКЛЮЧЕНИЯ ОКРУЖЕНИЯ

Некоторые параметры, которые управляют обработкой
текста собираются вместе в "окружение", которое может пе-
реключаться пользователем. Параметры "окружения" это те
параметры, в колонке примечаний к описанию которых указано
E; добавим, что частично собранные строки и слова тоже по-
падают в "окружение". Все другие параметры глобальны и не
зависят от "окружения", например, странично-
ориентированные параметры, параметры отведений, числовые
регистры и определения макро и цепочек. При начальном
включениии какого-либо окружения все параметры принимают
значения по умолчанию. Используется команда ev - переклю-
чить окружение. Форма вызова команды ev - .ev N, начальное
значение - N=0, нет аргументов - предыдущее, примечание -
нет. Текущее окружение переключается на окружение N
(0<=N<=2). Переключение производится как-бы "упрятыванием"
текущего окружения, и, поэтому, восстановление ("извлече-
ние") предыдущего окружения должно обязательно произво-
диться при помощи команды .ev, а не какой-либо определен-
ной ссылки.









68
АПК.00322-01 33 01-15


18. ВСТАВКИ ИЗ СТАНДАРТНОГО ВВОДА

Ввод может быть временно переключен на устройство
стандартного ввода при помощи команды rd. Обратное перек-
лючение происходит при обнаружении двух подряд пустых
строк (дополнительная пустая строка не используется). Этот
механизм позволяет вносить исправления и дополнения, нап-
ример, в документацию типа писем. В системе ДЕМОС стан-
дартными средствами ввода могут быть клавиатура пользова-
теля, линия передачи или файл. Используются следующие ко-
манды:

rd - читать вставку со стандартного ввода. Форма вы-
зова команды rd - .rd подсказка, начальное зна-
чение - нет. нет аргументов - BEL, примечание -
нет. Читать вставку с устройства стандартного
ввода до тех пор, пока не будут найдены подряд
два знака новой строки. Если стандартным устрой-
ством ввода является клавиатура пользователя, на
терминал пользователя выводится "подсказка". С
командой rd можно обращаться как с макрокомандой
и помещать после "подсказки" аргументы;

ex - выход из системы pif. Форма вызова команды ex -
.ex, начальное значение - нет, нет аргументов -
нет, примечание - нет. По этой команде осу-
ществляется выход из системы pif. Обработка




69
АПК.00322-01 33 01-15

текста прекращается, как в случае завершения
всего ввода.

Если изменения должны быть введены с клавиатуры тер-
минала, в то время как выходной текст выводится на терми-
нал, параметр командной строки - q будет отменять отобра-
жение на терминале вводимой с клавиатуры информации и
подсказки, за исключением сигнала "звонок" (BEL).

Регулярный ввод и ввод вставок не может производиться
одновременно с устройства стандартного ввода.

Например, многочисленные копии типового письма можно
подготовить, записывая изменения ко всем копиям в один
файл, используемый в качестве стандартного ввода, и за-
ставляя файл, содержащий письмо, неоднократно вызывать
себя с помощью команды nx (см. разд.19). Процесс в конце
концов закончится по команде ех в файле исправлений.














70
АПК.00322-01 33 01-15


19. ПЕРЕКЛЮЧЕНИЕ ВХОДНОГО И ВЫХОДНОГО
ФАЙЛА

Используются следующие команды:

so - переключить исходный файл. Форма вызова команды
so - .so имяфайла, начальное значение - нет, нет
аргументов - нет, примечание - нет. Верхний уро-
вень ввода (чтение файла) переключается на файл
"имяфайла". Команда so, обнаруженная в макроко-
манде не действует до тех пор, пока уровень вво-
да не возвращается к уровню ввода из файла.
Когда новый файл исчерпан, ввод опять происходит
из первоначального файла. Команды so могут быть
вложенными;

nx - начать чтение другого файла. Форма вызова коман-
ды nx - .nx имяфайла, начальное значение - нет,
нет аргументов - конец, примечание - нет. Теку-
щий файл считается законченным и ввод переключа-
ется немедленно на файл "имяфайла";

pi - передать результат программе. Форма вызова ко-
манды pi - .pi программа, начальное значение -
нет, нет аргументов - нет, примечание - нет. Эта
команда должна появиться раньше любых операторов
печати. Никакие аргументы в программу не переда-
ются.



71
АПК.00322-01 33 01-15


20. ПРОЧИЕ КОМАНДЫ

К этим командам относятся команды:

mc - указать граничный символ. Форма вызова команды
mc - .mc c N, начальное значение - нет, нет ар-
гументов - выключить, примечание - E, n. Указы-
вает, какой символ должен располагаться на
расстоянии N после каждой непустой строки
(исключая строки, формируемые командой tl). Если
строка выходного текста является слишком длинной
(например, в случае работы в режиме "без запол-
нения"), то признак будет добавлен к строке.
Если N не задано, используется предыдущее значе-
ние N; начальное значение N равно 2n.

tm - выдать на терминал "цепочку". Форма вызова ко-
манды tm - .tm цепочка, начальное значение -
нет, нет аргументов - NL, примечание - нет.
После пропуска начальных пробелов "цепочка" (ос-
таток строки команды) считывается в режиме копи-
рования и выводится на терминал пользователя;

ig - игнoрировать строки исходного текста. Форма вы-
зова команды ig - .ig yy, начальное значение -
нет, нет аргументов - .., примечание - нет.
Команда действует точно так же, как команда de
(см. подразд.7.5) за исключением того, что ввод
не происходит. Исходный текст считывается в ре-


72
АПК.00322-01 33 01-15

жиме копирования и все автоматически увеличива-
емые регистры будут изменяться;

pm - напечатать список макрокоманд. Форма вызова ко-
манды pm - .pm T, начальное значение - нет, нет
аргументов - все, примечание - нет. Печатать
макрокоманды. На терминале пользователя печата-
ются имена и размеры всех определенных макроко-
манд и цепочек; если t задано, то печатается ин-
формация только об общем размере. Единицей изме-
рения является блок из 128 символов.

fl - сбросить накопленный вывод. Форма вызова команды
fl - .fl, начальное значение - нет, нет аргумен-
тов - нет, примечание - нет. Сбросить буфер вы-
вода. Используется для вынужденного вывода при
отладке в диалоговом режиме.














73
АПК.00322-01 33 01-15


21. ВЫХОДНЫЕ СООБЩЕНИЯ И СООБЩЕНИЯ ОБ
ОШИБКАХ

Выходные результаты работы команд tm, pm и "подсказ-
ка" команды rd, так же как и сообщения об ошибках, выдают-
ся на стандартное устройство выдачи сообщений (STDERR)
системы ДЕМОС. Это устройство отличается от устройства