





  УТВЕРЖДЕН

   ЩИ1.700.016 ПО.04-01 33











                              ПАСКАЛЬ



                      РУКОВОДСТВО ПРОГРАММИСТА
                      ТОМ 5  КНИГА 4  ЧАСТЬ 2


                       ЩИ1.700.016 ПО.04-01 33

                             ЛИСТОВ 45

























                                1982
                                                         ЛИТЕРА






                               CTP. 2


ЩИ1.700.016 ПО.04-01 33






                            1. АННОТАЦИЯ



       В ДАННОМ ДОКУМЕНТЕ СОДЕРЖИТСЯ ОБЩАЯ ИНФОРМАЦИЯ,  НЕОБХОДИМАЯ
  ПРОГРАММИСТУ ДЛЯ РАБОТЫ С ЯЗЫКОМ ПАСКАЛЬ В  ОПЕРАЦИОННОЙ  СИСТЕМЕ
  ОСДВК.















































                               CTP. 3


ЩИ1.700.016 ПО.04-01 33






                             СОДЕРЖАНИЕ



  1.   АННОТАЦИЯ   .............................................  2


  2.  НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ...........................  5


  3.  СОЗДАНИЕ ИСХОДНОГО ФАЙЛА НА ПАСКАЛЕ.......................  7


  4.  ТРАНСЛЯЦИЯ ПРОГРАММЫ НА ЯЗЫКЕ ПАСКАЛЬ.....................  7

  4.1.   КЛЮЧ "D"...............................................  8
  4.2.   КЛЮЧ "E"...............................................  8
  4.3.   КЛЮЧ "F"...............................................  8
  4.4.   КЛЮЧ "L"...............................................  9
  4.5.   КЛЮЧ "N"...............................................  9
  4.6.   КЛЮЧ "S"...............................................  9
  4.7.   ИСПОЛЬЗОВАНИЕ КЛЮЧЕЙ В ТЕКСТЕ ПРОГРАММЫ................  9
  4.8.   КЛЮЧ "A"............................................... 10
  4.9.   КЛЮЧ "T"............................................... 10
  4.10.  КЛЮЧ "C"............................................... 10
  4.11.  ЛИСТИНГ ПРОГРАММЫ...................................... 11
  4.12.  ДИАГНОСТИКА ОШИБОК ТРАНСЛЯЦИИ.......................... 12

  5.  ТРАНСЛЯЦИЯ ПРОГРАММЫ МАКРОАССЕМБЛЕРОМ..................... 18


  6.  КОМПОНОВКА ПРОГРАММЫ НА ЯЗЫКЕ ПАСКАЛЬ..................... 19


  7.  ЗАПУСК И ВЫПОЛНЕНИЕ ПРОГРАММЫ............................. 20


  8.  СООБЩЕНИЯ................................................. 20


  9.  ТРАНСЛЯЦИЯ ВНЕШНИХ ПРОЦЕДУР............................... 22


  10. ОСОБЕННОСТИ ВЫПОЛНЕНИЯ ПРОГРАММЫ НА ЯЗЫКЕ ПАСКАЛЬ......... 24


  11. ПРОГРАММА IMP............................................. 26

  11.1.  ВЫЗОВ И ЗАГРУЗКА....................................... 26
  11.2.  СООБЩЕНИЯ ПРОГРАММЫ IMP................................ 27

  12. ПРОГРАММА FORM............................................ 28

  12.1.  ВЫЗОВ И ЗАГРУЗКА....................................... 28
                               CTP. 4


ЩИ1.700.016 ПО.04-01 33


  12.2.  СООБЩЕНИЯ ПРОГРАММЫ FORM............................... 29

  13. СРЕДСТВА ОТЛАДКИ ПРОГРАММ................................. 30

  13.1.  ТОЧКА ОСТАНОВА (;B).................................... 32
  13.2.  ЗАПУСК (;G) И ПРОДОЛЖЕНИЕ (;P) ПРОГРАММЫ............... 33
  13.3.  ПОШАГОВЫЙ РЕЖИМ ВЫПОЛНЕНИЯ (;S)........................ 33
  13.4.  ТРАССИРОВКА ВЫПОЛНЯЕМЫХ ОПЕРАТОРОВ (;T)................ 34
  13.5.  ТРАССИРОВКА ВЫПОЛНЯЕМЫХ ПРОЦЕДУР (;C).................. 35
  13.6.  СЛЕЖЕНИЕ ЗА ПЕРЕМЕННОЙ (;W)............................ 36
  13.7.  РАСПЕЧАТКА СОДЕРЖИМОГО ПЕРЕМЕННЫХ...................... 37
  13.8.  ИЗМЕНЕНИЕ СОДЕРЖИМОГО ПЕРЕМЕННЫХ....................... 39
  13.9.  РАСПЕЧАТКА СПИСКА ИМЕН ПЕРЕМЕННЫХ...................... 39
  13.10. РАСПЕЧАТКА СПИСКА ВЫЗВАННЫХ ПРОЦЕДУР................... 41
  13.11. РАСПЕЧАТКА ПОСЛЕДНИХ ВЫПОЛНЕННЫХ ОПЕРАТОРОВ............ 41

  14.  КОНТРОЛЬНО-ДЕМОНСТРАЦИОННАЯ ЗАДАЧА....................... 42


  ПРИЛОЖЕНИЕ  1. СПИСОК КОМАНД ОТЛАДЧИКА.......................  44

     ЛИСТ РЕГИСТРАЦИИ ИЗМЕНЕНИЙ.............................




































                               CTP. 5


ЩИ1.700.016 ПО.04-01 33


                 2. НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ




       СИСТЕМА  ПРОГРАММИРОВАНИЯ  ПАСКАЛЬ  ВКЛЮЧЕНА  В  ОСДВК   ДЛЯ
  РАСШИРЕНИЯ КЛАССА  ЗАДАЧ,  РЕШАЕМЫХ  ОПЕРАЦИОННОЙ  СИСТЕМОЙ.  ЭТО
  СВЯЗАНО С  ТЕМ,  ЧТО  ЯЗЫК  ПАСКАЛЬ  УДОБЕН  КАК  ДЛЯ  ВЫПОЛНЕНИЯ
  РАЗЛИЧНЫХ ВЫЧИСЛЕНИЙ, ТАК И ДЛЯ ОБРАБОТКИ НЕЧИСЛОВОЙ  ИНФОРМАЦИИ,
  ВКЛЮЧАЯ ЭКОНОМИЧЕСКИЕ ЗАДАЧИ, РАБОТУ СО СПИСКАМИ И Т.Д.

       В СОСТАВ СИСТЕМЫ ПРОГРАММИРОВАНИЯ  ВХОДЯТ  УДОБНЫЕ  СРЕДСТВА
  ОТЛАДКИ ПРОГРАММ В  ДИАЛОГОВОМ  РЕЖИМЕ.  ДОПУСКАЕТСЯ  ВОЗМОЖНОСТЬ
  ВЕДЕНИЯ БИБЛИОТЕК ПРОГРАММ, А ТАКЖЕ ИСПОЛЬЗОВАНИЕ В ПРОГРАММАХ НА
  ПАСКАЛЕ ПОДПРОГРАММ, НАПИСАННЫХ НА МАКРОАССЕМБЛЕРЕ И ФОРТРАНЕ.

       ДЛЯ РАБОТЫ С ЯЗЫКОМ ПАСКАЛЬ  В  ОПЕРАЦИОННОЙ  СИСТЕМЕ  ОСДВК
  РЕКОМЕНДУЕТСЯ, ЧТОБЫ В СОСТАВЕ КОМПЛЕКСА  НАХОДИЛОСЬ  ОПЕРАТИВНОЕ
  ЗАПОМИНАЮЩЕЕ УСТРОЙСТВО (ПАМЯТЬ)  ЕМКОСТЬЮ  НЕ  МЕНЕЕ  16К  СЛОВ.
  СИСТЕМА ПАСКАЛЬ ВКЛЮЧАЕТ СЛЕДУЮЩИЕ ФАЙЛЫ:


  PASCAL.SAV
         - КОМПИЛЯТОР С ЯЗЫКА ПАСКАЛЬ НА МАКРОАССЕМБЛЕР;

  PASAL.OBJ
         - ИСПОЛНЯЮЩАЯ СИСТЕМА, ИСПОЛЬЗУЮЩАЯ ТОЛЬКО  БАЗОВЫЙ  НАБОР
           ИНСТРУКЦИЙ ЦЕНТРАЛЬНОГО ПРОЦЕССОРА;

  IMP.SAV
         - ПРОГРАММА ОБЕСПЕЧИВАЕТ НЕКОТОРУЮ ОПТИМИЗАЦИЮ  ТЕКСТА  НА
           МАКРОАССЕМБЛЕРЕ,  ПОЛУЧЕННОГО  В  РЕЗУЛЬТАТЕ   ОБРАБОТКИ
           ПРИКЛАДНОЙ ПРОГРАММЫ ТРАНСЛЯТОРОМ ПАСКАЛЯ.

  FORM.SAV
         - ПРОГРАММА  ОБЕСПЕЧИВАЕТ  ВЫПОЛНЕНИЕ  ДВУХ  ФУНКЦИЙ.  ОНА
           ОСУЩЕСТВЛЯЕТ ФОРМАТИРОВАНИЕ ИСХОДНОГО ТЕКСТА  ПРИКЛАДНОЙ
           ПРОГРАММЫ  НА  ПАСКАЛЕ  ДЛЯ   УДОБСТВА   ВОСПРИЯТИЯ   ЕЕ
           СТРУКТУРЫ  И  ПРОВОДИТ   АНАЛИЗ   КОРРЕКТНОСТИ   БЛОЧНОЙ
           СТРУКТУРЫ ПРОГРАММЫ. В  ДОПОЛНЕНИЕ  К  ЭТОМУ  ОНА  МОЖЕТ
           СОЗДАВАТЬ ЛИСТИНГ ТАБЛИЦЫ ПЕРЕКРЕСТНЫХ ССЫЛОК ПЕРЕМЕННЫХ
           И ПРОЦЕДУР (ФУНКЦИЙ).

  RANIO.OBJ
         - ПОДПРОГРАММА  ДЛЯ   ВЫПОЛНЕНИЯ   ОПЕРАЦИЙ   ВВОДА/ВЫВОДА
           ПРЯМОГО ДОСТУПА.

  BIO.PAS
         - ТЕКСТ КОНТРОЛЬНО-ДЕМОНСТРАЦИОННОЙ ЗАДАЧИ.

       ДОПОЛНИТЕЛЬНО К ПЕРЕЧИСЛЕННЫМ,НЕОБХОДИМЫ ФАЙЛЫ  MACRO.SAV  И
  LINK.SAV.

       СОЗДАНИЕ И ВЫПОЛНЕНИЕ ПРОГРАММЫ НА ЯЗЫКЕ ПАСКАЛЬ МОЖЕТ  БЫТЬ
  ВЫПОЛНЕНО С ПОМОЩЬЮ СЛЕДУЮЩИХ ШАГОВ:

         - СОЗДАНИЕ ИСХОДНОГО ФАЙЛА С ТЕКСТОМ  ПРОГРАММЫ  НА  ЯЗЫКЕ
           ПАСКАЛЬ;
                               CTP. 6


ЩИ1.700.016 ПО.04-01 33


         - ТРАНСЛЯЦИЯ ПРОГРАММЫ НА ЯЗЫК МАКРОАССЕМБЛЕР;

         - ТРАНСЛЯЦИЯ  ПОЛУЧЕННОГО  ТЕКСТА  НА  МАКРОАССЕМБЛЕРЕ   В
           ОБ'ЕКТНЫЙ КОД;

         - КОМПОНОВКА  ОДНОГО  МОДУЛЯ  (ИЛИ  НЕСКОЛЬКИХ)  ВМЕСТЕ  С
           МОДУЛЯМИ ИСПОЛНЯЮЩЕЙ СИСТЕМЫ ПАСКАЛЬ В ПРОГРАММУ ФОРМАТА
           ЗАГРУЗКИ;

         - ЗАПУСК И ВЫПОЛНЕНИЕ ПОЛУЧЕННОЙ ПРОГРАММЫ.

       ПРОТОКОЛ ПРИМЕРА ДЕЙСТВИЙ, ПЕРЕЧИСЛЕННЫХ ВЫШЕ,  МОЖЕТ  ИМЕТЬ
  СЛЕДУЮЩИЙ ВИД:

         .R EDIT
         *EWDEMO.PAS¤¤
           ...             ! СОЗДАНИЕ ФАЙЛА С ТЕКСТОМ
           ...             ! ПРОГРАММЫ
         ¤EX¤¤
         .R PASCAL
         *DEMO=DEMO
         .R MACRO
         *DEMO=DEMO
         *^C
         .R LINK
         *DEMO=DEMO,PASCAL ! ИЛИ DEMO=DEMO,SY:PASCAL , ЕСЛИ
                           ! PASCAL.OBJ НАХОДИТСЯ НА SY:,А НЕ НА DK:
         *^C
         .RUN DEMO
           ...             ! ВЫПОЛНЕНИЕ ПОЛУЧЕННОЙ ПРОГРАММЫ

       В СЛЕДУЮЩИХ РАЗДЕЛАХ ДОКУМЕНТА ПРИВЕДЕННЫЕ  ПРОЦЕДУРЫ  БУДУТ
  ОПИСАНЫ БОЛЕЕ ПОДРОБНО.

























                               CTP. 7


ЩИ1.700.016 ПО.04-01 33


              3. СОЗДАНИЕ ИСХОДНОГО ФАЙЛА НА ПАСКАЛЕ.




       ИСХОДНЫЙ ФАЙЛ С ТЕКСТОМ ПРОГРАММЫ НА ЯЗЫКЕ ПАСКАЛЬ  ЯВЛЯЕТСЯ
  ОБЫЧНЫМ  ТЕКСТОВЫМ  ФАЙЛОМ  В  СМЫСЛЕ  СИСТЕМЫ  ОСДВК.   СОЗДАНИЕ
  ИСХОДНОГО  ФАЙЛА  МОЖЕТ  БЫТЬ  ВЫПОЛНЕНО   ЛЮБЫМ   ИЗ   СИСТЕМНЫХ
  РЕДАКТОРОВ ОСДВК.

       ОПЕРАТОР  ЯЗЫКА  ПАСКАЛЬ  МОЖЕТ  РАЗМЕЩАТЬСЯ  НА  НЕСКОЛЬКИХ
  СТРОКАХ. НЕСКОЛЬКО ОПЕРАТОРОВ МОГУТ РАЗМЕЩАТЬСЯ НА ОДНОЙ  СТРОКЕ.
  ПРОБЕЛЫ И ЗНАКИ ТАБУЛЯЦИИ  <TAB>  МОГУТ  ИСПОЛЬЗОВАТЬСЯ  В  ЛЮБОМ
  МЕСТЕ И  ЛЮБОМ  КОЛИЧЕСТВЕ  ДЛЯ  УЛУЧШЕНИЯ  ВОСПРИЯТИЯ  АЛГОРИТМА
  ПРОГРАММЫ (ЕЕ НАГЛЯДНОСТИ), А ТАКЖЕ И ДЛЯ ЦЕЛИ ВЫДЕЛЕНИЯ  БЛОЧНОЙ
  СТРУКТУРЫ ПРОГРАММЫ. КОМПИЛЯТОР С ЯЗЫКА ПАСКАЛЬ ИГНОРИРУЕТ  ЗНАКИ
  ПРОБЕЛОВ И ТАБУЛЯЦИИ,  КОТОРЫЕ  ИСПОЛЬЗУЮТСЯ  ДЛЯ  ФОРМАТИРОВАНИЯ
  ПРОГРАММЫ.

       ДЛЯ ВЫДЕЛЕНИЯ  (РАЗДЕЛЕНИЯ)  ОТДЕЛЬНЫХ  СТРАНИЦ  В  ЛИСТИНГЕ
  ПРОГРАММЫ МОГУТ ИСПОЛЬЗОВАТЬСЯ ЗНАКИ <FF> (АНАЛОГИЧНО  ПРОГРАММАМ
  НА МАКРОАССЕМБЛЕРЕ).




             4. ТРАНСЛЯЦИЯ ПРОГРАММЫ НА ЯЗЫКЕ ПАСКАЛЬ.




       КОМПИЛЯТОР ПАСКАЛЬ ИСПОЛЬЗУЕТ  ТЕКСТ  ПРОГРАММЫ  В  КАЧЕСТВЕ
  ВХОДНОГО ФАЙЛА. ВО ВРЕМЯ РАБОТЫ КОМПИЛЯТОР СОЗДАЕТ ФАЙЛ С ТЕКСТОМ
  ПРОГРАММЫ  НА  ЯЗЫКЕ  МАКРОАССЕМБЛЕР.   ДОПОЛНИТЕЛЬНО   К   ЭТОМУ
  ВЫХОДНОМУ ФАЙЛУ МОЖЕТ СОЗДАВАТЬСЯ  (НО  НЕ  ОБЯЗАТЕЛЬНО)  ФАЙЛ  С
  ЛИСТИНГОМ, НАПРИМЕР:

         .R PASCAL
         *PROG,PROG=PROG

  ПРИВОДИТ  К  ТРАНСЛЯЦИИ  ПРОГРАММЫ  НА  ЯЗЫКЕ  ПАСКАЛЬ  ИЗ  ФАЙЛА
  PROG.PAS И СОЗДАНИЮ ФАЙЛА PROG.MAC С ТЕКСТОМ НА МАКРОАССЕМБЛЕРЕ И
  ФАЙЛА PROG.LST С ЛИСТИНГОМ.

       В КОМАНДНОЙ СТРОКЕ КОМПИЛЯТОРА МОЖНО  ЯВНО  УКАЗЫВАТЬ  ИМЕНА
  УСТРОЙСТВ И КЛЮЧИ, УПРАВЛЯЮЩИЕ ТРАНСЛЯЦИЕЙ, НАПРИМЕР:

         .R PASCAL
         *PROG,LP:/N=PROG

  ВЫЗОВЕТ ТРАНСЛЯЦИЮ ПРОГРАММЫ PROG.PAS С ПОЛУЧЕНИЕМ ФАЙЛА PROG.MAC
  И ЛИСТИНГА НА УСТРОЙСТВЕ ПЕЧАТИ (LP:).  ЛИСТИНГ  БУДЕТ  СОДЕРЖАТЬ
  ТОЛЬКО СТРОКИ  ПРОГРАММЫ,  СОДЕРЖАЩИЕ  ОШИБКИ  И  ДИАГНОСТИЧЕСКИЕ
  СООБЩЕНИЯ (УКАЗЫВАЕТСЯ КЛЮЧОМ "N").

       ЕСЛИ  ЛИСТИНГ  ВООБЩЕ  ПОЛУЧАТЬ   НЕ   НУЖНО,   ТО   СЛЕДУЕТ
  ИСПОЛЬЗОВАТЬ, НАПРИМЕР, СЛЕДУЮЩУЮ КОМАНДУ:

                               CTP. 8


ЩИ1.700.016 ПО.04-01 33


         .R PASCAL
         *PROG=PROG

       С ПОМОЩЬЮ КЛЮЧЕЙ,  ИСПОЛЬЗУЕМЫХ  В  КОМАНДНОЙ  СТРОКЕ  И/ИЛИ
  ТЕКСТЕ ПРОГРАММЫ, МОЖНО УПРАВЛЯТЬ ПРОЦЕССОМ ТРАНСЛЯЦИИ.


       П_Р_И_М_Е_Ч_А_Н_И_Е. НЕКОТОРЫЕ  КЛЮЧИ  МОГУТ  ИСПОЛЬЗОВАТЬСЯ
  ТОЛЬКО В ТЕКСТЕ ПРОГРАММЫ.



        4.1. КЛЮЧ "D"



       ИСПОЛЬЗОВАНИЕ  ДАННОГО  КЛЮЧА   ПРИВОДИТ   К   ВКЛЮЧЕНИЮ   В
  ТРАНСЛИРУЕМУЮ ПРОГРАММУ ИНФОРМАЦИИ ДЛЯ ОТЛАДЧИКА. ЭТА  ИНФОРМАЦИЯ
  СОДЕРЖИТ ИМЕНА ПЕРЕМЕННЫХ И ПРОЦЕДУР, А ТАКЖЕ НОМЕРА  ОПЕРАТОРОВ.
  В ДОПОЛНЕНИЕ К ЭТОМУ В ПРОЦЕССЕ  КОМПОНОВКИ  В  СОСТАВ  ПРОГРАММЫ
  БУДЕТ АВТОМАТИЧЕСКИ ВКЛЮЧЕН ОТЛАДЧИК  ИЗ  БИБЛИОТЕКИ  ИСПОЛНЯЮЩЕЙ
  СИСТЕМЫ ПАСКАЛЬ.

       ИСПОЛЬЗОВАНИЕ ДАННОГО КЛЮЧА С КЛЮЧОМ "S" ПОЗВОЛИТ  ОТЛАДЧИКУ
  УСТАНОВИТЬ СООТВЕТСТВИЕ НОМЕРОВ  ОПЕРАТОРОВ  И  ИСХОДНОГО  ТЕКСТА
  ПРОГРАММЫ  ИЗ  ЛИСТИНГА.  ПОЭТОМУ  В  ЭТОМ  СЛУЧАЕ  НУЖНО  ВСЕГДА
  СОЗДАВАТЬ ФАЙЛ С ЛИСТИНГОМ  ПРОГРАММЫ  (СМ.  РАЗДЕЛ  С  ОПИСАНИЕМ
  ПРОЦЕДУР ОТЛАДКИ).



        4.2. КЛЮЧ "E"



       КЛЮЧ ИСПОЛЬЗУЕТСЯ  ДЛЯ  ТОГО,  ЧТОБЫ  ОПРЕДЕЛЕНИЕ  ПРОЦЕДУРЫ
  ПОСЛЕ ТРАНСЛЯЦИИ СТАЛО ВНЕШНИМ. ПРОЦЕДУРЫ И  ФУНКЦИИ,  КОТОРЫЕ  В
  ТЕЛЕ ПРОГРАММЫ ОПИСАНЫ  КАК  ГЛОБАЛЬНЫЕ,  ДОЛЖНЫ  ТРАНСЛИРОВАТЬСЯ
  ОТДЕЛЬНО ОТ ОСНОВНОЙ ПРОГРАММЫ И С ИСПОЛЬЗОВАНИЕМ КЛЮЧА "E", Т.Е.
  КАК ВНЕШНИЕ. ПЕРВЫЕ  6  СИМВОЛОВ  (ЗНАКОВ)  ИМЕНИ  ПРОЦЕДУРЫ  ИЛИ
  ФУНКЦИИ  ИСПОЛЬЗУЮТСЯ  ДЛЯ  ОПРЕДЕЛЕНИЯ  В  КАЧЕСТВЕ  ГЛОБАЛЬНОГО
  СИМВОЛА ТОЧКИ ВХОДА (МЕТКУ) ДЛЯ СООТВЕТСТВУЮЩЕЙ ПОДПРОГРАММЫ.



        4.3. КЛЮЧ "F"



       ИСПОЛЬЗОВАНИЕ  ЭТОГО  КЛЮЧА  ПОЗВОЛЯЕТ  УСКОРИТЬ  ВЫПОЛНЕНИЕ
  ДЕЙСТВИЙ НАД ОПЕРАНДАМИ ТИПА REAL, Т.Е.  АРИФМЕТИЧЕСКИЕ  ОПЕРАЦИИ
  НАД ЧИСЛАМИ В ФОРМАТЕ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ. ЭТА ОПТИМИЗАЦИЯ  МОЖЕТ
  ИСПОЛЬЗОВАТЬСЯ ДЛЯ ПРОЦЕССОРОВ БЕЗ  ПЛАВАЮЩЕЙ  ЗАПЯТОЙ  (ДЛЯ  ЭВМ
  ТИПА  ЭЛЕКТРОНИКА  60,ЭЛЕКТРОНИКА  НЦ  80-01  Д)  ОПТИМИЗАЦИЯ  ПО
  СКОРОСТИ ВЫПОЛНЕНИЯ ОСУЩЕСТВЛЯЕТСЯ ЗА СЧЕТ ГЕНЕРАЦИИ КОМПИЛЯТОРОМ
  СООТВЕТСТВУЮЩИХ ВЫЗОВОВ ПОДПРОГРАММ. В ТОМ СЛУЧАЕ, ЕСЛИ КЛЮЧ  "F"
  НЕ ИСПОЛЬЗУЕТСЯ, ТО КОМПИЛЯТОР ГЕНЕРИРУЕТ МАШИННЫЕ ИНСТРУКЦИИ ДЛЯ
  РАБОТЫ  С  ПЛАВАЮЩЕЙ  ЗАПЯТОЙ,   А   ПРИ   ВЫПОЛНЕНИИ   ПРОГРАММЫ
                               CTP. 9


