(*~\Глагол\ПриложенияLink\МПГ2008 (комп., но не раб.)\~~~~~~~~~~~~~~~~~~~~~~~~*)
(**)                                            ОТДЕЛ Ошибка;
(*============================================================================* 
 * НАЗНАЧЕНИЕ: обработка ошибок
 *============================================================================*)

ИСПОЛЬЗУЕТ
        (*  \Глагол\              *)
 оЦепи    ИЗ "..\..\Отделы\Иное\",

  Слово;

ПОСТ                                      
                                                (* Название ошибок и их коды: *)
  НЕ_ОБЪЯВЛЕНО-              =100;
  ПЕРЕОПРЕДЕЛЕНИЕ-           =101;
  ДЛИННОЕ_НАЗВАНИЕ-          =102;
  НЕЗАКРЫТОЕ_ПРИМЕЧАНИЕ-     =103;
  НЕСОВПАДЕНИЕ_ИМЕНИ-        =104;
  ЭТО_НЕ_ПОСТОЯННАЯ-         =105;
  ЭТО_НЕ_ЗАДАЧА-             =106;
  ЭТО_НЕ_ВИД-                =107;
  ЭТО_НЕ_ПЕРЕМЕННАЯ-         =108;
  ЭТО_НЕ_НАБОР-              =109;
  ЭТО_НЕ_РЯД-                =120;
  ЭТО_НЕ_РАСШИРЕНИЕ-         =121;
  НЕВЕРНЫЙ_ЗНАК_В_ЧИСЛЕ-     =122;
  НЕВЕРНЫЙ_ЗНАК_В_ЦЕПОЧКЕ-   =123;
  НЕВЕРНОЕ_НАЧАЛО_ВИДА-      =124;
  НЕВЕРНОЕ_НАЧАЛО_МНОЖИТЕЛЯ- =125;
  ВЫХОД_ВНЕ_КОЛЬЦА-          =126;
  НЕВЕРНАЯ_ОТМЕТКА-          =127;
  ПОСТОЯННАЯ_НЕ_ЦЕЛАЯ-       =128;
  НЕТ_ОТВЕТА-                =129;
  ЛИШНИЙ_ОТВЕТ-              =130;
  ПРИСВАИВАНИЕ_ОТВЕТУ-       =131;
  НЕВЕРНЫЙ_ВИД_ОТВЕТА-       =132;
  СЛОЖНЫЙ_ОТВЕТ-             =133;
  ОТВЕТ_НЕ_ИСПОЛЬЗОВАН-      =134;
  НЕСООТВЕТСТВИЕ_ПРИЕМНИКА-  =135;
  ВИД_ПРИЕМНИКА-             =136;
  НЕВЕРНЫЙ_ПРИЕМНИК_ОРЯДА-   =137;
  МНОГО_ИСТОЧНИКОВ-          =138;
  МАЛО_ИСТОЧНИКОВ-           =139;
  ПРИСВАИВАНИЕ_НЕ_ПЕРЕМЕННОЙ-=140;
  ДОСТУП_ЗАПРЕЩЕН-           =141;
  ПЕРЕКРЁСТНЫЙ_ВИД-          =142;
  НЕПРАВИЛЬНЫЙ_ВИД_МЕТКИ-    =143;
  ПОВТОРНАЯ_МЕТКА-           =144;
  НЕВЕРНАЯ_ПОСТОЯННАЯ-       =145;
  ИСТОЧНИК_НЕ_ЦЕЛАЯ_ПОСТ-    =148;
  НЕВЕРНЫЙ_ИСТОЧНИК-         =149;
  НУЖНО_0_УРОВЕНЬ-           =150;
  ПЕР_ДЛЯ_ЧТЕНИЯ-            =151;
  ССЫЛКА_НЕ_ОТ_ПЕР-          =152;
  ССЫЛКА_НЕ_ОТ_ДОСТУПА-      =153;
  НОМЕР_НЕ_ОТ_ПЕР-           =154;
  НОМЕР_НЕ_ЦЕЛЫЙ-            =155;
  НЕТ_СВОЙСТВА-              =156;
  ОХРАНА_НЕ_У_ДОСТУПА-       =157;
  ОХРАНА_НЕВОЗМОЖНА-         =158;
  ОЦЕПЬ_НЕДОПУСТИМА-         =159;
  ВИД_НЕ_ДЛЯ_В-              =160;
  МНОЖЕСТВО_НЕ_ИЗ_ЦЕЛЫХ-     =161;
  ОЖИДАЕТСЯ_КЛЮЧ-            =162;
  И_НЕ_С_КЛЮЧОМ-             =163;
  ИЛИ_НЕ_С_КЛЮЧОМ-           =164;
  НЕ_НЕ_С_КЛЮЧОМ-            =165;
  НЕСОВМЕСТИМЫЕ_ВИДЫ-        =166;
  НЕСОВМЕСТИМОЕ_ПРИСВАИВАНИЕ-=167;
  ПЛЮС_НЕПРИМЕНИМ-           =168;
  МИНУС_НЕПРИМЕНИМ-          =169;
  УМНОЖЕНИЕ_НЕПРИМЕНИМО-     =170;
  ДЕЛЕНИЕ_НЕПРИМЕНИМО-       =171;
  ДЕЛИТЬ_НЕПРИМЕНИМО-        =172;
  ОСТАТОК_НЕПРИМЕНИМО-       =173;
  СРАВНЕНИЕ_НЕПРИМЕНИМО-     =174;
  НЕ_СОВМЕСТИМО_С_ЗАДАЧЕЙ-   =175;
  СТРОКА_ВЕЛИКА-             =176;
  МЕТКА_НЕ_СОВПАДАЕТ-        =177;
  НЕПРАВИЛЬНАЯ_МЕТКА-        =178;
  ВИД_ВЫБОРА-                =179;
  ЗАДАЧИ_И_ВИДЫ_ЗАПРЕЩЕНЫ-   =180;
  НЕСУЩЕСТВУЮЩИЙ_ВИД-        =181;
  НЕВЕРНАЯ_ЗАГОТОВКА-        =182;
  РАЗМЕР_БЕЗ_РЯДА-           =183;
  УПР_НЕ_ЦЕЛАЯ-              =184;
  ВЫХОД_ЗА_ГРАНИЦЫ_РЯДА-     =185;
  НЕВЕРНАЯ_РАЗМЕРНОСТЬ-      =186;
  ПЕРЕКРЕСТНОЕ_ИСПОЛЬЗОВАНИЕ-=187;
  ПЕРЕПУТАНЫ_ГРАНИЦЫ-        =188;
  ГРАНИЦЫ_МНОЖЕСТВА-         =189;
  ДЕЛЕНИЕ_НА_НОЛЬ-           =190;
  БОЛЬШОЕ_ЧИСЛО-             =191;
  БОЛЬШОЕ_ПРОИЗВЕДЕНИЕ-      =192;
  БОЛЬШАЯ_СУММА-             =193;
  БОЛЬШАЯ_РАЗНОСТЬ-          =194;
  БОЛЬШОЙ_ВЫБОР-             =195;
  БОЛЬШОЙ_КОД-               =196;
  НЕТ_МЕТОК-                 =197;
  НЕТ_РЕГИСТРОВ-             =198;
  НЕТ_ВЕЩ_РЕГИСТРОВ-         =199;
  МНОГО_МЕТОК-               =200;
  МНОГО_ОТДЕЛОВ-             =201;
  МНОГО_ОБЩЕДОСТУПНЫХ-       =202;
  МНОГО_ВЛОЖЕННЫХ-           =203;
  МНОГО_ПЕР_ЗАДАЧИ-          =204;
  МНОГО_ПРИЕМНИКОВ_ЗАДАЧИ-   =205;
  МНОГО_ПОСТОЯННЫХ-          =206;
  БОЛЬШАЯ_ГЛУБИНА-           =207;
  ПЕР_НЕДОПУСТИМЫ-           =208;
  УКАЗАНИЯ_НЕДОПУСТИМЫ-      =209;
  ОЖИДАЕТСЯ_ЗАДАЧА_УКАЗ_КОН- =210;
  ФАЙЛ_НЕ_ОТКРЫВАЕТСЯ-       =211;
  ФАЙЛ_НЕ_СОЗДАЕТСЯ-         =212;
  ОТДЕЛ_ОТЛИЧАЕТСЯ_ОТ_ФАЙЛА- =213;
  НЕОЖИДАННЫЙ_КОНЕЦ_ФАЙЛА-   =214;
  ТЕКСТОРЕЗ_НЕ_ПОНИМАЕТ-     =215;
  ТЕКСТОРЕЗ_НЕ_ОКОНЧЕН-      =216;
  МНОГО_УРОВНЕЙ_ТЕКСТОРЕЗА-  =217;
  ЛИШНИЙ_КОН_У_ТЕКСТОРЕЗА-   =218;
  НЕТ_ВЫРАВНИВАНИЯ-          =219;
  ПРИЁМНИК_СОСТ_ВИДА-        =220;
  МНОГО_ВЛОЖЕНИЙ_КОЛЬЦО-     =221;
  ПЕР_ИЗ_ДРУГОЙ_ОБЛАСТИ-     =222;
  ОТДЕЛ_ИЗ_РАЗНЫХ_ФАЙЛОВ-    =223;
  НЕОЖИДАННЫЙ_ОТДЕЛ-         =224;
                            