ЩИ1.700.016 ПО.04-01 33


  ИСПОЛНЯЮЩАЯ   СИСТЕМА   ОСУЩЕСТВЛЯЕТ    ИХ    ЭМУЛЯЦИЮ.    ВРЕМЯ,
  ЗАТРАЧИВАЕМОЕ НА  ЭМУЛЯЦИЮ,  БОЛЬШЕ,  ЧЕМ  ВЫПОЛНЕНИЕ  ИНСТРУКЦИЙ
  ОБРАЩЕНИЯ К ПОДПРОГРАММАМ.

       ОДНАКО ИСПОЛЬЗОВАНИЕ КЛЮЧА "F" ПРИВОДИТ К УВЕЛИЧЕНИЮ РАЗМЕРА
  ПРОГРАММЫ В ОПЕРАТИВНОЙ ПАМЯТИ.



        4.4. КЛЮЧ "L"



       ДАННЫЙ КЛЮЧ  РАЗРЕШАЕТ  ПОЛНУЮ  РАСПЕЧАТКУ  ЛИСТИНГА  ТЕКСТА
  ПРОГРАММЫ НА ЯЗЫКЕ ПАСКАЛЬ. ОН МОЖЕТ ИСПОЛЬЗОВАТЬСЯ  В  КОМАНДНОЙ
  СТРОКЕ И ИСХОДНОМ ФАЙЛЕ (СМ. КЛЮЧ "N") ДЛЯ  ВКЛЮЧЕНИЯ  В  ЛИСТИНГ
  ТЕКСТА ПРОГРАММЫ.



        4.5. КЛЮЧ "N"



       ДАННЫЙ КЛЮЧ ЗАПРЕЩАЕТ РАСПЕЧАТКУ ИСХОДНОГО ТЕКСТА  ПРОГРАММЫ
  (ОПЕРАТОРОВ)  В  ФАЙЛ   ЛИСТИНГА   ЗА   ИСКЛЮЧЕНИЕМ   СТРОК   (И,
  СООТВЕТСТВЕННО, ОПЕРАТОРОВ), СОДЕРЖАЩИХ ОШИБКИ.



        4.6. КЛЮЧ "S"



       ЭТОТ КЛЮЧ ПРИВОДИТ К ВКЛЮЧЕНИЮ В  ГЕНЕРИРУЕМЫЙ  КОМПИЛЯТОРОМ
  ТЕКСТ НА МАКРОАССЕМБЛЕРЕ ОПЕРАТОРОВ ИСХОДНОГО  ЯЗЫКА  В  КАЧЕСТВЕ
  КОММЕНТАРИЕВ. ИСПОЛЬЗОВАНИЕ ДАННОГО КЛЮЧА ОБЛЕГЧАЕТ АНАЛИЗ ТЕКСТА
  ПРОГРАММЫ НА МАКРОАССЕМБЛЕРЕ.

       КЛЮЧ "S" НЕСКОЛЬКО МОДИФИЦИРУЕТ ДЕЙСТВИЕ КЛЮЧА "D", КАК БЫЛО
  ОПИСАНО ВЫШЕ.



        4.7. ИСПОЛЬЗОВАНИЕ КЛЮЧЕЙ В ТЕКСТЕ ПРОГРАММЫ



       ВСЕ КЛЮЧИ, РАССМОТРЕННЫЕ ВЫШЕ, ДОПУСКАЮТ ИСПОЛЬЗОВАНИЕ ИХ  В
  ТЕКСТЕ ПРОГРАММЫ. ЭТО ОСУЩЕСТВЛЯЕТСЯ ИСПОЛЬЗОВАНИЕМ  КОММЕНТАРИЕВ
  СПЕЦИАЛЬНОГО ВИДА. ПЕРВЫМ ЗНАКОМ  КОММЕНТАРИЯ  ДОЛЖЕН  БЫТЬ  "¤".
  СЛЕДУЮЩИЙ ЗНАК  ДОЛЖЕН  СОВПАДАТЬ  С  СИМВОЛИЧЕСКИМ  ОБОЗНАЧЕНИЕМ
  КЛЮЧА,  НАПРИМЕР,  "(*¤S*)"  ПРИВОДИТ  К  ВКЛЮЧЕНИЮ  В  ТЕКСТ  НА
  МАКРОАССЕМБЛЕРЕ ИСХОДНЫХ ОПЕРАТОРОВ В КАЧЕСТВЕ КОММЕНТАРИЕВ.

       ЗА МНЕМОНИКОЙ КЛЮЧА МОЖЕТ ИСПОЛЬЗОВАТЬСЯ ЗНАК "+"  ИЛИ  "-".
  ЭТИ ЗНАКИ ПРЕДНАЗНАЧЕНЫ ДЛЯ "ВКЛЮЧЕНИЯ" ДЕЙСТВИЯ  КЛЮЧА  (+)  ИЛИ
  "ВЫКЛЮЧЕНИЯ" (-), Т.Е. ОТМЕНЫ ЕГО ДЕЙСТВИЯ.
                               CTP. 10



ЩИ1.700.016 ПО.04-01 33


       КЛЮЧИ "A", "T" И  "C"  МОГУТ  ИСПОЛЬЗОВАТЬСЯ  ТОЛЬКО  ВНУТРИ
  ТЕКСТА ПРОГРАММЫ, И НЕ МОГУТ ПРИМЕНЯТЬСЯ В КОМАНДНОЙ СТРОКЕ.



        4.8. КЛЮЧ "A"



       ДАННЫЙ КЛЮЧ  ОТМЕНЯЕТ  ГЕНЕРАЦИЮ  ПРОВЕРОК  НА  ДОПУСТИМОСТЬ
  ЗНАЧЕНИЙ ИНДЕКСОВ  ПРИ  РАБОТЕ  С  МАССИВАМИ  -  (*¤A-*).  ОБЫЧНО
  КОМПИЛЯТОР  ГЕНЕРИРУЕТ  ИНСТРУКЦИИ,  ПРОВЕРЯЮЩИЕ  ВЫХОД  ЗНАЧЕНИЙ
  ИНДЕКСОВ  ЗА  ДОПУСТИМЫЕ   ГРАНИЦЫ.   ЕСЛИ   ГЕНЕРАЦИЯ   ПРОВЕРОК
  ЗАПРЕЩЕНА,  ТО  ПРОГРАММА   БУДЕТ   ЗАНИМАТЬ   НЕСКОЛЬКО   МЕНЬШЕ
  ОПЕРАТИВНОЙ ПАМЯТИ И БУДЕТ ВЫПОЛНЯТЬСЯ НЕСКОЛЬКО БЫСТРЕЕ.



        4.9. КЛЮЧ "T"



       КЛЮЧ (*¤T-*)  ЗАПРЕЩАЕТ  ГЕНЕРАЦИЮ  ИНСТРУКЦИЙ,  ПРОВЕРЯЮЩИХ
  ПЕРЕПОЛНЕНИЕ  СТЕКА.  ВСЯКИЙ  РАЗ  ПРИ  ВЫЗОВЕ   ПРОЦЕДУРЫ   СТЕК
  ПРОВЕРЯЕТСЯ НА НАЛИЧИЕ МЕСТА ДЛЯ РАЗМЕЩЕНИЯ ЛОКАЛЬНЫХ ПЕРЕМЕННЫХ.
  ОТКАЗ ОТ ИСПОЛЬЗОВАНИЯ  ПРОВЕРОК  СТЕКА  НЕЗНАЧИТЕЛЬНО  УМЕНЬШАЕТ
  РАЗМЕР ОПЕРАТИВНОЙ ПАМЯТИ, ЗАНИМАЕМОЙ ПРОГРАММОЙ, И УБЫСТРЯЕТ  ЕЕ
  ВЫПОЛНЕНИЕ.



       4.10. КЛЮЧ "C"



       СПЕЦИАЛЬНЫЙ ВИД  КОММЕНТАРИЕВ  ПОЗВОЛЯЕТ  ВКЛЮЧАТЬ  В  ТЕКСТ
  ПРОГРАММЫ НА ЯЗЫКЕ ПАСКАЛЬ ФРАГМЕНТЫ НА ЯЗЫКЕ МАКРОАССЕМБЛЕР. ЭТО
  ОСУЩЕСТВЛЯЕТСЯ КЛЮЧОМ "C", ИСПОЛЬЗУЕМЫМ  В  НАЧАЛЕ  КОММЕНТАРИЕВ.
  КОМПИЛЯТОР ПАСКАЛЬ АНАЛИЗИРУЕТ ВХОДНЫЕ СТРОКИ ДЛЯ МАКРОАССЕМБЛЕРА
  ДЛЯ ОПРЕДЕЛЕНИЯ ССЫЛОК НА СООТВЕТСТВУЮЩИЕ ПАРАМЕТРЫ И ПЕРЕМЕННЫЕ.
  НАПРИМЕР,  ДЛЯ  ТОГО,  ЧТОБЫ  ИСПОЛЬЗОВАТЬ  ЗНАЧЕНИЕ   ГЛОБАЛЬНОЙ
  ПЕРЕМЕННОЙ "ABC", НУЖНО ОБРАЩАТЬСЯ К НЕЙ С ПОМОЩЬЮ  "ABC(R5)",  А
  ДЛЯ ДОСТУПА К ЛОКАЛЬНОЙ ПЕРЕМЕННОЙ ИЛИ ПАРАМЕТРУ ПРОЦЕДУРЫ  "XYZ"
  - ИСПОЛЬЗОВАТЬ ЗАПИСЬ "XYZ(SP)":

    (*¤C
         TST     ABC(R5)        ;ПЕРЕМЕННАЯ ABC # 0 ?
         BNE     10¤            ;ДА
         MOV     XYZ(SP),R0     ;ПОЛУЧИТЬ ЗНАЧЕНИЕ XYZ В R0
         ADD     #123.,R0       ;ПРИБАВИТЬ 123 К R0
         MOV     R0,@#100       ;ЗАПИСАТЬ R0 ПО АБСОЛЮТНОМУ
                                ; АДРЕСУ
  10¤:   INC     XYZ(SP)        ;УВЕЛИЧИТЬ НА 1 ПЕРЕМЕННУЮ
                                ; XYZ
    *)



                               CTP. 11



ЩИ1.700.016 ПО.04-01 33


       П_Р_И_М_Е_Ч_А_Н_И_Е. ПО УМОЛЧАНИЮ  ВО  ФРАГМЕНТАХ  НА  ЯЗЫКЕ
  МАКРОАССЕМБЛЕР СИСТЕМА СЧИСЛЕНИЯ ДЕСЯТИЧНАЯ, А НЕ ВОСЬМЕРИЧНАЯ.



       4.11. ЛИСТИНГ ПРОГРАММЫ



       ЛИСТИНГ, СОЗДАВАЕМЫЙ КОМПИЛЯТОРОМ  ПАСКАЛЬ  СОДЕРЖИТ  ПОМИМО
  ИСХОДНОГО ТЕКСТА ПРОГРАММЫ  4  КОЛОНКИ  (ПРИМЕР  ЛИСТИНГА  СМ.  В
  РАЗДЕЛЕ, ПОСВЯЩЕННОМ ПРОЦЕДУРАМ ОТЛАДКИ).

       ПЕРВАЯ КОЛОНКА СОДЕРЖИТ НОМЕРА ИСХОДНЫХ СТРОК ПРОГРАММЫ. ЭТА
  КОЛОНКА В  ЛИСТИНГЕ  ОБОЗНАЧАЕТСЯ  КАК  "LINE".  НУМЕРАЦИЯ  СТРОК
  ВЫПОЛНЯЕТСЯ ПОДРЯД, НАЧИНАЯ С НОМЕРА 1.

       ВТОРАЯ  КОЛОНКА,  ОБОЗНАЧАЕМАЯ  "STMT",  СОДЕРЖИТ  ЛОКАЛЬНЫЕ
  НОМЕРА ОПЕРАТОРОВ ИСХОДНОЙ ПРОГРАММЫ И ИСПОЛЬЗУЕТСЯ  ПРИ  ОТЛАДКЕ
  ПРОГРАММ. СЛЕДУЕТ ОТМЕТИТЬ, ЧТО ОДИН ОПЕРАТОР  МОЖЕТ  РАЗМЕЩАТЬСЯ
  НА НЕСКОЛЬКИХ СТРОКАХ. С  ДРУГОЙ  СТОРОНЫ,  НЕСКОЛЬКО  ОПЕРАТОРОВ
  МОГУТ РАЗМЕЩАТЬСЯ НА ОДНОЙ  СТРОКЕ.  ПОЭТОМУ  В  КОЛОНКЕ  НОМЕРОВ
  ОПЕРАТОРОВ ЗНАЧЕНИЯ МОГУТ ВОЗРАСТАТЬ БОЛЕЕ ЧЕМ НА 1 ПРИ  ПЕРЕХОДЕ
  ОТ ОДНОЙ СТРОКИ К ДРУГОЙ.

       ТРЕТЬЯ КОЛОНКА СОДЕРЖИТ НОМЕРА УРОВНЕЙ ВЛОЖЕННОСТИ ПРОЦЕДУР.
  ЭТА ИНФОРМАЦИЯ ПОЛЕЗНА ДЛЯ АНАЛИЗА "ДОСТУПНОСТИ" ПЕРЕМЕННЫХ В ТЕХ
  ИЛИ   ИНЫХ   ПРОЦЕДУРАХ,   ПОСКОЛЬКУ   ПЕРЕМЕННЫЕ,    ОБ'ЯВЛЕННЫЕ
  (ОПРЕДЕЛЕННЫЕ) НА ОДНОМ УРОВНЕ, МОГУТ БЫТЬ  ДОСТУПНЫ  НА  ТОМ  ЖЕ
  УРОВНЕ И  НА  УРОВНЯХ,  НОМЕРА  КОТОРЫХ  ВЫШЕ  ДАННОГО.  ОСНОВНАЯ
  ПРОГРАММА НАХОДИТСЯ  НА  1-ОМ  УРОВНЕ  ВЛОЖЕННОСТИ.  ПРОЦЕДУРЫ  И
  ФУНКЦИИ, ОПРЕДЕЛЕННЫЕ В ПРОГРАММЕ, СЧИТАЮТСЯ ИМЕЮЩИМИ УРОВЕНЬ  2.
  В ПРОЦЕДУРЕ УРОВНЯ 2 МОЖЕТ, НАПРИМЕР,  БЫТЬ  ОПРЕДЕЛЕНА  ФУНКЦИЯ,
  КОТОРАЯ БУДЕТ ИМЕТЬ УЖЕ УРОВЕНЬ  ВЛОЖЕННОСТИ  3.  ДАННАЯ  ФУНКЦИЯ
  СЧИТАЕТСЯ  ЛОКАЛЬНОЙ  И  НЕ  МОЖЕТ  БЫТЬ  ДОСТУПНОЙ  ИЗ  ОСНОВНОЙ
  ПРОГРАММЫ, Т.Е. ИЗ УРОВНЯ 1.

       В ТРЕТЬЕЙ  КОЛОНКЕ  ОТМЕЧАЕТСЯ  УРОВЕНЬ  ВЛОЖЕННОСТИ  БЛОКОВ
  ОПЕРАТОРОВ,  ОГРАНИЧЕННЫХ  "BEGIN"  И  "END".   ДРУГИМИ   СЛОВАМИ
  ОПЕРАТОРЫ ТИПА "BEGIN" И "REPEAT"  ПРИВОДЯТ  К  УВЕЛИЧЕНИЮ  НА  1
  НОМЕРА УРОВНЯ ВЛОЖЕННОСТИ,  ПОКА  НЕ  ВСТРЕТИТСЯ  СООТВЕТСТВУЮЩИЙ
  "END" ИЛИ "UNTIL". ТАКИМ ОБРАЗОМ НОМЕРА УРОВНЕЙ ВЛОЖЕННОСТИ МОГУТ
  ИСПОЛЬЗОВАТЬСЯ  ДЛЯ   АНАЛИЗА   ПРОГРАММИСТОМ   ОБЩЕЙ   СТРУКТУРЫ
  ПРОГРАММЫ С ТОЧКИ ЗРЕНИЯ ВЛОЖЕННОСТИ БЛОКОВ.














                               CTP. 12



ЩИ1.700.016 ПО.04-01 33


       4.12. ДИАГНОСТИКА ОШИБОК ТРАНСЛЯЦИИ



       ПРИ ОБНАРУЖЕНИИ  ОШИБКИ  В  ПРОЦЕССЕ  ТРАНСЛЯЦИИ  КОМПИЛЯТОР
  ОТМЕЧАЕТ ОШИБОЧНУЮ СТРОКУ НЕСКОЛЬКИМИ ЗНАКАМИ "*" В  ЛЕВОЙ  ЧАСТИ
  ЛИСТИНГА, ЗА КОТОРЫМ  СЛЕДУЕТ  ПОЯСНИТЕЛЬНЫЙ  ТЕКСТ.  ЗНАКОМ  "^"
  ОТМЕЧАЕТСЯ ТО МЕСТО  В  СТРОКЕ,  КОТОРОЕ  ПРИВЕЛО  К  ОБНАРУЖЕНИЮ
  ОШИБКИ.

       ГРУБЫЕ ОШИБКИ,  НАПРИМЕР,  В  БЛОЧНОЙ  СТРУКТУРЕ  ПРОГРАММЫ,
  МОГУТ ВЫЗВАТЬ ЦЕЛЫЙ РЯД (ЦЕПОЧКУ) ДРУГИХ ОШИБОК.  В  ЭТОМ  СЛУЧАЕ
  ИСПРАВЛЕНИЕ  ПЕРВОЙ  ОШИБКИ  ПРИВЕДЕТ   К   "ИСЧЕЗНОВЕНИЮ"   ВСЕХ
  ОСТАЛЬНЫХ ОШИБОК. ИСПОЛЬЗОВАНИЕ КЛЮЧА "N" ПРИ  СОЗДАНИИ  ЛИСТИНГА
  ПРИВЕДЕТ К ПОЛУЧЕНИЮ В ЛИСТИНГЕ ТОЛЬКО СТРОК ПРОГРАММЫ, В КОТОРЫХ
  ОБНАРУЖЕНЫ ОШИБКИ, НАПРИМЕР:

         .R PASCAL
         *PROG,LP:/N=PROG

       ОБЩЕЕ  ЧИСЛО  ОШИБОК,  ОБНАРУЖЕННЫХ  ВО   ВРЕМЯ   ТРАНСЛЯЦИИ
  РАСПЕЧАТЫВАЕТСЯ В КОНЦЕ ЛИСТИНГА.  ОДНОВРЕМЕННО  ВЫВОДИТСЯ  ОБ'ЕМ
  ОПЕРАТИВНОЙ ПАМЯТИ, КОТОРАЯ ОСТАЛАСЬ  НЕИСПОЛЬЗОВАННОЙ  ДО  КОНЦА
  ТРАНСЛЯЦИИ. АНАЛОГИЧНАЯ ИНФОРМАЦИЯ ВЫВОДИТСЯ НА ЭКРАНЕ СИСТЕМНОГО
  ТЕРМИНАЛА.

       ВОЗМОЖНЫ СЛЕДУЮЩИЕ СООБЩЕНИЯ ОБ ОШИБКАХ:

  OVERFLOW.
         - ПЕРЕПОЛНЕНИЕ;

  MISSING END
         - ПРОПУЩЕНО "END";

  TOO MANY SYMBOLS
         - СЛИШКОМ МНОГО ПЕРЕМЕННЫХ И ПРОЦЕДУР;

  TOO MANY LEVELS
         - СЛИШКОМ МНОГО УРОВНЕЙ ВЛОЖЕННОСТИ ПРОЦЕДУР И ФУНКЦИЙ;

  TOO MANY WARNINGS
         - СЛИШКОМ МНОГО ПРЕДУПРЕЖДЕНИЙ;

  INPUT LINE TOO LONG
         - ДЛИННАЯ ВХОДНАЯ СТРОКА;

  INVALID CHARACTER
         - НЕДОПУСТИМЫЙ ЗНАК ВСТРЕТИЛСЯ НА СТРОКЕ;

  8 OR 9 IN OCTAL CONSTANT
         - В ВОСЬМЕРИЧНОЙ КОНСТАНТЕ ОБНАРУЖИЛИСЬ ЦИФРЫ 8 ИЛИ 9;

  LABELS MUST BE INTEGERS
         - В КАЧЕСТВЕ МЕТОК  ДОПУСТИМО  ИСПОЛЬЗОВАТЬ  ТОЛЬКО  ЦЕЛЫЕ
           ЧИСЛА;

  CONSTANT OVERFLOW
         - В ПРОГРАММЕ СЛИШКОМ МНОГО  КОНСТАНТ;  В  КОМПИЛЯТОРЕ  НЕ
                               CTP. 13



ЩИ1.700.016 ПО.04-01 33


           ХВАТАЕТ ПАМЯТИ ДЛЯ РАЗМЕЩЕНИЯ ВСЕХ КОНСТАНТ;

  MISSING LABEL DEFINITION
         - ОТСУТСТВУЕТ ОПРЕДЕЛЕНИЕ МЕТКИ;

  UNDEFINED FORWARD PROCEDURE OR FUNCTION
         - НЕДОПУСТИМО ИСПОЛЬЗОВАТЬ ПРОЦЕДУРУ ИЛИ  ФУНКЦИЮ  ПРЕЖДЕ,
           ЧЕМ ОНИ БУДУТ ОПРЕДЕЛЕНЫ;

  BAD PROGRAM NAME
         - НЕДОПУСТИМОЕ ИМЯ ПРОГРАММЫ;

  IMPROPER SYMBOL
         - НЕДОПУСТИМЫЙ СИМВОЛ;

  MISSING BEGIN
         - ПРОПУЩЕНО "BEGIN";

  MISSING '.' AT PROGRAM END
         - В КОНЦЕ ПРОГРАММЫ ОТСТУТСВУЕТ ".";

  ALL VAR DEFINITIONS PRECEED PROCEDURE DEFINTIONS
         - ОПРЕДЕЛЕНИЯ  ВСЕХ   ПЕРЕМЕННЫХ   ДОЛЖНО   НАХОДИТЬСЯ   В
           ПРОГРАММЕ ПЕРЕД ОПРЕДЕЛЕНИЕМ ПРОЦЕДУР;

  BAD ORIGIN FOR VARIABLE
         - НЕДОПУСТИМОЕ НАЧАЛЬНОЕ ЗНАЧЕНИЕ ДЛЯ ПЕРЕМЕННОЙ;

  BAD VARIABLE LIST
         - НЕДОПУСТИМЫЙ СПИСОК ПЕРЕМЕННЫХ;

  BAD TYPE
         - НЕДОПУСТИМОЕ ОПРЕДЕЛЕНИЕ ТИПА;

  BAD LABEL
         - НЕПРАВИЛЬНАЯ МЕТКА;

  BAD FUNCTION NAME
         - НЕДОПУСТИМОЕ ИМЯ ДЛЯ ФУНКЦИИ;

  BAD PROCEDURE NAME
         - НЕДОПУСТИМОЕ ИМЯ ДЛЯ ПРОЦЕДУРЫ;

  BAD FUNCTION RESULT TYPE
         - НЕДОПУСТИМЫЙ ТИП РЕЗУЛЬТАТА ФУНКЦИИ;

  FORTRAN PARAM. MUST BE CALL BY REFERENCE
         - ФОРТРАНОВСКИЙ ПАРАМЕТР  ДОЛЖЕН  ВСЕГДА  ПЕРЕДАВАТЬСЯ  ПО
           ССЫЛКЕ;

  DON'T REPEAT PARAMETER LIST
         - НЕ СЛЕДУЕТ УКАЗЫВАТЬ СПИСОК ФОРМАЛЬНЫХ ПАРАМЕТРОВ  БОЛЕЕ
           ОДНОГО РАЗА;

  ',' USED INSTEAD OF ';'
         - "," БЫЛА ИСПОЛЬЗОВАНА ВМЕСТО ";";


                               CTP. 14



ЩИ1.700.016 ПО.04-01 33


  MISSING ')' AT END OF PARAM LIST
         - ПРОПУЩЕНА ")" В КОНЦЕ СПИСКА ФОРМАЛЬНЫХ ПАРАМЕТРОВ;

  BAD PARAMETER
         - НЕДОПУСТИМЫЙ ФОРМАЛЬНЫЙ ПАРАМЕТР;

  BAD SCALAR TYPE
         - НЕДОПУСТИМЫЙ СКАЛЯРНЫЙ ТИП;

  BAD SUBRANGE
         - НЕДОПУСТИМОЕ УКАЗАНИЕ ИНТЕРВАЛА;

  BAD TYPE SPECIFICATION
         - НЕДОПУСТИМОЕ ОПРЕДЕЛЕНИЕ (УКАЗАНИЕ) ТИПА;

  ARRAY INDEX TYPE ERROR
         - ОШИБКА В ЗАДАНИИ ТИПА ИНДЕКСА ДЛЯ МАССИВА;

  BAD RECORD
         - НЕДОПУСТИМАЯ ЗАПИСЬ;

  BAD FIELD LIST
         - НЕДОПУСТИМОЕ ОПРЕДЕЛЕНИЕ СПИСКА ПОЛЕЙ;

  FIELD LIST MUST BE IN PARENTHESES
         - СПИСОК ПОЛЕЙ ДОЛЖЕН УКАЗЫВАТЬСЯ В СКОБКАХ;

  BAD VARIANT
         - НЕДОПУСТИМЫЙ ВАРИАНТ;

  DUPLICATE FIELD NAME
         - ПОВТОРНО ИСПОЛЬЗУЕТСЯ ИМЯ ДЛЯ ПОЛЯ ЗАПИСИ;

  BAD CONSTANT
         - НЕДОПУСТИМАЯ КОНСТАНТА;

  LABEL NOT DECLARED
         - ИСПОЛЬЗУЕТСЯ НЕОПРЕДЕЛЕННАЯ МЕТКА;

  LABEL REDEFINITION
         - ПЕРЕОПРЕДЕЛЕНИЕ МЕТКИ НЕДОПУСТИМО;

  LABEL DEFINED AT WRONG LEVEL
         - ОПРЕДЕЛЕНИЕ МЕТКИ НА НЕПРАВИЛЬНОМ УРОВНЕ;

  UNDEFINED SYMBOL
         - НЕОПРЕДЕЛЕННЫЙ СИМВОЛ;

  MISSING SEMI-COLON
         - ПРОПУЩЕНА ";";

  INVALID DECLARATION. PROBABLY MISSING END
         - НЕДОПУТИМЫЙ ОПЕРАТОР; ВОЗМОЖНО, ЧТО ПРОПУЩЕНО "END";

  INVALID SYMBOL
         - НЕДОПУСТИМЫЙ СИМВОЛ;


                               CTP. 15



ЩИ1.700.016 ПО.04-01 33


  NOT IMPLEMENTED
         - ДАННАЯ ВОЗМОЖНОСТЬ НЕ РЕАЛИЗОВАНА В КОМПИЛЯТОРЕ;

  MISSING LABEL
         - ПРОПУЩЕНА МЕТКА;

  BAD 'EXIT'
         - ПРОПУЩЕНО "EXIT";

  DUPLICATE CASE LABEL
         - ПОВТОРНО ИСПОЛЬЗУЕТСЯ МЕТКА В ОПЕРАТОРЕ "CASE";

  ELSE NOT LAST IN CASE STMT
         - "ELSE" НЕ НАХОДИТСЯ В КОНЦЕ ОПЕРАТОРА "CASE";

  MISSING END IN CASE STMT
         - ПРОПУЩЕНО "END" В ОПЕРАТОРЕ "CASE";

  BAD CASE LABEL
         - НЕДОПУСТИМАЯ МЕТКА ВЫБОРА В ОПЕРАТОРЕ "CASE";

  MISSING UNTIL
         - ПРОПУЩЕНО "UNTIL";

  BAD FOR STATEMENT
         - НЕПРАВИЛЬНЫЙ ФОРМАТ ОПЕРАТОРА ЦИКЛА "FOR";

  BAD WITH STATEMENT
         - НЕДОПУСТИМЫЙ ОПЕРАТОР "WITH";

  WITH IN REG 0
         - ДЛЯ ОПЕРАТОРА "WITH" ИСПОЛЬЗУЕТСЯ РЕГИСТР 0;

  TOO MANY ARGUMENTS
         - СЛИШКОМ МНОГО АРГУМЕНТОВ;

  BAD ARGUMENT
         - НЕДОПУСТИМЫЙ АРГУМЕНТ;

  TOO FEW ARGUMENTS
         - УКАЗАНО МАЛО АРГУМЕНТОВ;

  NEW OR DISPOSE ARG NOT POINTER TYPE
         - В ПРОЦЕДУРАХ  "NEW"  И  "DISPOSE"  МОЖЕТ  ИСПОЛЬЗОВАТЬСЯ
           ТОЛЬКО ПЕРЕМЕННАЯ-УКАЗАТЕЛЬ;

  BAD READ STATEMENT
         - НЕДОПУСТИМЫЙ ОПЕРАТОР "READ";

  BAD WRITE STATEMENT
         - НЕДОПУСТИМЫЙ ОПЕРАТОР "WRITE";

  FORMAT MUST BE INTEGER TYPE
         - ДЛЯ УКАЗАНИЯ  ПАРАМЕТРОВ  ФОРМАТА  МОЖЕТ  ИСПОЛЬЗОВАТЬСЯ
           ТОЛЬКО ЦЕЛОЧИСЛЕННЫЕ ПЕРЕМЕННЫЕ ИЛИ КОНСТАНТЫ;

  FILE VARIABLE MISSING
         - ПРОПУЩЕНА ПЕРЕМЕННАЯ ФАЙЛА;
                               CTP. 16



ЩИ1.700.016 ПО.04-01 33


  BAD FILE NAME
         - НЕДОПУСТИМОЕ ИМЯ ФАЙЛА;

  ILLEGAL ASSIGNMENT
         - НЕДОПУСТИМОЕ НАЗНАЧЕНИЕ;

  BAD EXPRESSION
         - ОШИБКА В ВЫРАЖЕНИИ;

  MISSING ')'
         - ПРОПУЩЕНА ")";

  MISSING OPERATOR
         - ПРОПУЩЕН ОПЕРАТОР;

  MISSING OPERAND
         - ПРОПУЩЕН ОПЕРАНД;

  STRANGE '[' -- BAD SET OR MISSING ARRAY DEF
         - НЕОБ'ЯСНИМОЕ ПОЯВЛЕНИЕ "[", ЧТО  МОЖЕТ  БЫТЬ  СВЯЗАНО  С
           НЕДОПУСТИМЫМ МНОЖЕСТВОМ ИЛИ НЕОПРЕДЕЛЕННЫМ МАССИВОМ;

  UNDEFINED OPERAND -- ASSUMING INTEGER
         - НЕОПРЕДЕЛЕННЫЙ ОПЕРАНД; КОМПИЛЯТОР ПРИСВАИВАЕТ  ЕМУ  ТИП
           "INTEGER";

  FUNCTION ARGUMENT MISSING
         - ПРОПУЩЕН АРГУМЕНТ ФУНКЦИИ;

  FUNCTION ARG MUST BE REAL OR INTEGER
         - АРГУМЕНТ ФУНКЦИИ ДОЛЖЕН ИМЕТЬ ТИП "REAL" ИЛИ "INTEGER";

  ARGUMENT MUST BE INTEGER TYPE
         - АРГУМЕНТ ДОЛЖЕН ИМЕТЬ ТИП "INTEGER";

  ARG MUST BE REAL
         - СЛЕДУЕТ ИСПОЛЬЗОВАТЬ АРГУМЕНТ ТИПА "REAL";

  ARG MUST BE INTEGER
         - СЛЕДУЕТ ИСПОЛЬЗОВАТЬ АРГУМЕНТ ТИПА "INTEGER";

  ARG MUST BE NON-REAL SCALAR
         - АРГУМЕНТ  ДОЛЖЕН  ИМЕТЬ  СКАЛЯРНЫЙ  ТИП,  НЕ  ЯВЛЯЮЩИЙСЯ
           "REAL";

  BAD 'ABS' ARG
         - НЕДОПУСТИМЫЙ АРГУМЕНТ ФУНКЦИИ "ABS";

  'ODD' APPLIED TO NON-INTEGER EXPRESSION
         - ПРОЦЕДУРА   "ODD"   ДОЛЖНА   ИСПОЛЬЗОВАТЬСЯ   ТОЛЬКО   С
           ЦЕЛОЧИСЛЕННЫМ  АРГУМЕНТОМ  (ПЕРЕМЕННОЙ,   ВЫРАЖЕНИЕМ   И
           Т.Д.);

  BAD SET ELEMENT
         - НЕДОПУСТИМЫЙ ЭЛЕМЕНТ МНОЖЕСТВА;

  MISSING FIELD VARIABLE
         - ПРОПУЩЕНО УКАЗАНИЕ ПОЛЯ ЗАПИСИ;
                               CTP. 17



ЩИ1.700.016 ПО.04-01 33


  UNDEFINED POINTER BASE TYPE
         - НЕОПРЕДЕЛЕННЫЙ  ТИП,  НА  КОТОРЫЙ  ССЫЛАЕТСЯ  ПЕРЕМЕННАЯ
           УКАЗАТЕЛЬ;

  BAD INDEX TYPE
         - НЕДОПУСТИМЫЙ ТИП ИНДЕКСА;

  ILLEGAL OPERATOR
         - НЕДОПУСТИМЫЙ ОПЕРАТОР;

  ILLEGAL TYPE OF OPERAND
         - НЕДОПУСТИМЫЙ ТИП ОПЕРАНДА;

  INCOMPATIBLE ARRAYS
         - НЕСОВМЕСТИМЫЕ МАССИВЫ;

  BAD 'IN' OPERANDS
         - НЕДОПУСТИМЫЕ ОПЕРАНДЫ ДЛЯ ОПЕРАТОРА "IN";

  OUT OF FLOATING AC'S
         - ДЛЯ  ВЫПОЛНЕНИЯ  ПРОГРАММЫ  НЕ   ХВАТАЕТ   АККУМУЛЯТОРОВ
           ПРОЦЕССОРА  ПЛАВАЮЩЕЙ   ЗАПЯТОЙ   (ВСТРЕТИЛОСЬ   СЛОЖНОЕ
           ВЫРАЖЕНИЕ);

  OUT OF REGISTERS
         - НЕ   ХВАТАЕТ   РЕГИСТРОВ   ДЛЯ   ВЫПОЛНЕНИЯ    ПРОГРАММЫ
           (ВСТРЕТИЛАСЬ СЛОЖНАЯ КОНСТРУКЦИЯ);

  BOOLEAN EXPRESSION NEEDED
         - В  ДАННОМ  МЕСТЕ   ПРОГРАММЫ   НЕОБХОДИМО   ИСПОЛЬЗОВАТЬ
           ЛОГИЧЕСКОЕ ВЫРАЖЕНИЕ;

  INCOMPATIBLE TYPE
         - НЕСОВМЕСТИМЫЙ ТИП;

  MUST BE SIMPLE VARIABLE
         - СЛЕДУЕТ ИСПОЛЬЗОВАТЬ ПРОСТУЮ ПЕРЕМЕННУЮ;

  UNRESOLVED FORWARD TYPE REFERENCE
         - НЕОПРЕДЕЛЕН ТИП ИЗ-ЗА ССЫЛОК  ВПЕРЕД  НА  НЕОПРЕДЕЛЕННЫЕ
           ТИПЫ ДАННЫХ;

  ARRAY INDEX OUT OF RANGE
         - ИНДЕКС МАССИВА ВЫХОДИТ ЗА ЗАДАННЫЕ ГРАНИЦЫ;

  FATAL ERROR
         - ФАТАЛЬНАЯ ОШИБКА КОМПИЛЯТОРА; ВОЗМОЖЕН АППАРАТУРНЫЙ СБОЙ
           И ОШИБКА В САМОМ КОМПИЛЯТОРЕ;

  TOO MANY ERRORS IN THIS LINE
         - СЛИШКОМ МНОГО ОШИБОК В ДАННОЙ СТРОКЕ;

  EXPECTED '.' MISSING. ASSUMED WHERE INDICATED
         - ДОЛЖНА  ПРИСУТСТВОВАТЬ  ".";  ПОКАЗАНО   ПОДРАЗУМЕВАЕМОЕ
           ПОЛОЖЕНИЕ ".";

  ALL CHARACTERS IGNORED UNTIL  ...
         - ВСЕ ЗНАКИ ДО "..." ИГНОРИРУЮТСЯ;
                               CTP. 18



ЩИ1.700.016 ПО.04-01 33


  INDEX OUT OF RANGE
         - ИНДЕКС ВЫХОДИТ ЗА ДОПУСТИМЫЕ ГРАНИЦЫ.




              5. ТРАНСЛЯЦИЯ ПРОГРАММЫ МАКРОАССЕМБЛЕРОМ




       КОМПИЛЯТОР ТРАНСЛИРУЕТ ПРОГРАММЫ С  ЯЗЫКА  ПАСКАЛЬ  НА  ЯЗЫК
  МАРОАССЕМБЛЕР  (КАК  БЫЛО  ОПИСАНО  ВЫШЕ).  ПОЛУЧЕННАЯ  ПРОГРАММА
  НУЖДАЕТСЯ В ТРАНСЛЯЦИИ МАКРОАССЕМБЛЕРОМ ДЛЯ ПОЛУЧЕНИЯ  ОБ'ЕКТНОГО
  МОДУЛЯ:

       НАПРИМЕР:

         .R MACRO
         *PROG=PROG

       МАКРОАССЕМБЛЕР МОЖЕТ ВЫДАВАТЬ  ТАКЖЕ  ЛИСТИНГ  ТРАНСЛИРУЕМОЙ
  ПРОГРАММЫ, НО ОБЫЧНО ОН НЕ ПРЕДСТАВЛЯЕТ  ОСОБОГО  ИНТЕРЕСА.  ЕСЛИ
  ВСЕ  ЖЕ  ЛИСТИНГ  ПРОГРАММЫ  НА  МАКРОАССЕМБЛЕРЕ  НЕОБХОДИМ,   ТО
  РЕКОМЕНДУЕТСЯ ВЫПОЛНЯТЬ ТРАНСЛЯЦИЮ КОМПИЛЯТОРОМ С ЯЗЫКА  ПАСКАЛЬ,
  ИСПОЛЬЗУЯ  КЛЮЧ  "S",  ЧТО  ПРИВОДИТ  К  ВКЛЮЧЕНИЮ  В  ТЕКСТ   НА
  МАКРОАССЕМБЛЕРЕ   ИСХОДНЫХ   СТРОК   НА   ПАСКАЛЕ   В    КАЧЕСТВЕ
  КОММЕНТАРИЕВ.


       П_Р_И_М_Е_Ч_А_Н_И_Е. СЛЕДУЕТ ПОМНИТЬ, ЧТО КОМПИЛЯТОР ПАСКАЛЯ
  И МАКРОАССЕМБЛЕР СОЗДАЮТ ФАЙЛЫ ЛИСТИНГА, ИМЕЮЩИЕ  ОДИНАКОВЫЙ  ТИП
  ".LST". ПОЭТОМУ ПОСЛЕДОВАТЕЛЬНОСТЬ КОМАНД:

         .R PASCAL
         *PROG/S,PROG=PROG
         .R MACRO
         *PROG,PROG=PROG

  ПРИВЕДЕТ К ТОМУ, ЧТО ФАЙЛ С  ЛИСТИНГОМ,  ПОЛУЧЕННЫЙ  КОМПИЛЯТОРОМ
  ПАСКАЛЯ, БУДЕТ ЗАМЕЩЕН  ОДНОИМЕННЫМ  ФАЙЛОМ  ЛИСТИНГА,  СОЗДАННЫМ
  МАКРОАССЕМБЛЕРОМ.
















                               CTP. 19