ВИД
  ЗадачаВыводОшибки = ЗАДАЧА (текст-:ЦЕПЬ);

ПЕР
  ВыводОшибки:ЗадачаВыводОшибки; (* внешняя задача *)


(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА ОтметитьИмя-(кодОш:ЦЕЛ; имя-:ЦЕПЬ);
(*
 * Преобразует код ошибки <кодОш> в текстовое сообщение и передает его
 * наверх. При этом дополнительный текст <имя> заменяет в исходном
 * сообщении первый (одиночный) символ '%'.
 *)
ПЕР
  поз:ЦЕЛ;
  текст:ЦЕПЬ[200];
УКАЗ
  ВЫБРАТЬ кодОш ИЗ
    Слово.равно:
    текст:='пропущено "="'
  | Слово.из:
    текст:='пропущена "," или "ИЗ"'
  | Слово.название:
    текст:='пропущено название'
  | Слово.кон:
    текст:='пропущено "КОН"'
  | Слово.до:
    текст:='пропущено "ДО"'
  | Слово.отдел:
    текст:='пропущено "ОТДЕЛ"'
  | Слово.точка:
    текст:='пропущена "."'
  | Слово.запятая:
    текст:='пропущена ","'
  | Слово.двоеточие:
    текст:='пропущено ":"'
  | Слово.пркругл:
    текст:='пропущена ")"'
  | Слово.прквадр:
    текст:='пропущена "]"'
  | Слово.прфигурн:
    текст:='пропущена "}"'
  | Слово.то:
    текст:='пропущено "ТО"'
  | Слово.вып:
    текст:='пропущено "ВЫП"'
  | Слово.к:
    текст:='пропущено "К"'
  | Слово.лкругл:
    текст:='пропущена "("'
  | Слово.присвоить:
    текст:='пропущено ":="'
  | Слово.точкасзап:
    текст:='пропущена ";"'
  | Слово.вида:
    текст:='пропущено "ВИДА"'
  | Слово.цепьпост:
    текст:='пропущена цепочка знаков'
  | НЕ_ОБЪЯВЛЕНО:
    текст:='название не объявлено'
  | ПЕРЕОПРЕДЕЛЕНИЕ:
    текст:='переопределение названия'
  | НЕВЕРНЫЙ_ЗНАК_В_ЧИСЛЕ:
    текст:='неверный знак в записи числа'
  | НЕВЕРНЫЙ_ЗНАК_В_ЦЕПОЧКЕ:
    текст:='неверный знак в цепочке'
  | НЕСОВПАДЕНИЕ_ИМЕНИ:
    текст:='название не совпадает с именем задачи'
  | НЕЗАКРЫТОЕ_ПРИМЕЧАНИЕ:
    текст:='пояснение не закрыто'
  | НЕВЕРНОЕ_НАЧАЛО_ВИДА:
    текст:='неверное начало объявления вида'
  | НЕВЕРНОЕ_НАЧАЛО_МНОЖИТЕЛЯ:
    текст:='неверное начало множителя'
  | ВЫХОД_ВНЕ_КОЛЬЦА:
    текст:='использование "ВЫХОД" вне "КОЛЬЦО"'
  | НЕВЕРНАЯ_ОТМЕТКА:
    текст:='неверно отмеченное название'
  | ЭТО_НЕ_ПОСТОЯННАЯ:
    текст:='результат выражения должен быть постоянным'
  | ПОСТОЯННАЯ_НЕ_ЦЕЛАЯ:
    текст:='вид постоянной не целый'
  | ЭТО_НЕ_НАБОР:
    текст:='понятие не является видом "НАБОР"'
  | СЛОЖНЫЙ_ОТВЕТ:
    текст:='вид ответа задачи не может быть ни видом "НАБОР", ни видом "РЯД"'
  | ОТВЕТ_НЕ_ИСПОЛЬЗОВАН:
    текст:='эта задача возвращает ответ'
  | ПРИСВАИВАНИЕ_НЕ_ПЕРЕМЕННОЙ:
    текст:='присваивание значения не переменной'
  | ДОСТУП_ЗАПРЕЩЕН:
    текст:='доступ не связан с видом "НАБОР" или "РЯД"'
  | ПЕРЕКРЁСТНЫЙ_ВИД:
    текст:='перекрёстное определение вида'
  | НЕВЕРНЫЙ_ПРИЕМНИК_ОРЯДА:
    текст:='неверный приёмник открытого ряда'
  | НЕПРАВИЛЬНЫЙ_ВИД_МЕТКИ:
    текст:='неправильный вид у метки выбора'
  | ПОВТОРНАЯ_МЕТКА:
    текст:='повторное использование значения для метки выбора'
  | НЕВЕРНАЯ_ПОСТОЯННАЯ:
    текст:='неверное значение постоянной'
  | МНОГО_ИСТОЧНИКОВ:
    текст:='источников больше, чем приёмников в объявлении задачи'
  | МАЛО_ИСТОЧНИКОВ:
    текст:='источников меньше, чем приёмников в объявлении задачи'
  | ИСТОЧНИК_НЕ_ЦЕЛАЯ_ПОСТ:
    текст:='источник должен быть постоянной целого вида'
  | НУЖНО_0_УРОВЕНЬ:
    текст:='задача должна быть 0-го уровня'
  | ПЕР_ДЛЯ_ЧТЕНИЯ:
    текст:='эта переменная (свойство) только для чтения'
  | ССЫЛКА_НЕ_ОТ_ПЕР:
    текст:='ссылка не от переменной'
  | НОМЕР_НЕ_ОТ_ПЕР:
    текст:='номер не у переменной'
  | НОМЕР_НЕ_ЦЕЛЫЙ:
    текст:='номер не целого вида'
  | ЭТО_НЕ_РЯД:
    текст:='переменная не является рядом'
  | НЕТ_СВОЙСТВА:
    текст:='свойство не определено в наборе'
  | ССЫЛКА_НЕ_ОТ_ДОСТУПА:
    текст:='ссылка не от доступа'
  | ЭТО_НЕ_РАСШИРЕНИЕ:
    текст:='не является расширением вида'
  | ОХРАНА_НЕ_У_ДОСТУПА:
    текст:='охрана или проверка вида не у переменной вида доступ'
  | ОХРАНА_НЕВОЗМОЖНА:
    текст:='охрана или проверка вида и не у переменной вида доступ, и не у приёмника ссылок'
  | ОЦЕПЬ_НЕДОПУСТИМА:
    текст:='открытая цепь не может быть ни переменной, ни свойством в наборе, ни слагаемым ряда'
  | ВИД_НЕ_ДЛЯ_В:
    текст:='данные для "В" и не целого вида, и не вида множество'
  | МНОЖЕСТВО_НЕ_ИЗ_ЦЕЛЫХ:
    текст:='элемент множества не целого вида'
  | И_НЕ_С_КЛЮЧОМ:
    текст:='"И" используется не с ключевым видом'
  | ИЛИ_НЕ_С_КЛЮЧОМ:
    текст:='"ИЛИ" используется не с ключевым видом'
  | ПЛЮС_НЕПРИМЕНИМ:
    текст:='"+" неприменимо к этому виду'
  | МИНУС_НЕПРИМЕНИМ:
    текст:='"-" неприменимо к этому виду'
  | НЕ_НЕ_С_КЛЮЧОМ:
    текст:='"НЕ" используется не с ключевым видом'
  | НЕСОВМЕСТИМЫЕ_ВИДЫ:
    текст:='несовместимые виды'
  | УМНОЖЕНИЕ_НЕПРИМЕНИМО:
    текст:='"*" неприменимо к этому виду'
  | ДЕЛЕНИЕ_НЕПРИМЕНИМО:
    текст:='"/" неприменимо к этому виду'
  | ДЕЛИТЬ_НЕПРИМЕНИМО:
    текст:='"ДЕЛИТЬ" неприменимо к этому виду'
  | ОСТАТОК_НЕПРИМЕНИМО:
    текст:='"ОСТАТОК" неприменимо к этому виду'
  | СРАВНЕНИЕ_НЕПРИМЕНИМО:
    текст:='сравнение неприменимо к этому виду'
  | ЭТО_НЕ_ВИД:
    текст:='не является видом'
  | НЕ_СОВМЕСТИМО_С_ЗАДАЧЕЙ:
    текст:='не совместимо с (этой) задачей'
  | ЭТО_НЕ_ПЕРЕМЕННАЯ:
    текст:='не является переменной'
  | НЕСОВМЕСТИМОЕ_ПРИСВАИВАНИЕ:
    текст:='несовместимое присваивание'
  | СТРОКА_ВЕЛИКА:
    текст:='строка слишком велика для присваивания'
  | НЕСООТВЕТСТВИЕ_ПРИЕМНИКА:
    текст:='несоответствие приёмника'
  | НЕТ_ОТВЕТА:
    текст:='вызов задачи без ответа'
  | ЛИШНИЙ_ОТВЕТ:
    текст:='вызов задачи с ответом'
  | НЕВЕРНЫЙ_ВИД_ОТВЕТА:
    текст:='не согласуется вид ответа'
  | МЕТКА_НЕ_СОВПАДАЕТ:
    текст:='метка общедоступности не совпадает с меткой заготовки'
  | НЕПРАВИЛЬНАЯ_МЕТКА:
    текст:='неправильная метка общедоступности'
  | ОЖИДАЕТСЯ_КЛЮЧ:
    текст:='ожидается ключевой вид выражения'
  | ЭТО_НЕ_ЗАДАЧА:
    текст:='понятие не является задачей'
  | ВИД_ПРИЕМНИКА:
    текст:='вид источника отличен от вида соответствующего приёмника'
  | ПРИСВАИВАНИЕ_ОТВЕТУ:
    текст:='вид выражения отличен от вида ответа задачи'
  | ВИД_ВЫБОРА:
    текст:='вид выражения выбора не является ни "ЦЕЛ", ни "ЗНАК"'
  | ЗАДАЧИ_И_ВИДЫ_ЗАПРЕЩЕНЫ:
    текст:='это выражение не может быть ни видом, ни задачей'
  | НЕСУЩЕСТВУЮЩИЙ_ВИД:
    текст:='доступ к несуществующему виду'
  | НЕВЕРНАЯ_ЗАГОТОВКА:
    текст:='неверная заготовка задачи'
  | РАЗМЕР_БЕЗ_РЯДА:
    текст:='"РАЗМЕР" применяется не для ряда'
  | НЕВЕРНАЯ_РАЗМЕРНОСТЬ:
    текст:='размерность у "РАЗМЕР" отрицательная или слишком большая'
  | ПЕРЕКРЕСТНОЕ_ИСПОЛЬЗОВАНИЕ:
    текст:='перекрёстное использование отделов запрещено'
  | ПЕРЕПУТАНЫ_ГРАНИЦЫ:
    текст:='нижняя граница больше, чем верхняя'
  | ГРАНИЦЫ_МНОЖЕСТВА:
    текст:='элемент множества больше, чем МАКС(МНОЖ), или меньше, чем 0'
  | БОЛЬШОЕ_ЧИСЛО:
    текст:='очень большое число'
  | БОЛЬШОЕ_ПРОИЗВЕДЕНИЕ:
    текст:='очень большое произведение'
  | ДЕЛЕНИЕ_НА_НОЛЬ:
    текст:='деление на ноль'
  | БОЛЬШАЯ_СУММА:
    текст:='очень большая сумма'
  | БОЛЬШАЯ_РАЗНОСТЬ:
    текст:='очень большая разность'
  | БОЛЬШОЙ_ВЫБОР:
    текст:='диапазон выбора очень большой'
  | БОЛЬШОЙ_КОД:
    текст:='очень большой код'
  | МНОГО_МЕТОК:
    текст:='у "ВЫБРАТЬ" слишком много меток'
  | НЕТ_МЕТОК:
    текст:='у "ВЫБРАТЬ" совсем нет меток'
  | НЕТ_РЕГИСТРОВ:
    текст:='попробуйте упростить выражение'
  | НЕТ_ВЕЩ_РЕГИСТРОВ:
    текст:='не хватает вещественных регистров (попробуйте упростить выражение)'
  | НЕВЕРНЫЙ_ИСТОЧНИК:
    текст:='неверное значение источника'
  | МНОГО_ОТДЕЛОВ:
    текст:='используется очень много отделов'
  | МНОГО_ОБЩЕДОСТУПНЫХ:
    текст:='очень много общедоступных понятий'
  | МНОГО_ВЛОЖЕННЫХ:
    текст:='очень много вложенных наборов'
  | БОЛЬШАЯ_ГЛУБИНА:
    текст:='очень большая глубина вложения расширенных наборов'
  | ДЛИННОЕ_НАЗВАНИЕ:
    текст:='очень длинное название'
  | ПЕР_НЕДОПУСТИМЫ:
    текст:='в отделе описания не могут находиться переменные'
  | УКАЗАНИЯ_НЕДОПУСТИМЫ:
    текст:='в отделе описания не могут находиться указания'
  | МНОГО_ПЕР_ЗАДАЧИ:
    текст:='очень большой размер переменных задачи'
  | МНОГО_ПРИЕМНИКОВ_ЗАДАЧИ:
    текст:='очень большой размер приёмников'
  | МНОГО_ПОСТОЯННЫХ:
    текст:='очень много постоянных'
  | ОЖИДАЕТСЯ_ЗАДАЧА_УКАЗ_КОН:
    текст:='пропущено "ЗАДАЧА", "УКАЗ" или "КОН"'
  | ФАЙЛ_НЕ_ОТКРЫВАЕТСЯ:
    текст:='невозможно открыть %'
  | ФАЙЛ_НЕ_СОЗДАЕТСЯ:
    текст:='невозможно создать %'
  | УПР_НЕ_ЦЕЛАЯ:
    текст:='управляющая переменная должна быть целого вида'
  | ВЫХОД_ЗА_ГРАНИЦЫ_РЯДА:
    текст:='выход за границы ряда'
  | ОТДЕЛ_ОТЛИЧАЕТСЯ_ОТ_ФАЙЛА:
    текст:='название отдела "%" отлично от имени файла'
  | НЕОЖИДАННЫЙ_КОНЕЦ_ФАЙЛА:
    текст:='неожиданный конец файла'
  | ТЕКСТОРЕЗ_НЕ_ПОНИМАЕТ:
    текст:='после "<*" может быть только "ЕСЛИ", "АЕСЛИ", "ИНАЧЕ", "КОН"'
  | ТЕКСТОРЕЗ_НЕ_ОКОНЧЕН:
    текст:='пропущено "<*КОН*>"'
  | МНОГО_УРОВНЕЙ_ТЕКСТОРЕЗА:
    текст:='очень много вложений указаний текстореза'
  | ЛИШНИЙ_КОН_У_ТЕКСТОРЕЗА:
    текст:='лишний "<*КОН*>"'
  | НЕТ_ВЫРАВНИВАНИЯ:
    текст:='нарушено выравнивание'
  | ПРИЁМНИК_СОСТ_ВИДА:
    текст:='приёмник значений не может быть составного вида'
  | МНОГО_ВЛОЖЕНИЙ_КОЛЬЦО:
    текст:='очень много вложений "КОЛЬЦО"'
  | ПЕР_ИЗ_ДРУГОЙ_ОБЛАСТИ:
    текст:='переменная "%" из другой области видимости и не общая'
  | ОТДЕЛ_ИЗ_РАЗНЫХ_ФАЙЛОВ:
    текст:='отдел уже использовался из файла "%"'
  | НЕОЖИДАННЫЙ_ОТДЕЛ:
    текст:='неожиданное употребление понятия отдела'
  ИНАЧЕ
    текст:='непредвиденный код ошибки'
  КОН;
  (* Вставляем вместо "%" или в конец дополнительный текст. *)
  ЕСЛИ имя # "" ТО
    поз:=0;
    ПОКА (текст[поз] # "%") И (текст[поз] # 0X) ВЫП
      УВЕЛИЧИТЬ(поз)
    КОН;
    ЕСЛИ текст[поз] = "%" ТО
      оЦепи.Удалить(текст,поз,1);
      ЕСЛИ текст[поз] # "%" ТО
        оЦепи.Вставить(имя,текст,поз)
      КОН
    ИНАЧЕ
      оЦепи.ДобавитьВКонец(текст,': ');
      оЦепи.ДобавитьВКонец(текст,имя)
    КОН
  КОН;
  ВыводОшибки(текст)
КОН ОтметитьИмя;

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА Отметить-(кодОш:ЦЕЛ);
УКАЗ
  ОтметитьИмя(кодОш,"")
КОН Отметить;

(*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*)
ЗАДАЧА Подготовить-(ВыводОшибки:ЗадачаВыводОшибки);
УКАЗ
  Ошибка.ВыводОшибки:=ВыводОшибки
КОН Подготовить;

КОН Ошибка.