ЩИ1.700.016 ПО.04-01 33


              6. КОМПОНОВКА ПРОГРАММЫ НА ЯЗЫКЕ ПАСКАЛЬ




       ПОСЛЕ ПОЛУЧЕНИЯ ОБ'ЕКТНОГО ФАЙЛА ЕГО НЕОБХОДИМО СКОМПОНОВАТЬ
  С  ИСПОЛНЯЮЩЕЙ   СИСТЕМОЙ   ПАСКАЛЬ   ИЗ   ОБ'ЕКТНОЙ   БИБЛИОТЕКИ
  (PASCAL.OBJ)  ДЛЯ  ПОЛУЧЕНИЯ  ПРОГРАММЫ   В   ФОРМАТЕ   ЗАГРУЗКИ,
  НАПРИМЕР:

         .R LINK
         *PROG=PROG,PASCAL

       БИБЛИОТЕКА  PASCAL.OBJ  С   ИСПОЛНЯЮЩЕЙ   СИСТЕМОЙ   ПАСКАЛЬ
  СОДЕРЖИТ  НАБОР  МОДУЛЕЙ,   К   КОТОРЫМ   ОБРАЩАЕТСЯ   ПРОГРАММА,
  ПОЛУЧЕННАЯ  КОМПИЛЯТОРОМ  ПАСКАЛЯ.  СИСТЕМНЫЙ  КОМПОНОВЩИК  ОСДВК
  ВКЛЮЧИТ В СОСТАВ ПРОГРАММЫ НУЖНЫЕ МОДУЛИ ИЗ БИБЛИОТЕКИ И  СОЗДАСТ
  ПРОГРАММУ В ФОРМАТЕ ЗАГРУЗКИ.

       ВНЕШНИМИ  НАЗЫВАЮТСЯ  ПРОЦЕДУРЫ,  КОТОРЫЕ  КОМПИЛИРУЮТСЯ   И
  АССЕМБЛИРУЮТСЯ ОТДЕЛЬНО ОТ ОСНОВНОЙ ПРОГРАММЫ. ВКЛЮЧЕНИЕ  ВНЕШНИХ
  ПРОЦЕДУР В КОМПОНУЕМУЮ ПРОГРАММУ ОСУЩЕСТВЛЯЕТСЯ  ПЕРЕЧИСЛЕНИЕМ  В
  КОМАНДНОЙ  СТРОКЕ  КОМПОНОВЩИКУ  СПЕЦИФИКАЦИЙ   ВХОДНЫХ   ФАЙЛОВ,
  СОДЕРЖАЩИХ  МОДУЛИ  ВНЕШНИХ  ПРОЦЕДУР.  НАПРИМЕР,  ЕСЛИ   ВНЕШНИЕ
  ПРОЦЕДУРЫ СОДЕРЖАТСЯ В ФАЙЛАХ "A", "B" И "C", ТО КОМАНДНАЯ СТРОКА
  БУДЕТ ИМЕТЬ ВИД:

         .R LINK
         *PROG=PROG,A,B,C,PASCAL

       ДОПУСКАЕТСЯ  РАЗМЕЩАТЬ  ВНЕШНИЕ   ПРОЦЕДУРЫ   В   ОВЕРЛЕЙНЫХ
  СЕГМЕНТАХ ПРОГРАММЫ, НАПРИМЕР:

         .R LINK
         *PROG=PROG,PASCAL//
         *A/O:1
         *B/O:1
         *C/O:1//

       БОЛЕЕ ПОДРОБНАЯ ИНФОРМАЦИЯ О ПРАВИЛАХ ПОСТРОЕНИЯ  ОВЕРЛЕЙНЫХ
  ПРОГРАММ  ПРИВОДИТСЯ  В  ДОКУМЕНТЕ  "СИСТЕМНЫЕ  ПРОГРАММЫ  ОБЩЕГО
  НАЗНАЧЕНИЯ.      ПРОГРАММЫ      LINK,LIBR,DUMP,SRCCOM.РУКОВОДСТВО
  ОПЕРАТОРА.  У1.20001-01  34   03-2"   ПРИ   ОПИСАНИИ   СИСТЕМНОГО
  КОМПОНОВЩИКА "LINK".














                               CTP. 20



ЩИ1.700.016 ПО.04-01 33


                  7. ЗАПУСК И ВЫПОЛНЕНИЕ ПРОГРАММЫ




       ЗАПУСК   ПРОГРАММЫ,    НАПИСАННОЙ    НА    ЯЗЫКЕ    ПАСКАЛЬ,
  ОСУЩЕСТВЛЯЕТСЯ   ОБЫЧНЫМИ   СРЕДСТВАМИ   СИСТЕМЫ   ОСДВК,    Т.Е.
  ИСПОЛЬЗОВАНИЕМ КОМАНД МОНИТОРА "R" ИЛИ "RUN", КОТОРЫЕ  ОПИСАНЫ  В
  ДОКУМЕНТЕ   "КОМАНДЫ   МОНИТОРА.ОПИСАНИЕ   КОМАНД.    РУКОВОДСТВО
  ОПЕРАТОРА.У1.20001-01 34 01-2".

       НАПРИМЕР:

         .R PROG

       ПРИ ЗАГРУЗКЕ ПРОГРАММЫ ВОЗМОЖНЫ ОШИБКИ (СИСТЕМНЫЕ),  КОТОРЫЕ
  ОПИСАНЫ В ДОКУМЕНТЕ "СООБЩЕНИЯ  И  ДИАГНОСТИКА  ОШИБОК.СПРАВОЧНИК
  ОПЕРАТОРА.  У1.20001-01  90  01-2".СООБЩЕНИЯ,   ВОЗНИКАЮЩИЕ   ПРИ
  ВЫПОЛНЕНИИ ПРОГРАММЫ НА ЯЗЫКЕ ПАСКАЛЬ, БУДУТ ОПИСАНЫ НИЖЕ.




                            8. СООБЩЕНИЯ




       В ДАННОМ РАЗДЕЛЕ ПРЕДСТАВЛЕНЫ ТЕКСТЫ СООБЩЕНИЙ  ОБ  ОШИБКАХ,
  ВОЗНИКАЮЩИХ ПРИ ВЫПОЛНЕНИИ ПРОГРАММЫ  НА  ЯЗЫКЕ  ПАСКАЛЬ.  ТЕКСТЫ
  СООБЩЕНИЙ СНАБЖЕНЫ ПОЯСНЕНИЯМИ ПРИЧИН  ОШИБОК  И,  СЛЕДОВАТЕЛЬНО,
  СПОСОБАМИ ИХ УСТРАНЕНИЯ.


  NO ROOM ON DEVICE OR FILE NOT FOUND
         - ДАННОЕ  СООБЩЕНИЕ  СВЯЗАНО  С  ОШИБКАМИ  ПРИ  ВЫПОЛНЕНИИ
           ПРОЦЕДУРЫ RESET,  ЕСЛИ  СПЕЦИФИЦИРОВАННЫЙ  ФАЙЛ  НЕ  БЫЛ
           НАЙДЕН,  ИЛИ  ПРИ  РАБОТЕ  ПРОЦЕДУРЫ  REWRITE   ВОЗНИКЛО
           ОТСТУТСВИЕ ВОЗМОЖНОСТИ ДЛЯ СОЗДАНИЯ НОВОГО  ФАЙЛА,  Т.Е.
           НЕТ МЕСТА В КАТАЛОГЕ НОСИТЕЛЯ И Т.П.

  NOT A VALID DEVICE
         - В ПРОЦЕДУРЕ RESET ИЛИ REWRITE БЫЛО  УКАЗАНО  УСТРОЙСТВО,
           ДРАЙВЕР  КОТОРОГО  ОТСУТСТВУЕТ  В   СИСТЕМНЫХ   ТАБЛИЦАХ
           РЕЗИДЕНТНОГО МОНИТОРА ОСДВК.

  END OF FILE ON DEVICE
         - ДАННАЯ ОШИБКА СВЯЗАНА С ВЫПОЛНЕНИЕМ ПРОЦЕДУРЫ  READ  ИЛИ
           GET, ЕСЛИ В ТОТ МОМЕНТ ЗНАЧЕНИЕ ФУНКЦИИ EOF БЫЛО TRUE.

  I/O CHANNEL NOT OPEN
         - ОШИБКА СВЯЗАНА С  ВЫПОЛНЕНИЕМ  ОПЕРАЦИИ  ВВОДА/ВЫВОДА  С
           КАНАЛОМ,   КОТОРЫЙ   НЕ   БЫЛ   ПРЕДВАРИТЕЛЬНО    ОТКРЫТ
           ПРОЦЕДУРАМИ RESET ИЛИ REWRITE.

  NOT ENOUGH AVAILABLE MEMORY
         - СООБЩЕНИЕ  СВИДЕТЕЛЬСТВУЕТ  О  ТОМ,   ЧТО   ДИНАМИЧЕСКАЯ
           ОБЛАСТЬ ПАМЯТИ ИСЧЕРПАНА  (КАК  ПРАВИЛО  ПРИ  ВЫПОЛНЕНИИ
                               CTP. 21



ЩИ1.700.016 ПО.04-01 33


           ПРОЦЕДУРЫ  NEW);  ДРУГАЯ  ПРИЧИНА  ДАННОГО  СООБЩЕНИЯ  -
           НЕДОСТАТОК ПАМЯТИ ДЛЯ РЕКУРСИВНОГО ВЫЗОВА ПРОЦЕДУРЫ.

  INTEGER ERROR
         - ОШИБКА СВЯЗАНА С ВЫПОЛНЕНИЕМ АРИФМЕТИЧЕСКИХ  ОПЕРАЦИЙ  С
           ПЕРЕМЕННЫМИ ТИПА INTEGER; КАК ПРАВИЛО - ЭТО ПЕРЕПОЛНЕНИЕ
           ПРИ УМНОЖЕНИИ ИЛИ ВЫПОЛНЕНИИ ПРОЦЕДУР TRUNC ИЛИ ROUND.

  FLOATING POINT ERROR
         - СООБЩЕНИЕ  ОБ  ЭТОЙ  ОШИБКЕ   СВЯЗАНО   С   НЕПРАВИЛЬНЫМ
           ВЫПОЛНЕНИЕМ АРИФМЕТИЧЕСКОЙ ОПЕРАЦИИ НАД ПЕРЕМЕННЫМИ ТИПА
           REAL В ПРОЦЕССЕ ВЫЧИСЛЕНИЙ.

  LOG OF NEGATIVE
  EXP OVERFLOW
  SQRT OF NEGATIVE
         - ДАННЫЕ  ОШИБКИ  ВОЗНИКАЮТ  ПРИ   ПЕРЕДАЧЕ   НЕПРАВИЛЬНЫХ
           ПАРАМЕТРОВ В ФУНКЦИИ ЯЗЫКА ПАСКАЛЬ: LOG, EXP ИЛИ SQRT.

  DEVIDE BY ZERO
         - ОШИБКА СВЯЗАНА С ПОПЫТКОЙ ВЫПОЛНИТЬ ДЕЛЕНИЕ НА 0.

  BAD SET EXPRESSION
         - ОШИБКА   ПРИ   ВЫЧИСЛЕНИИ   ВЫРАЖЕНИЯ,   СВЯЗАННОГО    С
           МНОЖЕСТВОМ: АНАЛИЗИРУЕМЫЙ ЭЛЕМЕНТ НЕ ПРИНАДЛЕЖИТ ДАННОМУ
           МНОЖЕСТВУ.

  ARRAY BOUND ERROR
         - ПРИ  ВЫЧИСЛЕНИИ  ВЫРАЖЕНИЯ  ИЛИ  Т.П.  ЗНАЧЕНИЕ  ИНДЕКСА
           ПРИНЯЛО НЕДОПУСТИМОЕ ЗНАЧЕНИЕ;

  TRAP TO 4
         - ПРОИЗОШЛО ПРЕРЫВАНИЕ ПО ВЕКТОРУ  4,  КОТОРОЕ  СВЯЗАНО  С
           ОБРАЩЕНИЕМ   К   НЕСУЩЕСТВУЮЩЕЙ   ЯЧЕЙКЕ   ПАМЯТИ    ИЛИ
           ИСПОЛЬЗОВАНИЕМ   НЕДОПУСТИМОГО   РЕЖИМА   АДРЕСАЦИИ    В
           ИНСТРУКЦИИ  ПРОЦЕССОРА;  ОБЫЧНО  ЭТА  ОШИБКА  ПОЯВЛЯЕТСЯ
           ИЗ-ЗА    ОШИБОК    В    ФРАГМЕНТАХ,    НАПИСАННЫХ     НА
           МАКРОАССЕМБЛЕРЕ;

  BAD SUPPORT PACKAGE
  RESERVED INSTRUCTION TRAP
  MISSING SPECIAL FEATURE
         - ОШИБКА  СВЯЗАНА  С  ИСПОЛЬЗОВАНИЕМ  ИСПОЛНЯЮЩЕЙ  СИСТЕМЫ
           ПАСКАЛЯ,   НЕ    СООТВЕТСТВУЮЩЕЙ    ТИПУ    ЦЕНТРАЛЬНОГО
           ПРОЦЕССОРА, А ТАКЖЕ ПРИМЕНЕНИЕМ ИНСТРУКЦИЙ (В ФРАГМЕНТАХ
           НА МАКРОАССЕМБЛЕРЕ), ОТСУТСТВУЮЩИХ В  НАБОРЕ  ИНСТРУКЦИЙ
           ЦЕНТРАЛЬНОГО ПРОЦЕССОРА;

  SUPPORT CONDITIONALS ERROR
         - ОШИБКА ПРИ ВЫПОЛНЕНИИ ЛОГИЧЕСКОЙ ОПЕРАЦИИ;

  NEW OF LENGTH 0
         - ОШИБКА  СВЯЗАНА  С  ВЫПОЛНЕНИЕМ  ПРОЦЕДУРЫ   "NEW"   ПРИ
           СОЗДАНИИ ПЕРЕМЕННОЙ НУЛЕВОЙ ДЛИНЫ;

  FATAL I/O ERROR
         - ПРОИЗОШЛА НЕУСТРАНИМАЯ ОШИБКА ВВОДА/ВЫВОДА;

                               CTP. 22



ЩИ1.700.016 ПО.04-01 33


  TOO MANY FILES OPEN
         - СДЕЛАНА  ПОПЫТКА  ОТКРЫТЬ  СЛИШКОМ  МНОГО   ФАЙЛОВ   ДЛЯ
           ВВОДА/ВЫВОДА.




                   9. ТРАНСЛЯЦИЯ ВНЕШНИХ ПРОЦЕДУР




       ВНЕШНИМИ   НАЗЫВАЮТСЯ   ПРОЦЕДУРЫ   ИЛИ   ФУНКЦИИ,   КОТОРЫЕ
  КОМПИЛИРУЮТСЯ И АССЕМБЛИРУЮТСЯ ОТДЕЛЬНО ОТ ОСНОВНОЙ ПРОГРАММЫ  НА
  ЯЗЫКЕ ПАСКАЛЬ. КОМПОНОВЩИК ИСПОЛЬЗУЕТСЯ ДЛЯ  ОБ'ЕДИНЕНИЯ  ВНЕШНИХ
  ПРОЦЕДУР И ОСНОВНОЙ ПРОГРАММЫ И  ПОЛУЧЕНИЯ  ПРОГРАММЫ  В  ФОРМАТЕ
  ЗАГРУЗКИ. СРЕДСТВА ВНЕШНИХ ПРОЦЕДУР ПОЗВОЛЯЮТ  ОБЛЕГЧИТЬ  ПРОЦЕСС
  РАЗРАБОТКИ И ОТЛАДКИ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ПОСКОЛЬКУ ВНЕСЕНИЕ
  ИЗМЕНЕНИЙ В ОСНОВНУЮ ПРОГРАММУ НЕ ТРЕБУЕТ ПОВТОРНОЙ КОМПИЛЯЦИИ  И
  АССЕМБЛИРОВАНИЯ  ВНЕШНИХ  ПРОЦЕДУР.  ОТЛАДКА   БОЛЬШИХ   ПРОГРАММ
  СУЩЕСТВЕННО УПРОЩАЕТСЯ  ПУТЕМ  СОЗДАНИЯ  ПОЛНОСТЬЮ  ТЕСТИРОВАННЫХ
  ВНЕШНИХ ПРОЦЕДУР. В ЭТОМ СЛУЧАЕ ПРИ ОТЛАДКЕ ОСНОВНОЙ ПРОГРАММЫ ЕЕ
  КОМПИЛИРУЮТ С КЛЮЧОМ "D".  ОДНАКО  ЛОКАЛЬНЫЕ  ПЕРЕМЕННЫЕ  ВНЕШНИХ
  ПРОЦЕДУР СТАНОВЯТСЯ  НЕДОСТУПНЫМИ  ОТЛАДЧИКУ.  РАЗМЕР  ОТЛАДОЧНОЙ
  ИНФОРМАЦИИ  В  ПРОГРАММЕ  СУЩЕСТВЕННО  УМЕНЬШАЕТСЯ.  В  ОТДЕЛЬНЫХ
  СЛУЧАЯХ, КОГДА  ПРОГРАММА  ОЧЕНЬ  ВЕЛИКА  ПО  РАЗМЕРУ  ЗАНИМАЕМОЙ
  ОПЕРАТИВНОЙ ПАМЯТИ, ЕДИНСТВЕННАЯ ВОЗМОЖНОСТЬ ПРОВЕДЕНИЯ ОТЛАДКИ -
  ИСПОЛЬЗОВАНИЕ ВНЕШНИХ ПРОЦЕДУР, ПРОШЕДШИХ ЭТАП ТЕСТИРОВАНИЯ.

       ДРУГИМИ СЛОВАМИ, КОГДА  НАД  БОЛЬШИМ  ПРОГРАММНЫМ  ПРОДУКТОМ
  РАБОТАЕТ НЕСКОЛЬКО ПРОГРАММИСТОВ, ПОЛЕЗНО ИСПОЛЬЗОВАТЬ  СОВМЕСТНО
  РАЗРАБОТАННУЮ И ОТЛАЖЕННУЮ БИБЛИОТЕКУ ВНЕШНИХ ПРОЦЕДУР.

       ВНЕШНИЕ ПРОЦЕДУРЫ И  ФУНКЦИИ  СОЗДАЮТСЯ  АНАЛОГИЧНО  ОБЫЧНЫМ
  ПРОЦЕДУРАМ  В  ЯЗЫКЕ  ПАСКАЛЬ.  ИСПОЛЬЗОВАНИЕ   КЛЮЧА   "E"   ПРИ
  ТРАНСЛЯЦИИ, ПРИВОДИТ К ОБ'ЯВЛЕНИЮ  ВСЕХ  ПРОЦЕДУР  И  ФУНКЦИЙ  НА
  ПЕРВОМ УРОВНЕ ВЛОЖЕННОСТИ ГЛОБАЛЬНЫМИ. ПЕРВЫЕ 6  ЗНАКОВ  В  ИМЕНИ
  ПРОЦЕДУРЫ ИЛИ ФУНКЦИИ ОБ'ЯВЛЯЮТСЯ  В  КАЧЕСТВЕ  ГЛОБАЛЬНОЙ  ТОЧКИ
  ВХОДА  (МЕТКИ),  КОТОРАЯ  БУДЕТ  ИСПОЛЬЗОВАНА  КОМПОНОВЩИКОМ  ПРИ
  ОБ'ЕДИНЕНИИ ВНЕШНИХ МОДУЛЕЙ  И  ОСНОВНОЙ  ПРОГРАММЫ.  СПЕЦИАЛЬНАЯ
  ФОРМА  КОММЕНТАРИЕВ  (*¤E+*)  МОЖЕТ  ТАКЖЕ   ИСПОЛЬЗОВАТЬСЯ   ДЛЯ
  ОПРЕДЕЛЕНИЯ ПРОЦЕДУРЫ  В  КАЧЕСТВЕ  ВНЕШНЕЙ.  ПРОГРАММА,  КОТОРАЯ
  ИСПОЛЬЗУЕТ ВНЕШНЮЮ  ПРОЦЕДУРУ,  ДОЛЖНА  ВКЛЮЧАТЬ  ЗАГОЛОВОК  ЭТОЙ
  ПРОЦЕДУРЫ, ЗА КОТОРЫМ СЛЕДУЕТ  КЛЮЧЕВОЕ  СЛОВО  "EXTERNAL".  НАДО
  СОБЛЮДАТЬ ОСТОРОЖНОСТЬ ПРИ ЗАДАНИИ  ТИПОВ  И  ПОРЯДКА  СЛЕДОВАНИЯ
  ПАРАМЕТРОВ  ПРОЦЕДУРЫ,  ПОСКОЛЬКУ  КОМПИЛЯТОР  ЛИШЕН  ВОЗМОЖНОСТИ
  ПРОВЕРИТЬ ЭТУ ИНФОРМАЦИЮ.

       КОМПИЛЯТОР НЕ ОТВОДИТ МЕСТО  ДЛЯ  РАЗМЕЩЕНИЯ  ПЕРЕМЕННЫХ  НА
  ПЕРВОМ УРОВНЕ (ГЛОБАЛЬНЫХ). ВМЕСТО ЭТОГО  КОМПИЛЯТОР  ПРИСВАИВАЕТ
  ИМ  СООТВЕТСТВУЮЩИЕ  АДРЕСА  С  ТЕМ,  ЧТОБЫ  ОНИ  СОВПАДАЛИ   ПРИ
  ВЫПОЛНЕНИИ С  ГЛОБАЛЬНЫМИ  ПЕРЕМЕННЫМИ  ОСНОВНОЙ  ПРОГРАММЫ.  ВСЯ
  ОТВЕТСТВЕННОСТЬ НА СОВПАДЕНИЕ ОПИСАНИЙ ГЛОБАЛЬНЫХ  ПЕРЕМЕННЫХ  ВО
  ВНЕШНИХ  ПРОЦЕДУРАХ   И   ОСНОВНОЙ   ПРОГРАММЫ   ВОЗЛАГАЕТСЯ   НА
  ПРОГРАММИСТА.  ПОЛЬЗОВАТЬСЯ  ЭТОЙ  ВОЗМОЖНОСТЬЮ   СЛЕДУЕТ   ОЧЕНЬ
  ОСТОРОЖНО,  ПОСКОЛЬКУ  ОНА  МОЖЕТ  СЛУЖИТЬ  ИСТОЧНИКОМ  РАЗЛИЧНЫХ
  НЕПРЕДСКАЗУЕМЫХ ОШИБОК (И РЕЗУЛЬТАТОВ).

                               CTP. 23



ЩИ1.700.016 ПО.04-01 33


       НАПРИМЕР:

 ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ (ФАЙЛ GLOBAL.PAS):

      VAR                (* ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ *)
          I: INTEGER;
          R: REAL;
          C: CHAR;

 ОСНОВНАЯ ПРОГРАММА (ФАЙЛ MAIN.PAS):

      (* ВНЕШНЯЯ ПРОЦЕДУРА *)

      PROCEDURE EXPROC(X:INTEGER); EXTERNAL;

      BEGIN              (* НАЧАЛО MAIN *)
          I:=1; R:=3.1415926; C:='X';
          EXPROC(5);     (* ВЫЗОВ ВНЕШНЕЙ ПРОЦЕДУРЫ *)
      END.               (* КОНЕЦ MAIN *)

 ВНЕШНЯЯ ПРОЦЕДУРА (ФАЙЛ EXTERN.PAS):

      (*¤E+*)

      PROCEDURE EXPROC(Y:INTEGER); (* ВНЕШНЯЯ ПРОЦЕДУРА *)

      BEGIN      (* НАЧАЛО ВНЕШНЕЙ ПРОЦЕДУРЫ *)
         WRITELN('I= ',I:2);
         WRITELN('R= ',R);
         WRITELN('C= ',C);
         WRITELN('PROCEDURE ARGUMENT= ',Y:3);
      END;       (* КОНЕЦ ПРОЦЕДУРЫ *)


       НИЖЕ ПРЕДСТАВЛЕНА ПОСЛЕДОВАТЕЛЬНОСТЬ КОМАНД  ДЛЯ  ВЫПОЛНЕНИЯ
  ПРОГРАММЫ:

         .R PASCAL
         *MAIN=GLOBAL,MAIN
         .R PASCAL
         *EXTERN=GLOBAL,EXTERN
         .R MACRO
         *MAIN=MAIN
         *EXTERN=EXTERN
         *^C
         .R LINK
         *PROG=MAIN,EXTERN,PASCAL
         *^C
         .R PROG









                               CTP. 24



ЩИ1.700.016 ПО.04-01 33


       10. ОСОБЕННОСТИ ВЫПОЛНЕНИЯ ПРОГРАММЫ НА ЯЗЫКЕ ПАСКАЛЬ




       ДЛЯ  ТОГО,  ЧТОБЫ   ЭФФЕКТИВНО   ИСПОЛЬЗОВАТЬ   ВСТАВКИ   НА
  МАКРОАССЕМБЛЕРЕ В ПРОГРАММЕ НА ЯЗЫКЕ ПАСКАЛЬ, НЕОБХОДИМО ПОНИМАТЬ
  НЕКОТОРЫЕ ОСОБЕННОСТИ  ЕГО  РЕАЛИЗАЦИИ.  НАИБОЛЕЕ  ВАЖНЫЕ  ДЕТАЛИ
  БУДУТ ОПИСАНЫ НИЖЕ, ХОТЯ РЕКОМЕНДУЕТСЯ  (И  ЭТО  ЯВЛЯЕТСЯ  ВЕСЬМА
  ПОЛЕЗНЫМ)  ЗАНЯТЬСЯ  ИЗУЧЕНИЕМ  ТЕКСТА  НА  АССЕМБЛЕРЕ,   КОТОРЫЙ
  ГЕНЕРИРУЕТ КОМПИЛЯТОР ПАСКАЛЬ.

       ПРИ ВЫПОЛНЕНИИ ПРОГРАММА НА  ЯЗЫКЕ  ПАСКАЛЬ  ИСПОЛЬЗУЕТ  ДВЕ
  ОБЛАСТИ ДАННЫХ: ГЛОБАЛЬНАЯ ОБЛАСТЬ И СТЕК. В  ГЛОБАЛЬНОЙ  ОБЛАСТИ
  СОДЕРЖАТСЯ ВСЕ ПЕРЕМЕННЫЕ,  ОПРЕДЕЛЕННЫЕ  НА  УРОВНЕ  0,  Т.Е.  В
  НАЧАЛЕ  ПРОГРАММЫ.  ОБЛАСТЬ  СТЕКА  ИСПОЛЬЗУЕТСЯ   ДЛЯ   ХРАНЕНИЯ
  ЛОКАЛЬНЫХ ПЕРЕМЕННЫХ ДЛЯ ПРОЦЕДУР И АДРЕСОВ  ПЕРЕДАЧИ  (ВОЗВРАТА)
  УПРАВЛЕНИЯ.  ПЯТЫЙ  РЕГИСТР  R5  ВСЕГДА  СОДЕРЖИТ  АДРЕС   НАЧАЛА
  ГЛОБАЛЬНОЙ ОБЛАСТИ, А РЕГИСТР ШЕСТОЙ  (SP)  УКАЗЫВАЕТ  НА  НАЧАЛО
  ПРОГРАММНОГО СТЕКА. СОДЕРЖИМОЕ ЭТИХ РЕГИСТРОВ НЕ ДОЛЖНО  МЕНЯТЬСЯ
  ВО ФРАГМЕНТЕ НА  АССЕМБЛЕРЕ  (ИЛИ  ДОЛЖНО  СОХРАНЯТЬСЯ,  А  ЗАТЕМ
  ВОССТАНАВЛИВАТЬСЯ).

       ПРИ ВЫЗОВЕ ПРОЦЕДУРЫ ИСПОЛНЯЮЩАЯ СИСТЕМА СОХРАНЯЕТ  В  СТЕКЕ
  АДРЕС ВОЗВРАТА И ОТВОДИТ В СТЕКЕ МЕСТО ДЛЯ ПАРАМЕТРОВ И ЛОКАЛЬНЫХ
  ПЕРЕМЕННЫХ.   КАЖДЫЙ   ОЧЕРЕДНОЙ   ВЫЗОВ   ПРОЦЕДУРЫ    (ВОЗМОЖНО
  РЕКУРСИВНЫЙ)  ПРИВОДИТ  К  СОЗДАНИЮ  В  СТЕКЕ  ОЧЕРЕДНОЙ  ОБЛАСТИ
  ДАННЫХ, КАК ПОКАЗАНО НИЖЕ:

                 --------------------------
    (SP) ===>    !  СТАТИЧЕСКИЙ УКАЗАТЕЛЬ !
                 --------------------------
                 !  ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ  !
                 !    (ЕСЛИ ОНИ ЕСТЬ)     !
                 --------------------------
                 !     АДРЕС ВОЗВРАТА     !
                 --------------------------
                 ! ПАРАМЕТРЫ (ЕСЛИ ЕСТЬ)  !
                 --------------------------
                 ! РЕЗУЛЬТАТ, ВОЗВРАЩАЕМЫЙ!
                 !        ФУНКЦИЕЙ        !
                 --------------------------

       СТАТИЧЕСКИЙ  УКАЗАТЕЛЬ   СОДЕРЖИТ   АДРЕС   ОБЛАСТИ   СТЕКА,
  ВЫДЕЛЕННОЙ  ПРИ  ПОСЛЕДНЕМ  ВЫЗОВЕ  ПРОЦЕДУРЫ.   ЭТОТ   УКАЗАТЕЛЬ
  ИСПОЛЬЗУЕТСЯ  ДЛЯ  ВЫЧИСЛЕНИЯ  АДРЕСОВ  ПЕРЕМЕННЫХ  ПРОМЕЖУТОЧНЫХ
  УРОВНЕЙ  (ПЕРЕМЕННЫХ,  КОТОРЫЕ  НЕ  ЯВЛЯЮТСЯ  НИ  ЛОКАЛЬНЫМИ,  НИ
  ГЛОБАЛЬНЫМИ). ВСЕ  ЛОКАЛЬНЫЕ  ПЕРЕМЕННЫЕ  ДЛЯ  ТЕКУЩЕЙ  ПРОЦЕДУРЫ
  МОГУТ  ИСПОЛЬЗОВАТЬСЯ  ПУТЕМ  ИНДЕКСАЦИИ  ОТНОСИТЕЛЬНО   ТЕКУЩЕГО
  УКАЗАТЕЛЯ  СТЕКА   -   SP.   ДОСТУП   К   ГЛОБАЛЬНЫМ   ПЕРЕМЕННЫМ
  ОСУЩЕСТВЛЯЕТСЯ ИНДЕКСАЦИЕЙ РЕГИСТРА R5.  ДОСТУП  К  ПРОМЕЖУТОЧНОЙ
  ПЕРЕМЕННОЙ МОЖЕТ  ОСУЩЕСТВЛЯТЬСЯ  ПУТЕМ  "ДВИЖЕНИЯ"  ПО  СТЕКУ  С
  ИСПОЛЬЗОВАНИЕМ СТАТИЧЕСКИХ УКАЗАТЕЛЕЙ ДО ТЕХ ПОР, ПОКА  НЕ  БУДЕТ
  НАЙДЕНА  ТРЕБУЕМАЯ  ОБЛАСТЬ   СТЕКА.   ПОСЛЕ   ЭТОГО   ИНДЕКСАЦИЯ
  ОСУЩЕСТВЛЯЕТСЯ  ОТНОСИТЕЛЬНО  НАЙДЕННОЙ  БАЗЫ.  ДЛЯ  ТОГО,  ЧТОБЫ
  СДЕЛАТЬ ДОСТУП К ПЕРЕМЕННЫМ БОЛЕЕ  ПРОСТЫМ  ДЛЯ  ПРОГРАММИСТА  НА
  МАКРОАССЕМБЛЕРЕ, КОМПИЛЯТОР ОПРЕДЕЛЯЕТ ИМЯ ПЕРЕМЕННОЙ В  КАЧЕСТВЕ
  СМЕЩЕНИЯ ОТНОСИТЕЛЬНО СООТВЕТСТВУЮЩЕГО УКАЗАТЕЛЯ (R5 ИЛИ SP).
                               CTP. 25



ЩИ1.700.016 ПО.04-01 33


       АНАЛОГИЧНО, ТОЧКИ ВХОДА В  ПРОЦЕДУРЫ  И  ФУНКЦИИ  КОМПИЛЯТОР
  ЗАМЕНЯЕТ НА ОДНОИМЕННЫЕ МЕТКИ. СЛЕДУЕТ ПОМНИТЬ, ЧТО КОМПИЛЯТОР НЕ
  ПРОВЕРЯЕТ ПРАВИЛЬНОСТЬ ОБРАЩЕНИЙ К ПЕРЕМЕННЫМ  ВО  ФРАГМЕНТАХ  НА
  МАКРОАССЕМБЛЕРЕ.

       ПРИМЕР:

         FUNCTION SWAPBYTES (I:INTEGER):INTEGER;
         BEGIN
                 (*¤C
                         SWAB    I(SP)
                 *)
                 SWAPBYTES := I;
         END;

       ЕСЛИ НЕОБХОДИМО ВСЮ ПРОЦЕДУРУ НАПИСАТЬ  НА  МАКРОАССЕМБЛЕРЕ,
  ТО  ЭТО  МОЖНО  ОСУЩЕСТВИТЬ,  ПРОСТО  ЗАКЛЮЧИВ  ВЕСЬ  ФРАГМЕНТ  В
  ЗАГОЛОВОК ПРОЦЕДУРЫ, Т.Е. УКАЗАТЬ НАЧАЛО  И  КОНЕЦ  ПРОЦЕДУРЫ  ПО
  ПРАВИЛАМ  ПАСКАЛЯ.  В  ТЕЛЕ  ПРОЦЕДУРЫ  ФРАГМЕНТЫ  НА  ПАСКАЛЕ  И
  МАКРОАССЕМБЛЕРЕ МОГУТ ЧЕРЕДОВАТЬСЯ, НАПРИМЕР:

         PROCEDURE EXAMPLE;
         BEGIN
            (*¤C
                    ;ФРАГМЕНТ НА МАКРОАССЕМБЛЕРЕ
            *)
       WRITE (' ТЕКСТ СООБЩЕНИЯ');(* ФРАГМЕНТ НА ПАСКАЛЕ *)
            (*¤C
                    ;ЕЩЕ ФРАГМЕНТ НА МАКРОАССЕМБЛЕРЕ
            *)
         END;


       П_Р_И_М_Е_Ч_А_Н_И_Е. СЛЕДУЕТ ПОМНИТЬ, ЧТО ФУНКЦИИ  СОХРАНЯЮТ
  СОДЕРЖИМОЕ   РЕГИСТРОВ   R0-R4   (ВКЛЮЧАЯ   РЕГИСТРЫ-АККУМУЛЯТОРЫ
  ПРОЦЕССОРА С ПЛАВАЮЩЕЙ ЗАПЯТОЙ), А ПРОЦЕДУРЫ - НЕ СОХРАНЯЮТ.






















                               CTP. 26



ЩИ1.700.016 ПО.04-01 33


                         11. ПРОГРАММА IMP




       ПРОГРАММА IMP НАПИСАНА НА ЯЗЫКЕ ПАСКАЛЬ И ПРЕДНАЗНАЧЕНА  ДЛЯ
  ВЫПОЛНЕНИЕ   НЕКОТОРОЙ    ОПТИМИЗАЦИИ    ПРОГРАММ,    СОЗДАВАЕМЫХ
  КОМПИЛЯТОРОМ ПАСКАЛЬ В ОПЕРАЦИОННОЙ СИСТЕМЕ ОСДВК.

       КАК УКАЗЫВАЛОСЬ ВЫШЕ,  КОМПИЛЯТОР  ТРАНСЛИРУЕТ  ПРОГРАММУ  С
  ЯЗЫКА ПАСКАЛЬ НА ЯЗЫК МАКРОАССЕМБЛЕР. ПРОГРАММА IMP  ОБРАБАТЫВАЕТ
  ТЕКСТ ПРОГРАММЫ  НА  МАКРОАССЕМБЛЕРЕ,  ВЫПОЛНЯЕТ  ОТДЕЛЬНЫЕ  ВИДЫ
  ОПТИМИЗАЦИИ И СОЗДАЕТ БОЛЕЕ ЭФФЕКТИВНУЮ ПРОГРАММУ ТОЖЕ  НА  ЯЗЫКЕ
  МАКРОАССЕМБЛЕР.

       ОПТИМИЗАЦИИ ПОДВЕРГАЮТСЯ ИНСТРУКЦИИ  ПЕРЕХОДОВ  (JMP,  BR  И
  Т.П.). IMP ВЫПОЛНЯЕТ  ЗАМЕНУ  ИНСТРУКЦИИ  JMP  НА  BR,  ЕСЛИ  ЭТО
  ВОЗМОЖНО. ПРИ ЭТОМ ЭКОНОМИТСЯ 1 СЛОВО ПАМЯТИ. НАПРИМЕР:

                 JMP     L20
  ЗАМЕНЯЕТСЯ НА:
                 BR      L20

       В  НЕКОТОРЫХ  СЛУЧАЯХ   ВЫПОЛНЯЮТСЯ   БОЛЕЕ   СЛОЖНЫЕ   ВИДЫ
  ОПТИМИЗАЦИИ:

                 BGT     L30
                 JMP     L50
         L30:    ...
  ЗАМЕНЯЕТСЯ НА:
                 BLE     L50

  В ЭТОМ СЛУЧАЕ ЭКОНОМИТСЯ 2 СЛОВА ПАМЯТИ.



       11.1. ВЫЗОВ И ЗАГРУЗКА



       ВЫЗОВ ПРОГРАММЫ IMP ОСУЩЕСТВЛЯЕТСЯ КОМАНДАМИ МОНИТОРА R  ИЛИ
  RUN. ПОСЛЕ ЗАГРУЗКИ ПРОГРАММА ЗАПРАШИВАЕТ ИМЯ  ФАЙЛА,  В  КОТОРОМ
  НАХОДИТСЯ ТЕКСТ ПРОГРАММЫ, КОТОРУЮ  НУЖНО  ОПТИМИЗИРОВАТЬ.  ПОСЛЕ
  ЭТОГО  IMP   ЗАПРАШИВАЕТ   СПЕЦИФИКАЦИЮ   ВЫХОДНОГО   ФАЙЛА   ДЛЯ
  ОПТИМИЗИРОВАННОЙ ВЕРСИИ ПРОГРАММЫ.

       ПОСЛЕ ВВОДА СПЕЦИФИКАЦИЙ ФАЙЛОВ  IMP  НАЧИНАЕТ  РАБОТАТЬ.  В
  КОНЦЕ IMP РАСПЕЧАТЫВАЕТ СТАТИСТИКУ О ПРОЦЕССЕ  ОПТИМИЗАЦИИ,  Т.Е.
  ЧИСЛО СЛОВ, НА КОТОРОЕ СОКРАТИЛСЯ РАЗМЕР ПРОГРАММЫ, И  ПРОЦЕНТНОЕ
  УМЕНЬШЕНИЕ РАЗМЕРА ПРОГРАММЫ.

       ПРИМЕР:

                 .R IMP
                 INPUT FILE?  DK:PROG.MAC
                 OUTPUT FILE? DK:PROG1.MAC
                 IMPROVEMENT    50 WORDS   8.7%
                 .
                               CTP. 27



ЩИ1.700.016 ПО.04-01 33


       П_Р_И_М_Е_Ч_А_Н_И_Е. ПО УМОЛЧАНИЮ ТИП ВХОДНОГО  И  ВЫХОДНОГО
  ФАЙЛОВ "MAC".

       ПРОГРАММА  IMP  МОЖЕТ  ИСПОЛЬЗОВАТЬСЯ  ДЛЯ  ОПТИМИЗАЦИИ  КАК
  ПОЛНЫХ ПРОГРАММ НА ЯЗЫКЕ ПАСКАЛЬ, ТАК И ОТДЕЛЬНЫХ ЧАСТЕЙ, КОТОРЫЕ
  ОФОРМЛЕНЫ ПО ПРАВИЛАМ ВНЕШНИХ ПРОЦЕДУР.

       ТЕКСТ  ПРОГРАММЫ  НА  МАКРОАССЕМБЛЕРЕ  НЕ  ДОЛЖЕН  СОДЕРЖАТЬ
  МАКРОКОМАНД. РЕГИСТРЫ ДОЛЖНЫ ОБОЗНАЧАТЬСЯ ТОЛЬКО КАК %0, %1, ...,
  %6, %7. В ТЕКСТЕ ПРОГРАММЫ МОЖНО ИСПОЛЬЗОВАТЬ КОММЕНТАРИИ.

       ПРОЦЕДУРА  ОПТИМИЗАЦИИ  ВЫПОЛНЯЕТСЯ  СРАВНИТЕЛЬНО  МЕДЛЕННО.
  ПОЭТОМУ ОПТИМИЗИРОВАТЬ ПРОГРАММУ СЛЕДУЕТ ТОЛЬКО ПОСЛЕ  ТОГО,  КАК
  ОНА ПОЛНОСТЬЮ ОТЛАЖЕНА.



       11.2. СООБЩЕНИЯ ПРОГРАММЫ IMP



       НИЖЕ  ПРИВОДЯТСЯ  ТЕКСТЫ   СООБЩЕНИЙ,   ВЫДАВАЕМЫХ   IMP   С
  ПОЯСНЕНИЯМИ.

  NO <> IN LINE
  NNNN  LINE
         - В СТРОКЕ С НОМЕРОМ "NNNN" ОТСУТСТВУЮТ СКОБКИ "<" И ">".

  ERROR AT BRJMP NODE  NNNN
         - В СТРОКЕ С НОМЕРОМ "NNNN"  ОБНАРУЖЕНА  ОШИБКА,  ВОЗМОЖНО
           СВЯЗАННАЯ С ИСПОЛЬЗОВАНИЕМ КЛЮЧА  "C"  И  ВСТАВЛЕННЫМ  В
           ТЕКСТ НА ПАСКАЛЕ ФРАГМЕНТА НА МАКРОАССЕМБЛЕРЕ.

  ERROR AT JMP NODE  NNNN
         - В СТРОКЕ С НОМЕРОМ "NNNN"  ОБНАРУЖЕНА  ОШИБКА,  ВОЗМОЖНО
           СВЯЗАННАЯ С ИСПОЛЬЗОВАНИЕМ КЛЮЧА  "C"  И  ВСТАВЛЕННЫМ  В
           ТЕКСТ НА ПАСКАЛЕ ФРАГМЕНТА НА МАКРОАССЕМБЛЕРЕ.





















                               CTP. 28



ЩИ1.700.016 ПО.04-01 33


                         12. ПРОГРАММА FORM




       ПРОГРАММА FORM НАПИСАНА НА ЯЗЫКЕ ПАСКАЛЬ И ПРЕДНАЗНАЧЕНА ДЛЯ
  ВЫПОЛНЕНИЯ    ФОРМАТИРОВАНИЯ    ИСХОДНОГО    ТЕКСТА     РАЗЛИЧНЫХ
  ПОЛЬЗОВАТЕЛЬСКИХ ПРОГРАММ НА ПАСКАЛЕ,  А  ТАКЖЕ  ДЛЯ  СОЗДАНИЯ  И
  РАСПЕЧАТКИ ТАБЛИЦ ПЕРЕКРЕСТНЫХ ССЫЛОК.


       П_Р_И_М_Е_Ч_А_Н_И_Е.    ПРИ     ФОРМАТИРОВАНИИ     ПРОГРАММЫ
  ПРОИЗВОДИТСЯ ПРОВЕРКА ЕЕ БЛОЧНОЙ СТРУКТУРЫ.



       12.1. ВЫЗОВ И ЗАГРУЗКА



       ВЫЗОВ ПРОГРАММЫ FORM ОСУЩЕСТВЛЯЕТСЯ КОМАНДАМИ МОНИТОРА R ИЛИ
  RUN. ПОСЛЕ ЗАГРУЗКИ ПРОГРАММА ВЫВОДИТ НА ТЕРМИНАЛ "*"  И  ОЖИДАЕТ
  КОМАНДНОЙ СТРОКИ В ФОРМАТЕ CSI.

       КОМАНДНАЯ СТРОКА ДЛЯ FORM МОЖЕТ СОДЕРЖАТЬ ДО 2-Х ВЫХОДНЫХ  И
  ОДИН ВХОДНОЙ ФАЙЛ.

       СПЕЦИФИКАЦИЯ  ВХОДНОГО  ФАЙЛА  ОПРЕДЕЛЯЕТ   ИСХОДНЫЙ   ТЕКСТ
  ПРОГРАММЫ, КОТОРАЯ ДОЛЖНА БЫТЬ  ПОДВЕРГНУТА  ФОРМАТИРОВАНИЮ.  ТИП
  ФАЙЛА ПО УМОЛЧАНИЮ - ".PAS".

       СПЕЦИФИКАЦИЯ ПЕРВОГО ВЫХОДНОГО ФАЙЛА ЗАДАЕТ ФАЙЛ, В  КОТОРЫЙ
  БУДЕТ  ПОМЕЩЕН  ОТФОРМАТИРОВАННЫЙ  ТЕКСТ  ИСХОДНОЙ  ПРОГРАММЫ  НА
  ПАСКАЛЕ. ЭТА СПЕЦИФИКАЦИЯ НЕ ЯВЛЯЕТСЯ ОБЯЗАТЕЛЬНОЙ. ТИП ФАЙЛА  ПО
  УМОЛЧАНИЮ - ".PAS".

       СПЕЦИФИКАЦИЯ ВТОРОГО ВЫХОДНОГО ФАЙЛА ЗАДАЕТ ФАЙЛ, В  КОТОРЫЙ
  БУДЕТ  ПОМЕЩЕНА  ТАБЛИЦА  ПЕРЕКРЕСТНЫХ  ССЫЛОК  ПРОГРАММЫ  И   ЕЕ
  ЛИСТИНГ.  СПЕЦИФИКАЦИЯ  ДАННОГО  ВЫХОДНОГО  ФАЙЛА   НЕ   ЯВЛЯЕТСЯ
  ОБЯЗАТЕЛЬНОЙ. ТИП ФАЙЛА ПО УМОЛЧАНИЮ - ".LST".

       ПРИМЕР:

         .R FORM
         *PROG1,LP:=PROG
         NO ERROR IN BLOCKSTRUCTURE
         .

       СФОРМАТИРОВАННЫЙ   ТЕКСТ   ПРОГРАММЫ   НА   ПАСКАЛЕ    МОЖНО
  ИСПОЛЬЗОВАТЬ   ДЛЯ   ПОСЛЕДУЮЩЕЙ   РАБОТЫ,   Т.Е.   ТРАНСЛИРОВАТЬ
  КОМПИЛЯТОРОМ, РЕДАКТИРОВАТЬ, ОТЛАЖИВАТЬ И Т.Д.







                               CTP. 29



ЩИ1.700.016 ПО.04-01 33


       12.2. СООБЩЕНИЯ ПРОГРАММЫ FORM



       СООБЩЕНИЯ, ВЫДАВАЕМЫЕ ПРОГРАММОЙ FORM НА ТЕРМИНАЛ:

  LINE NNNNN TOO LONG
         - СТРОКА ИСХОДНОЙ ПРОГРАММЫ С НОМЕРОМ NNNNN СОДЕРЖИТ БОЛЕЕ
           147 ЗНАКОВ, ЧТО ЯВЛЯЕТСЯ НЕДОПУСТИМЫМ;

  MISSING POINT AT PROGRAM END
         - В КОНЦЕ ПРОГРАММЫ НА ЯЗЫКЕ ПАСКАЛЬ ОТСУТСТВУЕТ ".";

  COMMAND STRING ERROR
         - КОМАНДНАЯ СТРОКА ДЛЯ FORM СОДЕРЖИТ ОШИБКУ;

  ERROR IN BLOCKSTRUCTURE
         - БЛОЧНАЯ СТРУКТУРА ПРОГРАММЫ НА ПАСКАЛЕ СОДЕРЖИТ ОШИБКУ;

  NO ERROR IN BLOCKSTRUCTURE
         - ПРИ ФОРМАТИРОВАНИИ ПРОГРАММЫ ОШИБОК В БЛОЧНОЙ  СТРУКТУРЕ
           НЕ  ОБНАРУЖЕНО;  ДАННОЕ  СООБЩЕНИЕ   СВИДЕТЕЛЬСТВУЕТ   О
           НОРМАЛЬНОМ ЗАВЕРШЕНИИ РАБОТЫ ПРОГРАММЫ FORM.


       СЛЕДУЮЩИЕ СООБЩЕНИЯ ПОЯВЛЯЮТСЯ  ВО  ВТОРОМ  ВЫХОДНОМ  ФАЙЛЕ,
  СОЗДАВАЕМОМ  ПРОГРАММОЙ  FORM(В  ЛИСТИНГЕ   ТАБЛИЦ   ПЕРЕКРЕСТНЫХ
  ССЫЛОК):

  NEXT LINE TOO LONG
         - СЛЕДУЮЩАЯ СТРОКА ЛИСТИНГА СОДЕРЖИТ БОЛЕЕ 147 ЗНАКОВ;

  MISSING 'END' OR 'UNTIL' NUMBER NNNN
         - ПРОПУЩЕНО "END" ИЛИ "UNTIL" С НОМЕРОМ NNNN;

  MISSING 'THEN' NUMBER NNNN
         - ПРОПУЩЕН ОПЕРАТОРНАЯ СКОБКА "THEN" С НОМЕРОМ NNNN;

  MISSING 'OF' TO 'CASE' NUMBER NNNN
         - ПРОПУЩЕН "OF" В ОПЕРАТОРЕ "CASE" С НОМЕРОМ NNNN;

  ONLY ONE 'EXIT' ALLOWED
         - В ДАННОМ КОНТЕКСТЕ ДОПУСТИМ ТОЛЬКО ОДИН ОПЕРАТОР "EXIT";

  MISSING 'EXIT' IN 'LOOP' NNNN
         - ПРОПУЩЕНО "EXIT" В ОПЕРАТОРЕ ЦИКЛА С НОМЕРОМ NNNN.


       НИЖЕ  ПЕРЕЧИСЛЯЮТСЯ  НОРМАЛЬНЫЕ  ЗАГОЛОВКИ,  ПОЯВЛЯЮЩИЕСЯ  В
  ЛИСТИНГЕ СФОРМАТИРОВАННОЙ ПРОГРАММЫ:

  CROSS REFERENCE LISTING OF VARIABLES
         - ТАБЛИЦА ПЕРЕКРЕСТНЫХ ССЫЛОК ПЕРЕМЕННЫХ;

  LIST OF PROCEDURES
         - СПИСОК ПРОЦЕДУР;


                               CTP. 30



ЩИ1.700.016 ПО.04-01 33


  X IS CALLED BY Y
         - ПРОЦЕДУРА "X" ВЫЗЫВАЕТСЯ ПРОЦЕДУРОЙ "Y";

  X CALLS UP Y
         - ПРОЦЕДУРА "X" ВЫЗЫВАЕТ ПРОЦЕДУРУ "Y";

  INDENTED PROCEDURE LIST
         - ПОРЯДКОВЫЙ СПИСОК ПРОЦЕДУР.




                   13. СРЕДСТВА ОТЛАДКИ ПРОГРАММ




       ОТЛАДКА ПРОГРАММ НА ЯЗЫКЕ ПАСКАЛЬ ОСУЩЕСТВЛЯЕТСЯ СПЕЦИАЛЬНЫМ
  МОДУЛЕМ, ВХОДЯЩИМ В СОСТАВ ИСПОЛНЯЮЩЕЙ СИСТЕМЫ ПАСКАЛЬ.  ОТЛАДЧИК
  ПОЗВОЛЯЕТ    ПОЛНОСТЬЮ    УПРАВЛЯТЬ    ВЫПОЛНЕНИЕМ     ПРОГРАММЫ,
  РАСПЕЧАТЫВАТЬ И МОДИФИЦИРОВАТЬ ЗНАЧЕНИЯ ПЕРЕМЕННЫХ И Т.П.

       ВКЛЮЧЕНИЕ   ОТЛАДЧИКА   В   СОСТАВ   ВЫПОЛНЯЕМОЙ   ПРОГРАММЫ
  ОСУЩЕСТВЛЯЕТСЯ  АВТОМАТИЧЕСКИ  ПРИ  ИСПОЛЬЗОВАНИИ  КЛЮЧА  "D"   В
  ПРОЦЕССЕ КОМПИЛЯЦИИ. ДАННЫЙ КЛЮЧ ПРИВОДИТ К  ВКЛЮЧЕНИЮ  В  СОСТАВ
  ГЕНЕРИРУЕМОЙ ПРОГРАММЫ  ДОПОЛНИТЕЛЬНОЙ  ИНФОРМАЦИИ  О  РАЗМЕЩЕНИИ
  ОПЕРАТОРОВ И ИМЕНАХ ПЕРЕМЕННЫХ. ИСПОЛЬЗОВАНИЕ КЛЮЧА "S" ПОЗВОЛЯЕТ
  СУЩЕСТВЕННО РАСШИРИТЬ  ОБ'ЕМ  ИНФОРМАЦИИ,  ДОСТУПНОЙ  В  ПРОЦЕССЕ
  ОТЛАДКИ. ОДНАКО, В ЭТОМ СЛУЧАЕ НУЖНО ОБЯЗАТЕЛЬНО ПОЛУЧИТЬ ФАЙЛ  С
  ЛИСТИНГОМ ОТЛАЖИВАЕМОЙ  ПРОГРАММЫ.  ТОГДА  ПРИ  ВЫПОЛНЕНИИ  ТОЧКИ
  ОСТАНОВА ИЛИ ВОЗНИКНОВЕНИИ ОШИБКИ  ОТЛАДЧИК  БУДЕТ  РАСПЕЧАТЫВАТЬ
  СООТВЕТСТВУЮЩУЮ ИСХОДНУЮ СТРОКУ ПРОГРАММЫ  НА  ЯЗЫКЕ  ПАСКАЛЬ,  В
  КОТОРОЙ ПРОИЗОШЕЛ ОСТАНОВ.

       ПРИ ЗАПУСКЕ ОТЛАЖИВАЕМОЙ  ПРОГРАММЫ  ОТЛАДЧИК  РАСПЕЧАТЫВАЕТ
  СВОЙ   ИДЕНТИФИКАТОР   НА   ТЕРМИНАЛЕ.   ЕСЛИ   ПРИ    КОМПИЛЯЦИИ
  ИСПОЛЬЗОВАЛСЯ КЛЮЧ "S", ТО ОТЛАДЧИК ЗАПРОСИТ СПЕЦИФИКАЦИЮ  ФАЙЛА,
  СОДЕРЖАЩЕГО ЛИСТИНГ  ОТЛАЖИВАЕМОЙ  ПРОГРАММЫ.  ФАЙЛ  С  ЛИСТИНГОМ
  ДОЛЖЕН  РАЗМЕЩАТЬСЯ  НА   ВНЕШНЕМ   ЗАПОМИНАЮЩЕМ   УСТРОЙСТВЕ   С
  КАТАЛОГОВОЙ ОРГАНИЗАЦИЕЙ И СОЗДАВАТЬСЯ ОДНОВРЕМЕННО С КОМПИЛЯЦИЕЙ
  ОТЛАЖИВАЕМОЙ ПРОГРАММЫ.

       КОГДА ОТЛАДЧИК ГОТОВ К ПРИЕМУ КОМАНДЫ, ТО  ОН  РАСПЕЧАТЫВАЕТ
  ЗНАК "]" В  ЛЕВОМ  УГЛУ  ТЕРМИНАЛА.  ПОСЛЕ  ЭТОГО  МОЖНО  ВВОДИТЬ
  КОМАНДЫ ОТЛАДЧИКУ. ПОСКОЛЬКУ МОДУЛЬ ОТЛАДЧИКА  ТАКЖЕ  НАПИСАН  НА
  ЯЗЫКЕ ПАСКАЛЬ, ТО ОН СЧИТЫВАЕТ КОМАНДЫ (ВВОДИТ КОМАНДЫ)  ОБЫЧНЫМИ
  ОПЕРАТОРАМИ ВВОДА,  КОТОРЫЕ  ИМЕЮТСЯ  В  ПАСКАЛЕ.  ПОЭТОМУ,  ЕСЛИ
  ВВЕДЕННАЯ   КОМАНДА   СОДЕРЖИТ   ОШИБКУ,   ОТЛАДЧИК   РАСПЕЧАТАЕТ
  СООТВЕТСТВУЮЩЕЕ СООБЩЕНИЕ И ПОВТОРИТ ЗАПРОС КОМАНДЫ.

       ВСЕ  ПРИМЕРЫ  РАБОТЫ   С   ОТЛАДЧИКОМ   В   ДАННОМ   РАЗДЕЛЕ
  ДЕМОНСТРИРУЮТСЯ НА ПРОГРАММЕ DBGTST (КОТОРАЯ  НАХОДИТСЯ  В  ФАЙЛЕ
  DBGTST.PAS). КОМПИЛЯЦИЯ ЭТОЙ ПРОГРАММЫ ОСУЩЕСТВЛЯЕТСЯ КОМАНДАМИ:

         .R PASCAL
         *DBGTST,DBGTST=DBGTST/S/D

       ПРИ  КОМПИЛЯЦИИ  СОЗДАЕТСЯ  ФАЙЛ   С   ЛИСТИНГОМ   ПРОГРАММЫ
                               CTP. 31



ЩИ1.700.016 ПО.04-01 33


  DBGTST.LST. РАСПЕЧАТКА ЛИСТИНГА ИМЕЕТ СЛЕДУЮЩИЙ ВИД:

  DBGTST               P  A  S  C  A  L         13-12-82        PAGE 1
              ДВК  "ЭЛЕКТРОНИКА  НЦ 8020/2,3,4

  LINE  STMT LEVEL  NEST   SOURCE STATEMENT

    1                     PROGRAM DBGTST;
    2
    3                     VAR    A,B:INTEGER;
    4
    5                        PROCEDURE  SUM(C,D,E:INTEGER);
    6
    7                         VAR        I:INTEGER;
    8
    9                            FUNCTION ADD(P,Q:INTEGER)
   10                                            :INTEGER;
   11                            VAR     X,Y:INTEGER;
   12
   13                        BEGIN (* START OF ADD *)
   14     1     3     1       X:=P;
   15     2     3     1       Y:=Q;
   16     3     3     1       IF Y=0 THEN ADD:=X
   17     5     3     2        ELSE ADD:=ADD(0,X)+ADD(Y,0);
   18     6     3     1      END; (* END OF ADD *)
   19
   20                         BEGIN (* START OF SUM *)
   21     1     2     1          I:=ADD(C,D);
   22     2     2     1          I:=ADD(I,E);
   23     3     2     1       END; (* END OF SUM *)
   24
   25                     BEGIN (* START OF MAIN *)
   26     1     1     1       A:=1;
   27     2     1     1       B:=2;
   28     3     1     1       SUM(3,4,5);
   29     4     1     1   END. (* END OF MAIN *)


       ИЗ  ТЕКСТА  ПРОГРАММЫ  МОЖНО  ВИДЕТЬ,   ЧТО   ОНА   СОДЕРЖИТ
  ГЛОБАЛЬНУЮ ПРОЦЕДУРУ "SUM" И ДВЕ ПЕРЕМЕННЫЕ  "A"  И  "B".  ТЕРМИН
  "ГЛОБАЛЬНАЯ" ИСПОЛЬЗУЕТСЯ В ДАННОМ СЛУЧАЕ ПОТОМУ, ЧТО  ПЕРЕМЕННЫЕ
  "A" И "B" И ПРОЦЕДУРА "SUM" МОГУТ  БЫТЬ  ДОСТУПНЫ  НА  ПРОТЯЖЕНИИ
  ВСЕЙ ПРОГРАММЫ. ФУНКЦИЯ "ADD" ЯВЛЯЕТСЯ ЛОКАЛЬНОЙ, Т.Е. ВНУТРЕННЕЙ
  ДЛЯ ПРОЦЕДУРЫ  "SUM".  ПОЭТОМУ  ФУНКЦИЯ  "ADD"  МОЖЕТ  ВЫЗЫВАТЬСЯ
  ТОЛЬКО ВНУТРИ ПРОЦЕДУРЫ  "SUM",  НО  НЕ  ИЗ  ОСНОВНОЙ  ПРОГРАММЫ.
  АНАЛОГИЧНО,  ПЕРЕМЕННАЯ  "I"  ЯВЛЯЕТСЯ  ЛОКАЛЬНОЙ  ДЛЯ  ПРОЦЕДУРЫ
  "SUM", А ПЕРЕМЕННЫЕ "X" И "Y" - ЛОКАЛЬНЫМИ ДЛЯ ФУНКЦИИ "ADD".

       ОСТАЛЬНАЯ ЧАСТЬ ДАННОГО РАЗДЕЛА  ПОСВЯЩЕНА  ОПИСАНИЮ  КОМАНД
  ОТЛАДЧИКА.


       П_Р_И_М_Е_Ч_А_Н_И_Е.   ДАННАЯ   ВЕРСИЯ   ОТЛАДЧИКА   ПАСКАЛЬ
  ДОПУСКАЕТ РАБОТУ ТОЛЬКО ПОД УПРАВЛЕНИЕМ SJ- ИЛИ FB-МОНИТОРОВ.




                               CTP. 32



ЩИ1.700.016 ПО.04-01 33


       13.1. ТОЧКА ОСТАНОВА (;B)



       ОДНОЙ   ИЗ   ВАЖНЕЙШИХ   ВОЗМОЖНОСТЕЙ   ОТЛАДЧИКА   ЯВЛЯЕТСЯ
  СПОСОБНОСТЬ ПРЕРЫВАТЬ ВЫПОЛНЕНИЕ ОТЛАЖИВАЕМОЙ ПРОГРАММЫ.  ЕСЛИ  С
  ПОМОЩЬЮ КОМАНДЫ УСТАНОВИТЬ ТОЧКУ ОСТАНОВА НА ТРЕБУЕМОМ  ОПЕРАТОРЕ
  ПРОГРАММЫ, ТО, КОГДА ВЫПОЛНЕНИЕ ПРОГРАММЫ  ДОЙДЕТ  ДО  УКАЗАННОГО
  ОПЕРАТОРА,  УПРАВЛЕНИЕ  БУДЕТ  ПЕРЕДАНО  ОТЛАДЧИКУ.  ПОСЛЕ  ЭТОГО
  ОТЛАДЧИКУ  МОЖНО  ДАВАТЬ  КОМАНДЫ,  С  ПОМОЩЬЮ   КОТОРЫХ   МОЖНО,
  НАПРИМЕР,  ПРОСМАТРИВАТЬ  ЗНАЧЕНИЯ   ПЕРЕМЕННЫХ   И,   В   СЛУЧАЕ
  НЕОБХОДИМОСТИ, ИХ МОДИФИЦИРОВАТЬ.

       ДЛЯ  ТОГО,  ЧТОБЫ  УСТАНОВИТЬ  ТОЧКУ  ОСТАНОВА,   НЕОБХОДИМО
  НАПЕЧАТАТЬ ИМЯ ПРОЦЕДУРЫ ИЛИ ФУНКЦИИ, ЗАТЕМ ЗАПЯТУЮ,  ЗА  КОТОРОЙ
  СЛЕДУЕТ НОМЕР ОПЕРАТОРА (ГДЕ СЛЕДУЕТ УСТАНОВИТЬ ТОЧКУ ОСТАНОВА) И
  ";B".  В  КАЖДОЙ  ПРОЦЕДУРЕ  И   ФУНКЦИИ   ОПЕРАТОРЫ   НУМЕРУЮТСЯ
  ПОСЛЕДОВАТЕЛЬНО,    НАЧИНАЯ    С    1-ГО.    НОМЕРА    ОПЕРАТОРОВ
  РАСПЕЧАТЫВАЮТСЯ  В  ЛИСТИНГЕ  ПРОГРАММЫ  В  КОЛОНКЕ,   ПОМЕЧЕННОЙ
  "STMT".

       ЕСЛИ НЕСКОЛЬКО ОПЕРАТОРОВ РАЗМЕЩАЮТСЯ НА ОДНОЙ СТРОКЕ, ТО  В
  КОЛОНКЕ "STMT" ЛИСТИНГА РАСПЕЧАТЫВАЕТСЯ НОМЕР ПЕРВОГО ОПЕРАТОРА В
  ЭТОЙ СТРОКЕ.


       П_Р_И_М_Е_Ч_А_Н_И_Е. СЛЕДУЕТ ПОМНИТЬ, ЧТО  В  КАЖДЫЙ  МОМЕНТ
  ВРЕМЕНИ МОЖЕТ БЫТЬ ТОЛЬКО ОДНА ТОЧКА ОСТАНОВА.

       ПРИМЕРЫ:

 ] MAIN,3;B
 ] SUM,2;B
 ] ADD,1;B

       ПОСЛЕ ТОГО, КАК УСТАНОВЛЕНА  ТОЧКА  ОСТАНОВА  НА  ОПЕРАТОРЕ,
  ОТЛАДЧИК БУДЕТ ПОЛУЧАТЬ УПРАВЛЕНИЕ ВСЯКИЙ РАЗ  ПЕРЕД  ВЫПОЛНЕНИЕМ
  ЭТОГО  ОПЕРАТОРА.  СЛЕДУЕТ  УЧЕСТЬ,  ЧТО  ОТЛАДЧИК  НЕ  ПРОВЕРЯЕТ
  ДОПУСТИМОСТЬ  НОМЕРА  ОПЕРАТОРА  В  КОМАНДЕ,  ОПЕРДЕЛЯЮЩЕЙ  ТОЧКУ
  ОСТАНОВА. ПОЭТОМУ, ЕСЛИ, НАПРИМЕР, УСТАНОВИТЬ ТОЧКУ  ОСТАНОВА  НА
  ОПЕРАТОРЕ  "FOO,99",  КОТОРЫЙ  НЕ   СУЩЕСТВУЕТ,   ТО   УПРАВЛЕНИЕ
  ОТЛАДЧИКУ  НИКОГДА  НЕ  ПОПАДЕТ.  ОДНАКО  ЭТО  ДАЕТ   ВОЗМОЖНОСТЬ
  ОПЫТНОМУ ПРОГРАММИСТУ  ОПРЕДЕЛЯТЬ  ТОЧКИ  ОСТАНОВА  В  ОВЕРЛЕЙНЫХ
  ПРОЦЕДУРАХ, КОТОРЫЕ НЕ НАХОДЯТСЯ В ОПЕРАТИВНОЙ  ПАМЯТИ  В  МОМЕНТ
  ОПРЕДЕЛЕНИЯ ТОЧКИ ОСТАНОВА.

       ОТМЕНА ТОЧКИ  ОСТАНОВА  ОСУЩЕСТВЛЯЕТСЯ  КОМАНДОЙ  "0;B"  ИЛИ
  ";B".

       ПРИМЕР:








                               CTP. 33



ЩИ1.700.016 ПО.04-01 33


  PASCAL DEBUGGER V2.2

  LISTING FILE NAME? DBGTST
  ] SUM,1;B
  ] ;G
  BREAKPOINT AT SUM,1  I:=ADD(C,D);
  ] ;P
  PROGRAM TERMINATION AT MAIN,4  END. (* END OF MAIN *)
  ]



       13.2. ЗАПУСК (;G) И ПРОДОЛЖЕНИЕ (;P) ПРОГРАММЫ



       В ПРЕДЫДУЩЕМ ПРИМЕРЕ КОМАНДЫ ";G" И ";P" ИСПОЛЬЗОВАЛИСЬ  ДЛЯ
  ЗАПУСКА ИЛИ ПРОДОЛЖЕНИЯ ВЫПОЛНЕНИЯ ПРОГРАММЫ. ЕСЛИ ТОЧКА ОСТАНОВА
  ОПРЕДЕЛЕНА, ТО В КОМАНДЕ ";P" МОЖНО  ЗАДАТЬ  ЧИСЛО  РАЗ,  КОТОРОЕ
  БУДЕТ ПРОПУЩЕНА ТОЧКА ОСТАНОВА (Т.Е.  УПРАВЛЕНИЕ  БУДЕТ  ПЕРЕДАНО
  ОТЛАДЧИКУ ТОЛЬКО ПОСЛЕ ТОГО, КАК  ОПЕРАТОР  ВЫПОЛНИТСЯ  УКАЗАННОЕ
  ЧИСЛО РАЗ). ЭТО  ОСУЩЕСТВЛЯЕТСЯ  С  ПОМОЩЬЮ  ЧИСЛОВОГО  АРГУМЕНТА
  КОМАНДЫ:

  ] ADD,1;B
  ] ;G
  BREAKPOINT AT ADD,1
  ] 3;P
  BREAKPOINT AT ADD,1
  ]

  В ПОКАЗАННОМ ПРИМЕРЕ, ПОСЛЕ НАЧАЛЬНОЙ  ТОЧКИ  ОСТАНОВА,  ОТЛАДЧИК
  ПОЛУЧИТ УПРАВЛЕНИЕ ПОСЛЕ ТОГО, КАК ФУНКЦИЯ "ADD" БУДЕТ  ВЫПОЛНЕНА
  3 РАЗА, Т.Е. НА 4-ЫЙ РАЗ.

       ПРИ ВЫПОЛНЕНИИ ПРОГРАММЫ В ПОШАГОВОМ  РЕЖИМЕ  КОМАНДА  "N;P"
  ПРИВЕДЕТ  К  ВЫПОЛНЕНИЮ  "N"  ОПЕРАТОРОВ.  ТОЛЬКО   ПОСЛЕ   ЭТОГО
  УПРАВЛЕНИЕ БУДЕТ ПЕРЕДАНО ОТЛАДЧИКУ.



       13.3. ПОШАГОВЫЙ РЕЖИМ ВЫПОЛНЕНИЯ (;S)



       КОМАНДЫ "N;S", ГДЕ N НЕ РАВНО  НУЛЮ,  ПЕРЕВОДИТ  ОТЛАДЧИК  В
  ПОШАГОВЫЙ РЕЖИМ ВЫПОЛНЕНИЯ ПРОГРАММЫ. ПРИ ЭТОМ  УПРАВЛЕНИЕ  БУДЕТ
  ПЕРЕДАВАТЬСЯ ОТЛАДЧИКУ ПОСЛЕ ВЫПОЛНЕНИЯ ОЧЕРЕДНОГО ОПЕРАТОРА, КАК
  БУДТО ТАМ БЫЛА ОПРЕДЕЛЕНА  ТОЧКА  ОСТАНОВА.  КОМАНДА  ПРОДОЛЖЕНИЯ
  ";P" ПРИВОДИТ К ВЫПОЛНЕНИЮ ОДНОГО ОЧЕРЕДНОГО ОПЕРАТОРА ПРОГРАММЫ.
  ЕСЛИ ИСПОЛЬЗОВАТЬ КОМАНДУ "N;P", ТО БЕЗ ОСТАНОВКИ БУДЕТ ВЫПОЛНЕНЫ
  "N" ОПЕРАТОРОВ. ВЫХОД  ИЗ  ПОШАГОВОГО  РЕЖИМА  ЗАДАЕТСЯ  КОМАНДОЙ
  "0;S" ИЛИ ПРОСТО ";S".

       ПРИМЕР ИСПОЛЬЗОВАНИЯ ПОШАГОВОГО РЕЖИМА:



                               CTP. 34



ЩИ1.700.016 ПО.04-01 33


  PASCAL DEBUGGER V2.2

  LISTING FILE NAME? DBGTST
  ] 1;S
  ] ;G
  BREAKPOINT AT MAIN,1  A:=1;
  ] ;P
  BREAKPOINT AT MAIN,2  B:=2;
  ] ;P
  BREAKPOINT AT MAIN,3  SUM(3,4,5);
  ] 13;P
  BREAKPOINT AT ADD,4  IF Y=0 THEN ADD:=X
  ]



       13.4. ТРАССИРОВКА ВЫПОЛНЯЕМЫХ ОПЕРАТОРОВ (;T)



       ЕСЛИ ОТЛАДЧИК  НАХОДИТСЯ  В  РЕЖИМЕ  ТРАССИРОВКИ,  ТО  ПЕРЕД
  ВЫПОЛНЕНИЕМ ОЧЕРЕДНОГО ОПЕРАТОРА РАСПЕЧАТЫВАЮТСЯ ЕГО  КООРДИНАТЫ,
  Т.Е. ИМЯ ПРОЦЕДУРЫ И НОМЕР ЭТОГО  ОПЕРАТОРА.  ЕСЛИ  ИСПОЛЬЗОВАЛСЯ
  КЛЮЧ  "S"  ПРИ  КОМПИЛЯЦИИ,  ТО  РАСПЕЧАТЫВАЕТСЯ  ТАКЖЕ  ИСХОДНАЯ
  СТРОКА, СОДЕРЖАЩАЯ ОПЕРАТОР. ТАКИМ ОБРАЗОМ ТРАССИРОВКА  ПОЗВОЛЯЕТ
  КОНТРОЛИРОВАТЬ (НАБЛЮДАТЬ) ПРОЦЕСС  ВЫПОЛНЕНИЯ  ПРОГРАММЫ.  РЕЖИМ
  ТРАССИРОВКИ УСТАНАВЛИВАЕТСЯ КОМАНДОЙ "N;T", ГДЕ N НЕ РАВНО  НУЛЮ.
  ЗАВЕРШЕНИЕ   РЕЖИМА   ТРАССИРОВКИ   (ВЫХОД   ИЗ   ЭТОГО   РЕЖИМА)
  ОСУЩЕСТВЛЯЕТСЯ ПО КОМАНДЕ "0;T" ИЛИ ";T".


       П_Р_И_М_Е_Ч_А_Н_И_Е. СЛЕДУЕТ  ПОМНИТЬ,  ЧТО,  ЕСЛИ  В  ОДНОЙ
  СТРОКЕ  НАХОДИТСЯ   НЕСКОЛЬКО   ОПЕРАТОРОВ,   ТО   СТРОКА   БУДЕТ
  РАСПЕЧАТАНА ТОЛЬКО ОДИН РАЗ:

  PASCAL DEBUGGER V2.2

  LISTING FILE NAME? DBGTST
  ] SUM,2;B
  ] ;G
  BREAKPOINT AT SUM,2  I:=ADD(I,E);
  ] 2;T
  ] ;P
  ADD,1  X:=P;
  ADD,2  Y:=Q;
  ADD,3  IF Y=0 THEN ADD:=X
  ADD,5  ELSE ADD:=ADD(0,X)+ADD(Y,0);
  ADD,1  X:=P;
  ADD,2  Y:=Q;
  ADD,3  IF Y=0 THEN ADD:=X
  ADD,5  ELSE ADD:=ADD(0,X)+ADD(Y,0);
  ADD,1  X:=P;
  ADD,2  Y:=Q;
  ADD,3  IF Y=0 THEN ADD:=X
  ADD,6  END; (* END OF ADD *)
  ADD,1  X:=P;
  ADD,2  Y:=Q;
  ADD,3  IF Y=0 THEN ADD:=X
                               CTP. 35



ЩИ1.700.016 ПО.04-01 33


  ADD,6  END; (* END OF ADD *)
  ADD,6  END; (* END OF ADD *)
  ADD,1  X:=P;
  ADD,2  Y:=Q;
  ADD,3  IF Y=0 THEN ADD:=X
  ADD,6  END; (* END OF ADD *)
  ADD,6  END; (* END OF ADD *)
  SUM,3  END; (* END OF SUM *)
  MAIN,4  END. (* END OF MAIN *)
  PROGRAM TERMINATION AT MAIN,4  END. (* END OF MAIN *)
  ]



       13.5. ТРАССИРОВКА ВЫПОЛНЯЕМЫХ ПРОЦЕДУР (;C)



       В  БОЛЬШИНСТВЕ  СЛУЧАЕВ  ТРАССИРОВКА  ВСЕЙ  ПРОГРАММЫ  МОЖЕТ
  ПОТРЕБОВАТЬ МНОГО ВРЕМЕНИ. ДЛЯ  РЕШЕНИЯ  ЭТОЙ  ПРОБЛЕМЫ  ОТЛАДЧИК
  ОБЕСПЕЧИВАЕТ  БОЛЕЕ  КОРОТКУЮ  ФОРМУ  ТРАССИРОВКИ  -  ТРАССИРОВКУ
  ВЫЗОВОВ ПРОЦЕДУР И ФУНКЦИЙ.

       ДАННЫЙ РЕЖИМ ТРАССИРОВКИ ЗАДАЕТСЯ КОМАНДОЙ "N;C", ГДЕ  N  НЕ
  РАВНО НУЛЮ. ЗАВЕРШЕНИЕ ДАННОГО РЕЖИМА ТРАССИРОВКИ  ОСУЩЕСТВЛЯЕТСЯ
  КОМАНДОЙ "0;C" ИЛИ ";C".

       В   ДАННОМ   РЕЖИМЕ   ТРАССИРОВКИ   ОТЛАДЧИК   РАСПЕЧАТЫВАЕТ
  ИНФОРМАЦИЮ О ВХОДЕ В  ПРОЦЕДУРУ  ИЛИ  ФУНКЦИЮ,  А  ТАКЖЕ  ПРИ  ИХ
  СООТВЕТСТВУЮЩЕМ ЗАВЕРШЕНИИ:




























                               CTP. 36



ЩИ1.700.016 ПО.04-01 33


  PASCAL DEBUGGER V2.2

  LISTING FILE NAME? DBGTST
  ] 1;C
  ] ;G
  ENTERING SUM FROM MAIN,3  SUM(3,4,5);
  ENTERING ADD FROM SUM,1  I:=ADD(C,D);
  ENTERING ADD FROM ADD,5  ELSE ADD:=ADD(0,X)+ADD(Y,0);
  ENTERING ADD FROM ADD,5  ELSE ADD:=ADD(0,X)+ADD(Y,0);
  LEAVING  ADD
  ENTERING ADD FROM ADD,5  ELSE ADD:=ADD(0,X)+ADD(Y,0);
  LEAVING  ADD
  LEAVING  ADD
  ENTERING ADD FROM ADD,5  ELSE ADD:=ADD(0,X)+ADD(Y,0);
  LEAVING  ADD
  LEAVING  ADD
  ENTERING ADD FROM SUM,2  I:=ADD(I,E);
  ENTERING ADD FROM ADD,5  ELSE ADD:=ADD(0,X)+ADD(Y,0);
  ENTERING ADD FROM ADD,5  ELSE ADD:=ADD(0,X)+ADD(Y,0);
  LEAVING  ADD
  ENTERING ADD FROM ADD,5  ELSE ADD:=ADD(0,X)+ADD(Y,0);
  LEAVING  ADD
  LEAVING  ADD
  ENTERING ADD FROM ADD,5  ELSE ADD:=ADD(0,X)+ADD(Y,0);
  LEAVING  ADD
  LEAVING  ADD
  LEAVING  SUM
  PROGRAM TERMINATION AT MAIN,4  END. (* END OF MAIN *)
  ]



       13.6. СЛЕЖЕНИЕ ЗА ПЕРЕМЕННОЙ (;W)



       КОМАНДА СЛЕЖЕНИЯ ИСПОЛЬЗУЕТСЯ ДЛЯ "НАБЛЮДЕНИЯ" ЗА  ЗНАЧЕНИЕМ
  ПЕРЕМЕННОЙ. ЕСЛИ УКАЗАННАЯ ПЕРЕМЕННАЯ ИЗМЕНЯЕТ СВОЕ ЗНАЧЕНИЕ,  ТО
  ОТЛАДЧИК  ПОЛУЧАЕТ  УПРАВЛЕНИЕ,  КАК  И  В  ТОЧКЕ  ОСТАНОВА.  ДЛЯ
  УСТАНОВКИ НАБЛЮДЕНИЯ  ЗА  ПЕРЕМЕННОЙ  НЕОБХОДИМО  НАПЕЧАТАТЬ  ИМЯ
  ПЕРЕМЕННОЙ, А ЗАТЕМ ";W".  ЧТОБЫ  СНЯТЬ  НАБЛЮДЕНИЕ  ИСПОЛЬЗУЕТСЯ
  КОМАНДА "-1;W".

       ПЕРЕД ВЫПОЛНЕНИЕМ ОЧЕРЕДНОГО ОПЕРАТОРА  ОТЛАДЧИК  ПРОВЕРЯЕТ,
  ИЗМЕНИЛОСЬ ЛИ  ЗНАЧЕНИЕ  НАБЛЮДАЕМОЙ  ПЕРЕМЕННОЙ.  ЕСЛИ  ЗНАЧЕНИЕ
  ИЗМЕНИЛОСЬ, ТО ОТЛАДЧИК ПЕЧАТАЕТ ОБ ЭТОМ СООБЩЕНИЕ И ПЕРЕХОДИТ  В
  СОСТОЯНИЕ ОЖИДАНИЯ КОМАНДЫ.


       П_Р_И_М_Е_Ч_А_Н_И_Е. СЛЕДУЕТ ПОМНИТЬ, ЧТО ОТЛАДЧИК ВЫПОЛНЯЕТ
  ОСТАНОВ ПОСЛЕ ОПЕРАТОРА, КОТОРЫЙ ПРИВЕЛ  К  МОДИФИКАЦИИ  ЗНАЧЕНИЯ
  ПЕРЕМЕННОЙ. ДЛЯ ТОГО, ЧТОБЫ  РАСПЕЧАТАТЬ  ТОТ  ОПЕРАТОР,  КОТОРЫЙ
  ВЫЗВАЛ  МОДИФИКАЦИЮ,  НЕОБХОДИМО   ИСПОЛЬЗОВАТЬ   КОМАНДУ   "¤L",
  ОПИСАННУЮ НИЖЕ.

       ПОСЛЕ  ПРОДОЛЖЕНИЯ  ВЫПОЛНЕНИЯ   ПРОГРАММЫ   НАБЛЮДЕНИЕ   ЗА
  ПЕРЕМЕННОЙ БУДЕТ ПРОДОЛЖАТЬСЯ.

                               CTP. 37



ЩИ1.700.016 ПО.04-01 33


       ОСОБАЯ ОСТОРОЖНОСТЬ ТРЕБУЕТСЯ  ПРИ  СЛЕЖЕНИИ  ЗА  ЛОКАЛЬНЫМИ
  ПЕРЕМЕННЫМИ. УСТАНОВИТЬ СЛЕЖЕНИЕ ЗА  ЛОКАЛЬНОЙ  ПЕРЕМЕННОЙ  МОЖНО
  ТОЛЬКО, КОГДА УПРАВЛЕНИЕ БУДЕТ ПЕРЕДАНО СООТВЕТСТВУЮЩЕЙ ПРОЦЕДУРЕ
  ИЛИ ФУНКЦИИ. РЕШЕНИЕ ПРОБЛЕМЫ ЗАКЛЮЧАЕТСЯ В ТОМ, ЧТОБЫ УСТАНОВИТЬ
  ТОЧКУ ОСТАНОВА НА ПЕРВОМ ОПЕРАТОРЕ ПРОЦЕДУРЫ. ПРИ ДОСТИЖЕНИИ ЭТОЙ
  ТОЧКИ ОСТАНОВА МОЖНО УСТАНОВИТЬ СЛЕЖЕНИЕ ЗА  ОДНОЙ  ИЗ  ЛОКАЛЬНЫХ
  ПЕРЕМЕННЫХ ЭТОЙ ПРОЦЕДУРЫ.

       КОГДА  ПРОЦЕДУРА  ИЛИ  ФУНКЦИЯ  ЗАВЕРШАЕТСЯ,  ТО   ЛОКАЛЬНАЯ
  ПЕРЕМЕННАЯ  ПЕРЕСТАЕТ  БЫТЬ   ДОСТУПНОЙ,   И   ОТЛАДЧИК   СНИМАЕТ
  НАБЛЮДЕНИЕ ЗА НЕЙ И РАСПЕЧАТЫВАЕТ СООТВЕТСТВУЮЩЕЕ СООБЩЕНИЕ:

  PASCAL DEBUGGER V2.2

  LISTING FILE NAME? DBGTST
  ] SUM,1;B
  ] ;G
  BREAKPOINT AT SUM,1  I:=ADD(C,D);
  ] I/
  0
  ] I;W
  ] ;P
  WATCHED VALUE CHANGED.
  BREAKPOINT AT SUM,2  I:=ADD(I,E);
  ] I/
  7
  ] ;P
  WATCHED VALUE CHANGED.
  BREAKPOINT AT SUM,3  END; (* END OF SUM *)
  ] I/
  12
  ] MAIN,4;B
  ] ;P
  WATCH TERMINATED.  VALUE DIDN'T CHANGE.
  BREAKPOINT AT MAIN,4  END. (* END OF MAIN *)
  ]



       13.7. РАСПЕЧАТКА СОДЕРЖИМОГО ПЕРЕМЕННЫХ



       ОТЛАДЧИК МОЖЕТ РАСПЕЧАТЫВАТЬ СОДЕРЖИМОЕ ПЕРЕМЕННЫХ В ЧЕТЫРЕХ
  ФОРМАТАХ: INTEGER, BYTE, REAL, CHAR.  ДЛЯ  РАСПЕЧАТКИ  ПЕРЕМЕННОЙ
  СЛЕДУЕТ ВВЕСТИ ЕЕ ИМЯ И КОМАНДУ, ОПРЕДЕЛЯЮЩУЮ ФОРМАТ РАСПЕЧАТКИ:

    /
         - INTEGER В ДЕСЯТИЧНОМ ВИДЕ;

    \
         - BYTE В ДЕСЯТИЧНОМ ВИДЕ;

    %
         - REAL В ФОРМАТЕ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ;

    '
         - ОДИН ЗНАК В СИМВОЛЬКОМ ВИДЕ (CHAR).
                               CTP. 38



ЩИ1.700.016 ПО.04-01 33


       ФОРМАТ РАСПЕЧАТКИ INTEGER ОБЫЧНО ИСПОЛЬЗУЕТСЯ ПРИ РАСПЕЧАТКЕ
  ЗНАЧЕНИЙ ПЕРЕМЕННЫХ, ОБ'ЯВЛЕННЫХ КАК INTEGER. ФОРМАТ BYTE  БЫВАЕТ
  ПОЛЕЗНЫМ ПРИ ВЫВОДЕ СКАЛЯРНЫХ ТИПОВ ИЛИ ПЕРЕМЕННЫХ ТИПА  BOOLEAN.
  СИМВОЛЬНАЯ ИНФОРМАЦИЯ ТАКЖЕ МОЖЕТ РАСПЕЧАТЫВАТЬСЯ ФОРМАТОМ  BYTE.
  ФОРМАТ REAL ИСПОЛЬЗУЕТСЯ  ДЛЯ  ВЫВОДА  ПЕРЕМЕННЫХ  ТИПА  REAL,  А
  ФОРМАТ CHAR - ПЕРЕМЕННЫХ ТИПА CHAR.

       СЛЕДУЕТ ПОМНИТЬ, ЧТО ОТЛАДЧИК НЕ ИМЕЕТ  ИНФОРМАЦИИ  О  ТИПАХ
  ПЕРЕМЕННЫХ. ПОЭТОМУ МОЖНО РАСПЕЧАТЫВАТЬ ОДНУ И ТУ  ЖЕ  ПЕРЕМЕННУЮ
  ПО РАЗЛИЧНЫМ ФОРМАТАМ, ОДНАКО РЕЗУЛЬТАТЫ ПРИ ЭТОМ  БУДУТ  РАЗНЫЕ,
  НАПРИМЕР:

  PASCAL DEBUGGER V2.2

  LISTING FILE NAME? DBGTST
  ] MAIN,3;B
  ] ;G
  BREAKPOINT AT MAIN,3  SUM(3,4,5);
  ] A/
  1
  ] B/
  2
  ] I/
  CAN'T FIND VARIABLE CALLED "I"
  2
  ] SUM,2;B
  ] ;P
  BREAKPOINT AT SUM,2  I:=ADD(I,E);
  ] I/
  7
  ]

       ДЛЯ УДОБСТВА РАСПЕЧАТКИ МАССИВОВ МОЖНО ИСПОЛЬЗОВАТЬ  СЧЕТЧИК
  ПОВТОРЕНИЯ  ПОСЛЕ   ЗНАКА,   ОПРЕДЕЛЯЮЩЕГО   ФОРМАТ   РАСПЕЧАТКИ.
  НАПРИМЕР, ДЛЯ РАСПЕЧАТКИ ЗНАКОВОГО МАССИВА "X", СОСТОЯЩЕГО ИЗ  30
  ЗНАКОВ, НЕОБХОДИМА КОМАНДА "X'30". ЕСЛИ ЭТОТ ЖЕ МАССИВ ИМЕЕТ  ТИП
  REAL, ТО ЕГО МОЖНО РАСПЕЧАТАТЬ ПО КОМАНДЕ "X/30". ПРИ  РАСПЕЧАТКЕ
  ЭЛЕМЕНТОВ ЦЕЛЫХ МАССИВОВ ОДНОВРЕМЕННО ВЫВОДЯТСЯ  И  ИХ  АДРЕСА  В
  ВИДЕ ".+N", ГДЕ N ЭТО СМЕЩЕНИЕ  В  БАЙТАХ  ОТ  НАЧАЛЬНОГО  АДРЕСА
  МАССИВА. АДРЕС  ЭЛЕМЕНТА  ВЫВОДИТСЯ  ПЕРЕД  РАСПЕЧАТКОЙ  ЗНАЧЕНИЯ
  ЭЛЕМЕНТА.

       ПРИ УКАЗАНИИ АДРЕСА  ПЕРЕМЕННОЙ,  ХОТЯ  ОБЫЧНО  ИСПОЛЬЗУЕТСЯ
  ОДИН ИДЕНТИФИКАТОР, МОЖНО ПРИМЕНЯТЬ ПРОСТЫЕ ВЫРАЖЕНИЯ.  НАПРИМЕР,
  ДЛЯ  РАСПЕЧАТКИ  10-ГО  ЭЛЕМЕНТА  МАССИВА  ЦЕЛЫХ  ЧИСЕЛ   СЛЕДУЕТ
  ВОСПОЛЬЗОВАТЬСЯ КОМАНДОЙ "X+20". ОЧЕВИДНО,  ЧТО  ДЕСЯТЫЙ  ЭЛЕМЕНТ
  ЦЕЛОЧИСЛЕННОГО МАССИВА НАХОДИТСЯ, НАЧИНАЯ С  20-ГО  БАЙТА.  ПОСЛЕ
  ТОГО, КАК БЫЛО РАСПЕЧАТАНО ЗНАЧЕНИЕ ПЕРЕМЕННОЙ,  ЕЕ  АДРЕС  МОЖНО
  ОБОЗНАЧАТЬ  ".".  НАПРИМЕР,  ЕСЛИ  БЫЛА  РАСПЕЧАТАНА   ПЕРЕМЕННАЯ
  "X+20/" И НУЖНО РАСПЕЧАТАТЬ СЛЕДУЮЩИЙ ЭЛЕМЕНТ МАССИВА "X+22/", ТО
  МОЖНО ВОСПОЛЬЗОВАТЬСЯ КОМАНДОЙ ".+2/". ИЗ ТЕКУЩЕГО  АДРЕСА  МОЖНО
  ТАКЖЕ ВЫЧИТАТЬ ЗНАЧЕНИЯ, Т.Е. ДОПУСТИМА КОНСТРУКЦИЯ ТИПА ".-4".

       ПРИ  ИСПОЛЬЗОВАНИИ  ПЕРЕМЕННЫХ-УКАЗАТЕЛЕЙ  МОЖНО  ПРОСЛЕДИТЬ
  ЛЮБОЙ УРОВЕНЬ  ССЫЛКИ  ИСПОЛЬЗОВАНИЕМ  ОПЕРАТОРА  "^"  (КОСВЕННАЯ
  АДРЕСАЦИЯ ДЛЯ РАСПЕЧАТКИ ПЕРЕМЕННЫХ-УКАЗАТЕЛЕЙ).  НАПРИМЕР,  ЕСЛИ
  ПЕРЕМЕННАЯ "X" УКАЗЫВАЕТ НА ЦЕЛОЕ, ТО ЭТО ЧИСЛО МОЖНО РАСПЕЧАТАТЬ
  КОМАНДОЙ "X^/". ОПЕРАТОР "."  ИДЕНТИЧЕН  ОПЕРАТОРУ  "+"  И  МОЖЕТ
                               CTP. 39



ЩИ1.700.016 ПО.04-01 33


  ПРИМЕНЯТЬСЯ ПРИ РАСПЕЧАТКЕ СЛОЖНЫХ  ЗАПИСЕЙ.  КОНСТРУКНЦИЯ  "X.4"
  ПОЛНОСТЬЮ ЭКВИВАЛЕНТНА "X+4".

       "X^.4" ОЗНАЧАЕТ ТРЕТЬЕ СЛОВО ЗАПИСИ,  НА  КОТОРУЮ  УКАЗЫВАЕТ
  ПЕРЕМЕННАЯ "X" (ВСЕ СМЕЩЕНИЯ ЗАДАЮТСЯ В БАЙТАХ).

       ИМЕЮЩИЕСЯ ОПЕРАТОРЫ  ДАЮТ  ВОЗМОЖНОСТЬ  РАСПЕЧАТЫВАТЬ  ОЧЕНЬ
  СЛОЖНЫЕ СТРУКТУРЫ ДАННЫХ, НАПРИМЕР, "X.4^.2.100^.4".

       ДЛЯ ТОГО, ЧТОБЫ УЗНАТЬ АДРЕС ПЕРЕМЕННОЙ ИЛИ  ЗАПИСИ  (ВМЕСТО
  ЕЕ ЗНАЧЕНИЯ), СЛЕДУЕТ ИСПОЛЬЗОВАТЬ ОПЕРАТОР "=".  НАПРИМЕР,  "X="
  ПРИВЕДЕТ К РАСПЕЧАТКЕ АДРЕСА ПЕРЕМЕННОЙ "X", А  НЕ  ЕЕ  ЗНАЧЕНИЯ.
  ОДНАКО  ПРИ  РАБОТЕ  С  АБСОЛЮТНЫМИ  АДРЕСАМИ  СЛЕДУЕТ  СОБЛЮДАТЬ
  ОСТОРОЖНОСТЬ.   ЛОКАЛЬНЫЕ   ПЕРЕМЕННЫЕ   ФУНКЦИЙ   ИЛИ   ПРОЦЕДУР
  РАЗМЕЩАЮТСЯ В  СТЕКЕ.  ПОЭТОМУ  ИХ  АДРЕСА  МЕНЯЮТСЯ  (ИЛИ  МОГУТ
  МЕНЯТЬСЯ)  ОТ  ВЫЗОВА  К  ВЫЗОВУ.  ТАКЖЕ  НЕ   СЛЕДУЕТ   ПЫТАТЬСЯ
  РАСПЕЧАТАТЬ ЗНАЧЕНИЯ ПЕРЕМЕННЫХ, ПРО КОТОРЫЕ ОТЛАДЧИК  "ГОВОРИТ",
  ЧТО ОН НАЙТИ ИХ НЕ МОЖЕТ ("CAN'T FIND VARIABLE").



       13.8. ИЗМЕНЕНИЕ СОДЕРЖИМОГО ПЕРЕМЕННЫХ



       ОТЛАДЧИК ПОЗВОЛЯЕТ ИЗМЕНЯТЬ ЗНАЧЕНИЯ  ПЕРЕМЕННЫХ,  ИСПОЛЬЗУЯ
  ОПЕРАТОР ПРИСВАИВАНИЯ ":=". ДЛЯ ТОГО, ЧТОБЫ ПРИСВОИТЬ  ПЕРЕМЕННОЙ
  "A" ЗНАЧЕНИЕ "1", МОЖНО ИСПОЛЬЗОВАТЬ  ОПЕРАТОР  "A:=1".  ОПЕРАТОР
  "X:='СТРОКА'" ПРИСВОИТ ЗНАКОВОМУ МАССИВУ СТРОКУ ЗНАКОВ. ПОСКОЛЬКУ
  ОТЛАДЧИК НЕ РАСПОЛАГАЕТ ИНФОРМАЦИЕЙ  О  ТИПАХ  ПЕРЕМЕННЫХ,  ТО  В
  ОПЕРАТОРЕ ":=" НУЖНО  УКАЗЫВАТЬ  ТИП.  НАПРИМЕР,  ЧТОБЫ  ПРИВОИТЬ
  ПЕРЕМЕННОЙ "X" ТИПА REAL ЗНАЧЕНИЕ  1.234,  НУЖНО  ВВЕСТИ  КОМАНДУ
  "X:=R1.234".

       ПРИМЕРЫ:

  ] A:=1
  ] FILENAME:='TEST.DAT'
  ] CORRELATION:=R.09332123456E-2



       13.9. РАСПЕЧАТКА СПИСКА ИМЕН ПЕРЕМЕННЫХ



       ЕСЛИ ОТЛАДКА ПРОГРАММЫ ВЫПОЛНЯЕТСЯ БЕЗ  ЛИСТИНГА  ИЛИ  ЧАСТО
  ИСПОЛЬЗУЮТСЯ ЛОКАЛЬНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ, В КОТОРЫХ  ОПРЕДЕЛЕНЫ
  ЛОКАЛЬНЫЕ  ПЕРЕМЕННЫЕ,  ТО  БЫВАЕТ  ПОЛЕЗНЫМ  РАСПЕЧАТАТЬ  СПИСОК
  ПЕРЕМЕННЫХ,  КОТОРЫЕ  В  ДАННЫЙ   МОМЕНТ   ЯВЛЯЮТСЯ   ДОСТУПНЫМИ.
  РАСПЕЧАТКУ ИМЕН ПЕРЕМЕННЫХ МОЖНО ВЫПОЛНИТЬ КОМАНДОЙ "¤V".  СПИСОК
  РАСПЕЧАТЫВАЕТСЯ, НАЧИНАЯ  С  ИМЕНИ  ТЕКУЩЕЙ  ЛОКАЛЬНОЙ  ПРОЦЕДУРЫ
  (ФУНКЦИИ), ЗА КОТОРЫМ СЛЕДУЮТ ИМЕНА  ПЕРЕМЕННЫХ,  ОПРЕДЕЛЕННЫХ  В
  ДАННОЙ  ПРОЦЕДУРЕ  (ФУНКЦИИ).  ДАЛЕЕ  РАСПЕЧАТЫВАЮТСЯ  ПРОЦЕДУРЫ,
  НАХОДЯЩИЕСЯ НА УРОВНЯХ ВЛОЖЕННОСТИ,  ИМЕЮЩИХ  МЕНЬШИЕ  НОМЕРА,  А
  ТАКЖЕ ИХ ЛОКАЛЬНЫЕ ПЕРЕМЕННЫЕ. В  КОНЦЕ  СПИСКА  ВЫВОДЯТСЯ  ИМЕНА
  ГЛОБАЛЬНЫХ  ПЕРЕМЕННЫХ.  СПИСОК  ВСЕХ   ПЕРЕМЕННЫХ   МОЖЕТ   БЫТЬ
  ДОСТАТОЧНО БОЛЬШИМ, ОДНАКО,  ИСПОЛЬЗУЯ  КОМАНДУ  <CTRL/O>,  МОЖНО
                               CTP. 40



ЩИ1.700.016 ПО.04-01 33


  ПРЕКРАТИТЬ РАСПЕЧАТКУ.

       ПРИМЕРЫ:

  PASCAL DEBUGGER V2.2

  LISTING FILE NAME? DBGTST
  ] ¤V

  MAIN
     A
     B
  ] SUM,1;B
  ] ;G
  BREAKPOINT AT SUM,1  I:=ADD(C,D);
  ] ¤V

  SUM
     C
     D
     E
     I

  MAIN
     A
     B
  ] ADD,1;B
  ] ;P
  BREAKPOINT AT ADD,1  X:=P;
  ] ¤V

  ADD
     P
     Q
     X
     Y

  SUM
     C
     D
     E
     I

  MAIN
     A
     B
  ]











                               CTP. 41



ЩИ1.700.016 ПО.04-01 33


      13.10. РАСПЕЧАТКА СПИСКА ВЫЗВАННЫХ ПРОЦЕДУР



       ЕСЛИ  ВЫПОЛНЕНИЕ  ПРОГРАММЫ  ПРЕРВАНО,  НАПРИМЕР,  ПО  ТОЧКЕ
  ОСТАНОВА, ТО ОБЫЧНО БЫВАЕТ ПОЛЕЗНО ПОНЯТЬ, КАКИМ ПУТЕМ ВЫПОЛНЕНИЕ
  ПРОГРАММЫ ПРИВЕЛО К ТОЧКЕ ОСТАНОВА. МНОГО ВАЖНОЙ ИНФОРМАЦИИ МОЖНО
  ПОЛУЧИТЬ В ЭТОМ СЛУЧАЕ ПО  КОМАНДЕ  "¤S",  КОТОРАЯ  РАСПЕЧАТЫВАЕТ
  СТЕК  ВЫЗОВОВ  ПРОЦЕДУР  И  ФУНКЦИЙ.  РАСПЕЧАТКА   СОДЕРЖИТ   ИМЯ
  ПРОЦЕДУРЫ  ИЛИ  ФУНКЦИИ  И  НОМЕР  ОПЕРАТОРА,  В  КОТОРОМ  ДАННАЯ
  ПРОЦЕДУРА БЫЛА ВЫЗВАНА. ТЕКУЩАЯ ПРОЦЕДУРА РАСПЕЧАТЫВАЕТСЯ ПЕРВОЙ,
  ЗАТЕМ ВЫВОДИТСЯ ИМЯ ПРОЦЕДУРЫ, КОТОРАЯ ВЫЗВАЛА ДАННУЮ И Т.Д.

       ПРИМЕР:

  PASCAL DEBUGGER V2.2

  LISTING FILE NAME? DBGTST
  ] ADD,1;B
  ] ;G
  BREAKPOINT AT ADD,1  X:=P;
  ] ¤S
  ADD,1  X:=P;
  SUM,1  I:=ADD(C,D);
  MAIN,3  SUM(3,4,5);
  ] 2;P
  BREAKPOINT AT ADD,1  X:=P;
  ] ¤S
  ADD,1  X:=P;
  ADD,5  ELSE ADD:=ADD(0,X)+ADD(Y,0);
  ADD,5  ELSE ADD:=ADD(0,X)+ADD(Y,0);
  SUM,1  I:=ADD(C,D);
  MAIN,3  SUM(3,4,5);
  ]



      13.11. РАСПЕЧАТКА ПОСЛЕДНИХ ВЫПОЛНЕННЫХ ОПЕРАТОРОВ



       ОТЛАДЧИК  ВСЕГДА  ЗАПОМИНАЕТ  ИНФОРМАЦИЮ  О   ПОСЛЕДНИХ   10
  ВЫПОЛНЕННЫХ ОПЕРАТОРАХ. ЕСЛИ  НЕОБХОДИМО  ПОНЯТЬ,  КАК  ПРОИЗОШЕЛ
  ПЕРЕХОД В ТОЧКУ ОСТАНОВА, ТО МОЖНО ВОСПОЛЬЗОВАТЬСЯ КОМАНДОЙ "¤L",
  КОТОРАЯ РАСПЕЧАТАЕТ НОМЕРА ПОСЛЕДНИХ 10 ОПЕРАТОРОВ, КОТОРЫЕ  БЫЛИ
  ВЫПОЛНЕНЫ, НАПРИМЕР:












                               CTP. 42



ЩИ1.700.016 ПО.04-01 33


  PASCAL DEBUGGER V2.2

  LISTING FILE NAME? DBGTST
  ] ADD,3;B
  ] ;G
  BREAKPOINT AT ADD,3  IF Y=0 THEN ADD:=X
  ] ;P
  BREAKPOINT AT ADD,3  IF Y=0 THEN ADD:=X
  ] ¤L
  MAIN,2  B:=2;
  MAIN,3  SUM(3,4,5);
  SUM,1  I:=ADD(C,D);
  ADD,1  X:=P;
  ADD,2  Y:=Q;
  ADD,3  IF Y=0 THEN ADD:=X
  ADD,5  ELSE ADD:=ADD(0,X)+ADD(Y,0);
  ADD,1  X:=P;
  ADD,2  Y:=Q;
  ADD,3  IF Y=0 THEN ADD:=X
  ]




              14.  КОНТРОЛЬНО-ДЕМОНСТРАЦИОННАЯ ЗАДАЧА




       СОСТАВ КОНТРОЛЬНО-ДЕМОНСТРАЦИОННОЙ ЗАДАЧИ :

  BIO.PAS-ПРОГРАММА ПОСТРОЕНИЯ БИОРИТМОВ. ГРАФИК ПЕЧАТАЕТСЯ НА LP:.

       ПОРЯДОК ВЫПОЛНЕНИЯ ЗАДАЧИ СЛЕДУЮЩИЙ:


  .AS DX1: DK:

  .RUN PASCAL
  *BIO=BIO

  .MACRO BIO

  .R LINK
  BIO=BIO,PASCAL

  .RUN BIO


  BIRTHDATE? 22 NOV 53
  MONTH TO START PLOT? AUG 81
  NUMBER OF MONTHS TO PLOT? 1

  BIRTHDATE = 22 NOV 1953
  PLOT FOR THE MONTH OF AUG 1981



                               CTP. 43



ЩИ1.700.016 ПО.04-01 33


                -                         +
  1 P                        : I                     E
  2 P                     I  :                        E
  3    P              I      :                       E
  4       P      I           :                     E
  5          I  P            :                  E
  6       I           P      :              E
  7    I                     P          E
  8  I                       :    EP
  9 I                        E            P
 10 I                  E     :                 P
 11 I             E          :                     P
 12   I      E               :                       P
 13     IE                   :                        P
 14   E    I                 :                      P
 15 E          I             :                   P
 16 E              I         :               P
 17 E                   I    :         P
 18   E                      I  P
 19      E               P   :   I
 20          E     P         :        I
 21          P    E          :            I
 22     P              E     :                I
 23  P                       E                   I
 24 P                        :    E                I
 25 P                        :          E            I
 26    P                     :              E         I
 27       P                  :                  E    I
 28             P            :                     EI
 29                   P      :                    I  E
 30                          P                  I     E
 31                          :     P        I        E


























                               CTP. 44



ЩИ1.700.016 ПО.04-01 33


                                                   ПРИЛОЖЕНИЕ  1



                       СПИСОК КОМАНД ОТЛАДЧИКА




   ¤L
         - ВЫВОД  СПИСКА  10  ПОСЛЕДНИХ  ОПЕРАТОРОВ,  КОТОРЫЕ  БЫЛИ
           ВЫПОЛНЕНЫ.

   ¤S
         - РАСПЕЧАТКА СПИСКА (СТЕКА) ВЫЗВАННЫХ ПРОЦЕДУР И ФУНКЦИЙ.

   ¤V
         - РАСПЕЧАТКА СПИСКА ИМЕН ПЕРЕМЕННЫХ,  ДОСТУПНЫХ  В  ДАННОЙ
           ТОЧКЕ ПРОГРАММЫ.

   PROC,STMT;B
         - УСТАНОВИТЬ  ТОЧКУ  ОСТАНОВА  НА   ОПЕРАТОРЕ   "STMT"   В
           ПРОЦЕДУРЕ С ИМЕНЕМ "PROC".

   0;B
         - ОТМЕНИТЬ ТОЧКУ ОСТАНОВА.

   ;P
         - ПРОДОЛЖИТЬ ВЫПОЛНЕНИЕ ПРОГРАММЫ ПОСЛЕ ТОЧКИ ОСТАНОВА.

   N;P
         - ПРОПУСТИТЬ ТОЧКУ ОСТАНОВА  "N"  РАЗ  ИЛИ  ВЫПОЛНИТЬ  "N"
           ОПЕРАТОРОВ В ПОШАГОВОМ РЕЖИМЕ.

   ;G
         - НАЧАТЬ ВЫПОЛНЕНИЕ ПРОГРАММЫ (АНАЛОГИЧНО ";P").

   1;T
         - УСТАНОВИТЬ РЕЖИМ ТРАССИРОВКИ ВЫПОЛНЯЕМЫХ ОПЕРАТОРОВ.

   0;T
         - ОТМЕНИТЬ РЕЖИМ ТРАССИРОВКИ ВЫПОЛНЯЕМЫХ ОПЕРАТОРОВ.

   1;C
         - УСТАНОВИТЬ РЕЖИМ ТРАССИРОВКИ ВЫЗОВОВ ПРОЦЕДУР И ФУНКЦИЙ.

   0;C
         - ОТМЕНИТЬ РЕЖИМ ТРАССИРОВКИ ВЫЗОВОВ ПРОЦЕДУР И ФУНКЦИЙ.

   1;S
         - УСТАНОВИТЬ ПОШАГОВЫЙ РЕЖИМ ВЫПОЛНЕНИЯ ПРОГРАММЫ.

   0;S
         - ОТМЕНИТЬ  ПОШАГОВЫЙ  РЕЖИМ  ВЫПОЛНЕНИЯ  ПРОГРАММЫ,  Т.Е.
           ПЕРЕЙТИ В ОБЫЧНЫЙ РЕЖИМ.

   VAR;W
         - УСТАНОВИТЬ СЛЕЖЕНИЕ ЗА  ИЗМЕНЕНИЕМ  ЗНАЧЕНИЯ  ПЕРЕМЕННОЙ
                               CTP. 45



ЩИ1.700.016 ПО.04-01 33


           "VAR".

   -1;W
         - ОТМЕНИТЬ СЛЕЖЕНИЕ ЗА ЗНАЧЕНИЕМ ПЕРЕМЕННОЙ.

   VAR/
         - РАСПЕЧАТАТЬ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ ТИПА INTEGER.

   VAR/N
         - РАСПЕЧАТАТЬ  "N"   ЗНАЧЕНИЙ   ЦЕЛОЧИСЛЕННЫХ   ПЕРЕМЕННЫХ
           (МАССИВА).

   VAR\
         - РАСПЕЧАТАТЬ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ В ДЕСЯТИЧНОМ  ВИДЕ  (КАК
           БАЙТА).

   VAR\N
         - РАСПЕЧАТАТЬ "N" ПОСЛЕДУЮЩИХ БАЙТОВ В ДЕСЯТИЧНОМ ВИДЕ.

   VAR%
         - РАСПЕЧАТАТЬ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ ТИПА REAL.

   VAR%N
         - РАСПЕЧАТАТЬ "N" ЗНАЧЕНИЙ ПЕРЕМЕННЫХ С ПЛАВАЮЩЕЙ ЗАПЯТОЙ.

   VAR'
         - РАСПЕЧАТАТЬ ЗНАЧЕНИЕ ПЕРЕМЕННОЙ ТИПА CHAR  В  СИМВОЛЬНОМ
           ВИДЕ.

   VAR'N
         - РАСПЕЧАТАТЬ  "N"  ПОСЛЕДУЮЩИХ  ЗНАЧЕНИЙ   ПЕРЕМЕННЫХ   В
           СИМВОЛЬНОМ ВИДЕ.

   VAR=
         - РАСПЕЧАТАТЬ АБСОЛЮТНЫЙ АДРЕС ПЕРЕМЕННОЙ.

   VAR:=NUMBER
         - ПРИСВОИТЬ  ЦЕЛОЧИСЛЕННОЕ  ЗНАЧЕНИЕ  (NUMBER)  ПЕРЕМЕННОЙ
           "VAR".

   VAR:='TEXT'
         - ПРИСВОИТЬ СИМВОЛЬНУЮ СТРОКУ ПЕРЕМЕННОЙ.

   VAR:=RNUMBER
         - ПРИСВОИТЬ  ЗНАЧЕНИЕ   С   ПЛАВАЮЩЕЙ   ЗАПЯТОЙ   (NUMBER)
           ПЕРЕМЕННОЙ.

   "+", "."
         - ОПЕРАТОРЫ СЛОЖЕНИЯ.

   "-"
         - ОПЕРАТОР ВЫЧИТАНИЯ.

   "^"
         - ОПЕРАТОР ССЫЛКИ (КОСВЕННАЯ АДРЕСАЦИЯ).

