





  Утвержден


  2б.00152-01 33 01-ЛУ











                  Операционная система МОС ВП


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


                   Руководство программиста



                      2б.00152-01 33 01

                         Листов 90/4К
















                             1987

 Перв. примен.

  2б.00152-01                                        Литера














            



                  Операционная система МОС ВП


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


                   Руководство программиста



                        00152-01 33 01

                           Листов 86














                             1987

             



                            - 2 -

                        00152-01 33 01






                           АННОТАЦИЯ


       Документ предназначен для программистов, разрабатываю-

  щих программы на языке макроассемблер для  ЭВМ  СМ  1700  в

  операционной системе МОС ВП.

       Документ содержит шесть разделов и приложение.

       В разделе 1 описаны назначение, условия  применения  и

  основные принципы работы программы макроассемблер.

       В разделе 2 описаны характеристики программы  макроас-

  семблер.

       В разделе 3 описана команда MACRO, с  помощью  которой

  вызывается программа макроассемблер.

       В разделе 4 дана информация о входных и выходных  дан-

  ных программы макроассемблер.

       В разделе  5  содержатся  сведения  о  диагностических

  сообщениях.

       В разделе 6 описано подключение программ  пользователя

  и особенности их построения.

       В приложении приведены диагностические сообщения прог-

  раммы макроассемблер с пояснениями.













                            - 3 -

                        00152-01 33 01






                          СОДЕРЖАНИЕ





  1.  НАЗНАЧЕНИЕ И УСЛОВИЯ ПРИМЕНЕНИЯ ПРОГРАММЫ             6


  2.  ХАРАКТЕРИСТИКИ ПРОГРАММЫ                              9


  3.  ОБРАЩЕНИЕ К ПРОГРАММЕ                                10


  3.1.    Формат командной строки                          10

  3.2.    Спецификации файлов                              12

  3.3.    Квалификаторы                                    14

  3.3.1.    Квалификаторы    /CROSS_REFERENCE     и

            /NOCROSS_REFERENCE                             17

  3.3.2.    Квалификаторы /DEBUG и /NODEBUG                19

  3.3.3.    Квалификаторы /ENABLE и /DISABLE               21

  3.3.4.    Квалификатор /LIBRARY                          24

  3.3.5.    Квалификаторы /LIST и /NOLIST                  25

  3.3.6.    Квалификаторы /OBJECT и /NOOBJECT              26

  3.3.7.    Квалификаторы /SHOW и /NOSHOW                  27

  3.3.8.    Квалификатор /UPDATE                           29


  4.  ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ                            31


  4.1.    Входные данные                                   31

  4.1.1.    Необходимые     элементы      программы

            пользователя                                   31

  4.1.1.1.  Входное предложение                            32



                            - 4 -

                        00152-01 33 01


  4.1.1.2.  Конечное предложение                           33

  4.1.1.3.  Установка регистра 0                           33

  4.1.2.    Необходимые    элементы    блоков     и

            макрокоманд                                    34

  4.1.2.1.  Необходимые  элементы  блоков  условной

            трансляции                                     34

  4.1.2.2.  Необходимые элементы макрокоманд               35

  4.1.2.3.  Необходимые элементы блоков повторений         36

  4.1.2.4.  Необходимые    элементы    блоков     с

            неопределенным числом повторений               36

  4.1.3.    Элементы с ограниченным контекстом             37

  4.1.3.1.  Элементы,   используемые    только    в

            макрокомандах                                  37

  4.1.3.2.  Ограничения для программных секций             38

  4.2.    Выходные данные. Файл листинга                   39

  4.2.1.    Таблица содержания и заголовки страниц         39

  4.2.2.    Исходные операторы и  шестнадцатеричный

            код                                            40

  4.2.3.    Конечный список модификаций                    42

  4.2.4.    Таблица символов                               43

  4.2.5.    Содержание программных секций                  44

  4.2.6.    Листинг перекрестных ссылок                    45

  4.2.7.    Сводка трансляции                              45


  5.   СОOБЩЕНИЯ                                           47


  6.  ОПИСАНИЕ ТРАНСЛЯЦИИ ПРОГРАММ ПОЛЬЗОВАТЕЛЯ            49


  6.1.    Модули                                           49



                            - 5 -

                        00152-01 33 01


  6.2.    Программные секции                               50

  6.3.    Символы, определяемые пользователем              53

  6.4.    Макрокоманды                                     55


      Приложение                                           57


      Перечень ссылочных документов                        86














































                            - 5К -

                      2б.00152-01 33 01


  6.2.    Программные секции                               50

  6.3.    Символы, определяемые пользователем              53

  6.4.    Макрокоманды                                     55


      Приложение                                           57


      Перечень ссылочных документов                        86К








                            - 6 -

                        00152-01 33 01


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



       Программа макроассемблер предназначена для  трансляции

  исходных программ пользователя, разработанных на языке мак-

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

  оттранслированнная из исходного в об'ектный  вид  программа

  пользователя.

       Для работы программы макроассемблер  достаточна  мини-

  мальная конфигурация технических средств:

       - процессор СМ 1700;

       - ОЗУ емкостью 1 мбайт;

       - два накопителя на сменных магнитных дисках  емкостью

         14 мбайт СМ 5408;

       - консольное устройство загрузки на кассетной  магнит-

         ной ленте СМ 5218;

       - консольное устройство печати с клавиатурой СМ 6380;

       - алфавитно-цифровой дисплей ВТА 2000-17 (СМ 7224).

       С  помощью  редактора  текстов  пользователь   создает

  исходную  программу  на  языке  макроассемблер.   Поскольку

  исходная  программа  пользователя  представлена  в  формате

  кодов КОИ-8, то ее необходимо  оттранслировать  в  машинный

  формат. Трансляцию выполняет программа макроассемблер. Мак-

  роассемблер выполняет трансляцию, создавая при  этом  новую

  версию программы в  об'ектном  виде,  называемую  об'ектным

  модулем. Программа макроассемблер интерпретирует и  обраба-

  батывает исходные предложения языка макроассемблер по одно-

  му за раз и генерирует одну или более команд эвм  или  эле-




                            - 7 -

                        00152-01 33 01


  ментов данных.  Можно  запросить  программу  макроассемблер

  создать листинг исходной  программы  во  время  трансляции.

  Функции программы макроассемблер иллюстрирует рисунок.

        Функции программы макроассемблер

  +--------------+              +------------------+
  ! Файлы модифи-!              !   Библиотеки     !
  ! каций (необя-!-------+      !                  !
  ! зательные)   !       !      !   макрокоманд    !
  +--------------+       !      +------------------+
                         !             !
                         V             V
  +--------------+   +----------------------+   +----------+
  ! Исходная     !   !                      !   ! Об'ектный!
  ! программа    !-->!    Трансляция        !-->! модуль   !
  ! пользователя !   !                      !   !          !
  +--------------+   +----------------------+   +----------+
                                  !             +----------+
                                  !             ! Листинг  !
                                  +-----------> !(необяза- !
                                                ! тельный) !
                                                +----------+
       Во время трансляции  исходной  программы  пользователя

  программа макроассемблер выполняет следующие функции:

       - подсчитывает общее  число  команд  и  определяет  их

         относительное положение в программе;

       - по указанию модифицирует файлы добавляя, заменяя или

         удаляя строки;

       - по указанию следит  за  состоянием  модифицированных

         строк посредством конечного списка изменений;

       - преобразует мнемонику языка макроассемблер,  опреде-

         ленные пользователем символы  и  значения  данных  в

         об'ектный вид.

       Программа макроассемблер преобразует  каждый  оператор

  программы пользователя в числовые данные (об'ектный код)  и

  назначает данным относительные адреса памяти. По мере того,

  как программа  макроассемблер  транслирует  и  распределяет



                            - 8 -

                        00152-01 33 01


  каждый оператор, она соответственно  модифицирует  значение

  счетчика инструкций. Компоновщик  преобразует  эти  относи-

  тельные адреса памяти в виртуальные адреса в памяти эвм.

       В листинге трансляции программы макроассемблер  предс-

  тавлены адреса ячеек памяти и их содержимое, как шестнадца-

  теричные числа. Шестнадцатеричные числа представляют машин-

  ные коды, образующие в совокупности об'ектный модуль. Более

  полно файл листинга описывается в разделе 4.

       Созданный программой макроассемблер  об'ектный  модуль

  не  всегда  представляет  собой  функционально  завершенную

  программу.  Для  того,  чтобы  сформировать   функционально

  завершенную программу, иногда необходимо скомпоновать  этот

  модуль с другими модулями или файлами.
































                            - 9 -

                        00152-01 33 01


                 2. ХАРАКТЕРИСТИКИ ПРОГРАММЫ



       К внутренним характеристикам программы  макроассемблер

  относятся:

       - страничные отказы;

       - затраченное время процессора;

       - предел рабочего набора;

       - количество символов;

       - количество исходных строк;

       - количество об'ектных записей;

       - требуемый об'ем памяти.

       Все  показатели  характеристик  содержатся  в   сводке

  трансляции  файла  листинга  для  каждой  оттранслированной

  программы пользователя (п. 4.2.7).






























                           - 10 -

                        00152-01 33 01


                   3. ОБРАЩЕНИЕ К ПРОГРАММЕ



       Команда MACRO, печатаемая  на  терминале  в  ответ  на

  подсказку (сообщение о готовности)  командного  языка  DCL,

  вызывает программу макроассемблер. Программа макроассемблер

  считывает исходную программу пользователя, проверяет ее  на

  синтаксические ошибки, создает об'ектный  модуль,  и,  если

  указано, создает файл листинга.



       3.1. Формат командной строки


       Формат

  $ MACRO [квалификатор(ы)] спец. файла [квалификатор(ы)]

   где [квалификатор(ы)]

       - квалификаторы команды  или  файла  указывающие  спе-

         циальные действия, которые должны выполняться  прог-

         раммой макроассемблер;

  спец. файла

       - спецификация файла или список  спецификаций  файлов,

         которые определяют какие входные файлы  должны  быть

         оттранслированы в об'ектные модули. Если  специфика-

         ции файлов разделены знаками "+", производится  сое-

         динение файлов и они транслируются в один  об'ектный

         модуль. Если спецификации файлов разделяются знаками

         ",", то файлы транслируются  в  отдельные  об'ектные

         модули. Принимается по умолчанию тип файла "MAR" для

         исходных файлов и "MLB" для файлов библиотеки макро-

         команд.



                           - 11 -

                        00152-01 33 01


       Программа  макроассемблер  считывает  файлы   исходной

  программы в том порядке, в котором они указаны. Можно одной

  командой потребовать от программы макроассемблер  выполнить

  несколько трансляций. По умолчанию программа макроассемблер

  создает об'ектный модуль с тем же именем  файла,  что  и  у

  первого входного файла.  Чтобы  специфицировать  имя  файла

  об'ектного модуля, можно использовать квалификатор /OBJECT.

  Можно подавить получение об'ектного модуля, используя  ква-

  лификатор /NOOBJECT.

       Когда вызывается программа макроассемблер с  терминала

  в интерактивном режиме, то файл листинга  не  создается  по

  умолчанию,  поэтому  необходимо  использовать  квалификатор

  /LIST для спецификации файла листинга.  В  пакетном  режиме

  программа макроассемблер по умолчанию создает файл листинга

  с тем же именем файла, что и у первого входного файла. Что-

  бы специфицировать имя файла  листинга  можно  использовать

  квалификатор /LIST.

       Примеры:

  1. $MACRO PART1+PART2+PART3

       Программа  макроассемблер  соединяет  исходные   файлы

  PART1.MAR, PART2.MAR и PART3.MAR и транслирует  их  в  один

  об'ектный модуль с именем PART1.OBJ. Файл листинга не  соз-

  дается.

  2. $ MACRO/LIST APROG,BPROG,CPROG

       Программа макроассемблер транслирует три исходных фай-

  ла APROG.MAR, BPROG.MAR и CPROG.MAR в  об'ектные  модули  и

  создает три файла листинга.




                           - 12 -

                        00152-01 33 01


  3. $ MACRO MYPROG/LIST+MLIB/LIBRARY

       Программа макроассемблер использует библиотеку  макро-

  команд MLIB.MLB для трансляции исходного файла MYPROG.MAR и

  создает выходной об'ектный модуль и файл листинга с  именем

  файла MYPROG.



       3.2. Спецификации файлов


       Спецификация файла  указывает  входной  файл,  который

  должен быть обработан, или  выходной  файл,  который  будет

  получен.

       Формат

       устройство: [каталог] имя файла.расширение; версия

  где устройство

       - логическое или физическое устойство, на котором файл

         хранится или на которое должен  быть  записан.  Если

         имя устройства является физическим устройством,  его

         имя имеет следующий вид:

                  DDCU

  где DD - код устройства;

       С - контроллер;

       U - номер устройства;

  [каталог]

       - имя каталога файла. Квадратные скобки ([]) необходи-

         мы;

  имя файла

       - имя файла, которое может иметь длину до девяти  сим-

         волов;



                           - 13 -

                        00152-01 33 01


  расширение

       - расширение, описывающее  тип  данных  в  файле,  тип

         может быть длиной до трех символов;

  версия

       - номер версии файла. Версии  обозначаются  десятичным

         числом, которое увеличивается каждый раз, когда соз-

         дается новая версия файла.

       Нет необходимости указывать все элементы  спецификации

  файла каждый раз, когда транслируется программа. Единствен-

  ной частью спецификации файла,  которая  требуется  всегда,

  является имя файла. Если опускается любая другая часть спе-

  цификации файла, используется устанавливаемое по  умолчанию

  значение. В табл. 1 приводится сводка значений спецификаций

  файлов, присваиваемых по умолчанию.

                                                    Таблица 1

        Спецификации файлов, используемые по умолчанию

  -----------------------------------------------------------

   Элемент        !            Значение по умолчанию

   спецификации   !

  -----------------------------------------------------------

   Устройство     ! Подразумеваемые в данный момент по

                  ! умолчанию тип устройства, контроллер и

                  ! номер устройства пользователя

   Каталог        ! Текущий подразумеваемый каталог пользова-

                  ! теля

   Тип            ! Зависит от использования:

                  ! MAR - исходный файл;




                           - 14 -

                        00152-01 33 01


                                          Продолжение табл. 1

  -----------------------------------------------------------

   Элемент        !            Значение по умолчанию

   спецификации   !

  -----------------------------------------------------------

                  ! MLB - файл библиотеки макрокоманд;

                  ! OBJ - об'ектный модуль;

                  ! LIS - файл листинга;

                  ! UPD - файл модификаций;

   Версия         ! Ввод:  наибольшая существующая версия

                  ! вывод: наибольшая существующая версия

                  !        плюс 1


       Можно специфицировать логическое имя, а не полную спе-

  цификацию файла.



       3.3. Квалификаторы


       Квалификаторы определяют, какие действия должна выпол-

  нить программа макроассемблер. Квалификаторы могут  исполь-

  зоваться либо как квалификаторы команды, либо как  квалифи-

  каторы файлов. Квалификатор команды действует на все файлы,

  специфицированные  в  команде  MACRO.  Квалификатор   файла

  действует только на файл, который он определяет.

       Квалификатор может иметь один из форматов:

        /квалификатор

        /квалификатор=функция

        /квалификатор=(функция 1,функция 2,...,функция 3)




                           - 15 -

                        00152-01 33 01


       В табл. 2  приводится  список  квалификаторов  команды

  MACRO, их возможные функции  и  их  функции  по  умолчанию.

  Некоторые функции квалификаторов  имеют  полную  и  краткую

  форму. Можно использовать любую форму с одинаковыми резуль-

  татами. Квадратные скобки вокруг знака равенства в табл.  2

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

  без функций.

                                                    Таблица 2

                  Квалификаторы команды MACRO

  -----------------------------------------------------------

               !       Функции      ! Негативная!  Значение

               !--------------------!           !  по умол-

  Квалификатор !       Форма        ! форма     !  чанию

               !--------------------!           !

               !  Полная   ! Краткая!

  -----------------------------------------------------------

  /CROSS_      !ALL        !   -    ! /NOCROSS_ ! /NOCROSS_

   REFERENCE[=]!           !        !  REFERENCE!  REFERENCE

               !DIRECTIVES !   DIR  !           !

               !MACROS     !   MAC  !           !

               !OPCODES    !   OPC  !           !

               !REGISTERS  !   REG  !           !

               !SYMBOLS    !   SYм  !           !

  /DEBUG[=]    !ALL        !   A    ! /NODEBUG  ! /NODEBUG

               !NONE       !   N    !           !

               !SYMBOLS    !   S    !           !

               !TRACEBACK  !   T    !           !




                           - 16 -

                        00152-01 33 01


                                          Продолжение табл. 2

  -----------------------------------------------------------

               !       Функции      ! Негативная!  Значение

               !--------------------!           !  по умол-

  Квалификатор !       Форма        ! форма     !  чанию

               !--------------------!           !

               !  Полная   ! Краткая!

  -----------------------------------------------------------

  /DISABLE=    !ABSOLUTE   !   AMA  ! /ENABLE=  ! /DISABLE=

               !DEBUG      !   DBG  !           ! (AMA,DBG,

               !LOCAL_BLOCK!   LSB  !           ! LSB,SUP,

               !GLOBAL     !   GBL  !           ! FPT)

               !SUPPRESSIоN!   SUP  !           !

               !TRACEBACK  !   TBK  !           !

               !TRUNCATION !   FPT  !           !

  /ENABLE=     !ABSOLUTE   !   AMA  ! /DISABLE= ! /ENABLE=

               !LOCAL_BLOCK!   LSB  !           ! (GBL,TBK)

               !DEBUG      !   DBG  !           !

               !GLOBAL     !   GBL  !           !

               !SUPPRESSION!   SUP  !           !

               !TRACEBACK  !   TBK  !           !

               !TRUNCATION !   FPT  !           !

  /LIBRARY     !    -      !    -   !     -     ! Не библио-

               !           !        !           ! тека

  /LIST[=]     !Специфика- !    -   ! /NOLIST   ! /NOLIST

               !ция        !        !           !

               !файла      !        !           !




                           - 17 -

                        00152-01 33 01


                                          Продолжение табл. 2

  -----------------------------------------------------------

               !       Функции      ! Негативная!  Значение

               !--------------------!           !  по умол-

  Квалификатор !       Форма        ! форма     !  чанию

               !--------------------!           !

               !  Полная   ! Краткая!

  -----------------------------------------------------------

  /OBJECT[=]   !Специфика- !    -   ! /NOOBJECK ! /OBJECT

               !ция файла  !        !           !

  /SHOW[=]     !BINARY     !  MEB   ! /NOSHOW[=]! /SHOW=

               !CALLS      !  MC    !           ! (MC,CND,

               !CONDITIO-  !  CND   !           ! MD)

               !NALS       !        !           !

               !DEFINITIONS!  MD    !           !

               !EXPANSIONS !  ME    !           !

  /UPDATE      !    -      !   -    !           ! Без моди-

               !           !        !           ! фикаций



       3.3.1. Квалификаторы    /CROSS_REFERENCE     и

              /NOCROSS_REFERENCE


       Квалификаторы  /CROSS_REFERENCE  и  /NOCROSS_REFERENCE

  управляют тем, что листинг перекрестных  ссылок  включается

  или не включается в  файл  листинга.  Если  специфицируется

  квалификатор /CROSS_REFERENCE, файл листинга включает  лис-

  тинг перекрестных ссылок. Если вводить команду MACRO с ква-

  лификатором /CROSS_REFERENCE интерактивно, необходимо  спе-



                           - 18 -

                        00152-01 33 01


  цифицировать     квалификатор      /LIST.      Квалификатор

  /NOCROSS_REFERENCE используется по умолчанию; не нужно спе-

  цифицировать используемое по умолчанию значение, чтобы иск-

  лючить листинг перекрестных ссылок.

       Формат

        /CROSS_REFERENCE[=функции]

        /NOCROSS_REFERENCE

  где функции

       - любая из функций, приведенных в табл. 3. Можно  спе-

         цифицировать полную или краткую форму функции.  Если

         указывается несколько функций, то необходимо  разде-

         лять их запятыми и заключать их в скобки. Если  ука-

         зывается    квалификатор    /CROSS_REFERENCE     без

         каких-либо   функций,   это   эквивалентно   заданию

         /CROSS_REFERENCE=(MAC,SYM).

                                                    Таблица 3

            Функции квалификатора /CROSS=REFERENCE

  -----------------------------------------------------------

          Форма         !

  ----------------------!           Назначение

   Полная    ! Краткая  !

  -----------------------------------------------------------

   ALL       !    -     ! Включает  директивы,  макрокоманды,

             !          ! коды операций, регистры и символы в

             !          ! листинг перекрестных ссылок

  DIRECTIVES !  DIR     ! Включает    директивы   в   листинг

             !          ! перекрестных ссылок




                           - 19 -

                        00152-01 33 01


                                          Продолжение табл. 3

  -----------------------------------------------------------

          Форма         !

  ----------------------!           Назначение

   Полная    ! Краткая  !

  -----------------------------------------------------------

   MACROS    !  MAC     ! Включает   макрокоманды  в  листинг

             !          ! перекрестных ссылок

   OPCODES   !  OPC     ! Включает  коды  операций  в листинг

             !          ! перекрестных ссылок

   REGISTERS ! REG      ! Включает  в  листинг   перекрестных

             !          ! ссылок ссылки на регистры

   SYMBOLS   !  SYM     ! Включает определяемые пользователем

             !          ! символы   в   листинг  перекрестных

             !          ! ссылок



       3.3.2. Квалификаторы /DEBUG и /NODEBUG


       Квалификаторы /DEBUG и /NODEBUG  управляют  включением

  локальных символов в таблицу символов, а  также  включением

  информации для трассировки в об'ектный модуль. Квалификато-

  ры могут использоваться на месте квалификаторов  /ENABLE  и

  /DISABLE, когда используются функции DEBUG  или  TRACEBACK.

  Использование квалификаторов /DEBUG  или  /NODEBUG  изменит

  (отменит) характеристики отладки, устанавливаемые  директи-

  вами языка макроассемблер .ENABLE и .DISABLE.

       Формат





                           - 20 -

                        00152-01 33 01


        /DEBUG[=функция]

        /NODEBUG

  где функция

       - это любая из функций, указанных в табл. 4. Если спе-

         цифицируется  квалификатор  /DEBUG  без   какой-либо

         функции, это эквивалентно заданию /DEBUG=ALL.

                                                   Таблица 4

                 Функции квалификатора /DEBUG

  ----------------------------------------------------------

          Форма       !            Назначение

  --------------------!

   Полная   ! Краткая !

  ----------------------------------------------------------

   ALL      !  A      ! Все локальные  символы  включаются в

            !         ! таблицу   символов и вся  информация

            !         ! трассировки для отладчика включается

            !         ! в об'ектный модуль. Специфицирование

            !         ! этого    квалификатора  эквивалентно

            !         ! специфицированию       квалификатора

            !         ! /ENABLE=(DEBUG, TRACEBACK)

   NONE     !  N      ! Никакие  локальные символы и никакая

            !         ! информация  трассировки  не доступны

            !         ! отладчику в об'ектном модуле. Специ-

            !         ! фицирование  этого квалификатора эк-

            !         ! вивалентно специфицированию квалифи-

            !         ! катора /DISABLE=(DEBUG, TRACEBACK)

   SYMBOLS  !  S      ! Все локальные символы становятся до-




                           - 21 -

                        00152-01 33 01


                                         Продолжение табл. 4

  ----------------------------------------------------------

          Форма       !            Назначение

  --------------------!

   Полная   ! Краткая !

  ----------------------------------------------------------

            !         ! ступными отладчику в об'ектном моду-

            !         ! ле. Никакая  информация  трассировки

            !         ! отладчику не доступна.  Специфициро-

            !         ! вание этого квалификатора эквивален-

            !         ! тно специфицированию  квалификаторов

            !         ! /ENABLE=DEBUG/DISABLE=TRACEBACK

   TRACEBACK!  T      ! Информация  трассировки  становится 

            !         ! доступной отладчику в об'ектном мо-

            !         ! дуле.  Локальные символы становятся  

            !         ! недоступными  для отладчика. Специ-

            !         ! фицирование этого квалификатора эк-

            !         ! вивалентно  специфицированию квали-

            !         ! фикаторов /ENABLE=TRACEBACK/DISABLE

	    !	      ! =DEBUG



       3.3.3. Квалификаторы /ENABLE и /DISABLE


       Квалификаторы /ENABLE и /DISABLE  оказывают  такое  же

  воздействие как директивы языка  макроассемблер  .ENABLE  и

  .DISABLE соответственно. Квалификаторы /ENABLE  и  /DISABLE

  отменяют любые директивы .ENABLE или  .DISABLE  в  исходной




                           - 22 -

                        00152-01 33 01


  программе. Более подробная информация о директивах  .ENABLE

  и .DISABLE содержится в [1].

       Формат

          /ENABLE=функция(и)

          /DISABLE=функция(и)

  где функция(и)

       - одна из функций, приводимых в табл. 5. Можно  специ-

         фицировать полную или краткую  форму  функции.  Если

         задается несколько функций, нужно разделять их запя-

         тыми и заключать в скобки.

                                                   Таблица 5

           Функции квалификаторов /ENABLE и /DISABLE

  ----------------------------------------------------------

          Форма       ! По     !

  --------------------! умолча-!       Назначение

   Полная    ! Краткая! нию    !

  ----------------------------------------------------------

   ABSOLUTE  !  AMA   !/DISABLE! Когда разрешена функция AB-

             !        !        ! SOLUTE, все режимы относи-

             !        !        ! тельной  адресации  с  по-

             !        !        ! мощью PC транслируются как

             !        !        ! режимы абсолютной адресации

   DEBUG     !  DBG   !/DISABLE! Когда функция DEBUG  разре-

             !        !        ! шена, все локальные символы

             !        !        ! включаютCя  в    символьную

             !        !        ! таблицу  в об'ектном модуле

             !        !        ! для использования  отладчи-




                           - 23 -

                        00152-01 33 01


                                         Продолжение табл. 5

  ----------------------------------------------------------

          Форма       ! По     !

  --------------------! умолча-!       Назначение

   Полная    ! Краткая! нию    !

  ----------------------------------------------------------

             !        !        ! ком

   GLOBAL    !  GBL   !/ENABLE ! Когда функция GLOBAL разре-

             !        !        ! шена,   все  неопределенные

             !        !        ! символы  считаются внешними

             !        !        ! символами; когда GLOBAL за-

             !        !        ! прещена, любой неопределен-

             !        !        ! ный символ, не  перечислен-

             !        !        ! ный в директиве  .EXTERNAL,

             !        !        ! вызывает ошибку  трансляции

  SUPPRESSION!  SUP   !/DISABLE! Когда   функция SUPPRESSION

             !        !        ! разрешена, все символы, ко-

             !        !        ! торые определены, но на ко-

             !        !        ! торые нет ссылок, не  вклю-

             !        !        ! чаются  в таблицу символов;

             !        !        ! когда SUPPRESSION  запреще-

             !        !        ! на все символы, которые оп-

             !        !        ! ределяются, включаются в

             !        !        ! таблицу символов

   TRACEBACK !  TBK   ! /ENABLE! Когда   функция   TRACEBACK

             !        !        ! разрешена,  то   включаются

             !        !        ! имена и размеры программных




                           - 24 -

                        00152-01 33 01


                                         Продолжение табл. 5

  ----------------------------------------------------------

          Форма       ! По     !

  --------------------! умолча-!       Назначение

   Полная    ! Краткая! нию    !

  ----------------------------------------------------------

             !        !        ! секций,  имена   модулей  и

             !        !        ! имена подпрограмм в об'ект-

             !        !        ! ный модуль для  использова-

             !        !        ! ния   отладчиком;     когда

             !        !        ! TRACEBACK  запрещена, прог-

             !        !        ! рамма макроассемблер исклю-

             !        !        ! чает эту информацию и дела-

             !        !        ! ет  недоступной   отладчику

             !        !        ! информацию о локальных сим-

             !        !        ! волах

   TRUNCATION!  FPT   !/DISABLE! Когда  функция   TRUNCATION

             !        !        ! разрешена,числа с плавающей

             !        !        ! запятой  усекаются;   когда

             !        !        ! TRUNCATION запрещена, числа

             !        !        ! с плавающей запятой  округ-

             !        !        ! ляются



       3.3.4. Квалификатор /LIBRARY


       Квалификатор /LIBRARY указывает,  что  соответствующий

  входной файл содержит библиотеку макрокоманд.  Квалификатор

  /LIBRARY воздействует только на входной  файл,  который  он




                           - 25 -

                        00152-01 33 01


  описывает.


       3.3.5. Квалификаторы /LIST и /NOLIST


       Квалификаторы  /LIST  и  /NOLIST  управляют  созданием

  выходного файла листинга. Если специфицируется квалификатор

  /NOLIST, файл листинга не создается.  Если  специфицируется

  квалификатор /LIST, файл листинга  создается.  Квалификатор

  /LIST определяет  спецификацию  выходного  файла  листинга.

  Если вводится команда MACRO в интерактивном  режиме,  прог-

  рамма макроассемблер по умолчанию не создает файл листинга.

  Однако, если команда MACRO выполняется в  пакетном  режиме,

  программа макроассемблер создает файл листинга  по  умолча-

  нию.

       Формат

        /LIST[=спецификация файла]

        /NOLIST

  где спецификация файла

       - спецификация файла, который используется как  выход-

         ной файл листинга. Если  задать  квалификатор  /LIST

         без спецификации файла, то используемое по умолчанию

         имя файла зависит от того, используется ли  квалифи-

         катор /LIST как квалификатор команды, или как квали-

         фикатор файла. Если /LIST используется как  квалифи-

         катор команды, именем файла  по  умолчанию  является

         имя первого входного  исходного  файла.  Если  /LIST

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

         умолчанию  является  имя  файла,  который  описывает

         /LIST.



                           - 26 -

                        00152-01 33 01


       3.3.6. Квалификаторы /OBJECT и /NOOBJECT


       Квалификаторы /OBJECT и /NOOBJECT управляют  созданием

  об'ектного модуля. Квалификатор /OBJECT является подразуме-

  ваемым по умолчанию, нет необходимости его специфицировать,

  чтобы создавался  об'ектный  модуль.  Если  специфицируется

  квалификатор /NOOBJECT, об'ектный модуль не создается.

       Если не специфицируется ни  квалификатор  /OBJECT,  ни

  /NOOBJECT,  программа  макроассемблер   создает   об'ектный

  модуль с тем же именем файла, что и у первого входного фай-

  ла.

       Формат

        /OBJECT[=спецификация файла]

        /NOOBJECT

  где спецификация файла

       - спецификация файла, используемого в качестве об'ект-

         ного выходного файла. Eсли специфицируется  квалифи-

         катор /OBJECT без спецификации файла, то  используе-

         мое по умолчанию имя файла зависит от того,  исполь-

         зуется ли /OBJECT как квалификатор команды  или  как

         квалификатор файла. Если  /OBJECT  используется  как

         квалификатор команды, то используемым  по  умолчанию

         именем файла будет имя первого входного файла.  Если

         /OBJECT используется как квалификатор файла, то име-

         нем файла по умолчанию является имя  файла,  который

         квалифицирует  /OBJECT.  Типом  файла  по  умолчанию

         является "OBJ".





                           - 27 -

                        00152-01 33 01


       3.3.7. Квалификаторы /SHOW и /NOSHOW


       Квалификаторы /SHOW и /NOSHOW оказывают то  же  дейст-

  вие, что и директивы языка макроассемблер .SHOW  и  .NOSHOW

  соответственно. Они управляют тем, какие строки  появляются

  в листинге. Если вводится команда  MACRO  с  квалификатором

  /SHOW или /NOSHOW в  интерактивном  режиме,  то  необходимо

  специфицировать квалификатор /LIST. Квалификаторы  /SHOW  и

  /NOSHOW имеют различные действия  в  зависимости  от  того,

  специфицируются они с функциями или нет.

       Если специфицируется квалификатор /SHOW или /NOSHOW  с

  функциями, то  квалификатор  управляет  листингом  исходных

  строк, находящихся в блоках условной  трансляции,  макроко-

  мандах или блоках повторения. Квалификаторы /SHOW и /NOSHOW

  отменяют действие директив .SHOW или .NOSHOW, находящихся в

  исходной программе.

       Специфицирование одного из  квалификаторов  /SHOW  или

  /NOSHOW без каких-либо функций эквивалентно заданию  исход-

  ного файла с дополнительной директивой  .SHOW  или  .NOSHOW

  соответственно. Счетчик листинга увеличивается на 1  квали-

  фикатором /SHOW и уменьшается на 1 квалификатором  /NOSHOW.

  Счетчик листинга управляет  тем,  все  ли  исходные  строки

  включаются в листинг. Если счетчик листинга положителен, то

  в листинг включаются все исходные строки (включая строки  в

  блоках условной трансляции, макрокомандах и блоках повторе-

  ний). Если счетчик листинга отрицателен, то никакие  строки

  не помещаются в листинг. Если счетчик листинга  0,  то  все

  строки за исключением строк в блоках  условной  трансляции,



                           - 28 -

                        00152-01 33 01


  макрокоманд и блоков повторений помещаются в  листинг.  Эти

  строки помещаются в листинг в зависимости от значений, спе-

  цифицированных в директивах .SHOW и .NOSHOW.

       Формат

        /SHOW[=функция(и)]

        /NOSHOW[=функция(и)]

  где функция(и)

       - любые из  функций  квалификаторов,  перечисленных  в

         табл. 6. Может  использоваться  как  полная,  так  и

         краткая форма функции. Если специфицируется несколь-

         ко функций, они должны разделяться запятыми и заклю-

         чаться в скобки.

                                                    Таблица 6

            Функции квалификаторов /SHOW и /NOSHOW

  -----------------------------------------------------------

        Форма       ! По      !

  ------------------!         !    Назначение функции

   Полная  ! Краткая!умолчанию!

  -----------------------------------------------------------

  BINARY   !  MEB   ! /NOSHOW ! Помещает   расширения  макро-

           !        !         ! команд и  блоков   повторений

           !        !         ! генерирующие  двоичный   код;

           !        !         ! BINARY является частным  слу-

           !        !         ! чаем  функции  EXPANSIONS

  CALLS    !  MC    ! /SHOW   ! Помещает макровызовы  и  спе-

           !        !         ! цификаторы блоков  повторений

  CONDITIO-!  CND   ! /SHOW   ! помещает связанный  с  дирек-




                           - 29 -

                        00152-01 33 01


                                          Продолжение табл. 6

  -----------------------------------------------------------

        Форма       ! По      !

  ------------------!         !    Назначение функции

   Полная  ! Краткая!умолчанию!

  -----------------------------------------------------------

  NALS     !        !         ! тивами  условной   трансляции

           !        !         ! условный код с  невыполненным

           !        !         ! условием

  DEFINITI-!  MD    ! /SHOW   ! Помещает расширения  макроко-

   ONS     !        !         ! манд и блоков  повторений  во

           !        !         ! входном исходном файле

   EXPAN-  !  ME    ! /NOSHOW ! Помещает расширения  макроко-

   SIONS   !        !         ! манд  и   блоков   повторений



       3.3.8. Квалификатор /UPDATE


       Квалификатор /UPDATE разрешает программе  макроассемб-

  лер применить модификации к исходному файлу,  для  которого

  был  специфицирован  квалификатор   /UPDATE.   Квалификатор

  /UPDATE используется только в качестве квалификатора файла.

       Формат

          /UPDATE=(спецификация файла(ов))

  где спецификация файлов

       - спецификация  файла  или  файлов,   которые   должны

         использоваться для редактирования файла,  описанного

         квалификатором /UPDATE. По умолчанию расширение фай-

         лов редактирования "UPD". Скобки не нужно  использо-



                           - 30 -

                        00152-01 33 01


         вать, если задана только одна спецификация файла.

       Когда специфицированы квалификаторы /UPDATE  и  /LIST,

  выходной файл листинга содержит отредактированный об'ектный

  модуль и конечный список модификаций, показывающий местопо-

  ложение каждого  удаления,  добавления  или  изменения  (п.

  4.2.3).

       Когда квалификатором /UPDATE специфицируется несколько

  файлов редактирования, то программа макроассемблер  об'еди-

  няет их содержимое в единый список модификаций, прежде  чем

  использовать их для изменения исходного файла.

       Квалификатор /UPDATE нельзя использовать с  квалифика-

  тором /LIBRARY, поскольку библиотека макрокоманд не являет-

  ся одним исходным файлом.
































                           - 31 -

                        00152-01 33 01


                 4. ВХОДНЫЕ И ВЫХОДНЫЕ ДАННЫЕ





       4.1. Входные данные


       Входными данными для программы  макроассемблер  служит

  программа пользователя, написанная на языке макроассемблер.

  Чтобы программа пользователя успешно транслировалась,  ком-

  поновалась и выполнялась,  она  должна  конструироваться  в

  соответствии с определенными правилами. Различные необходи-

  мые элементы должны быть в соответствующем соотношении друг

  с другом. Данный раздел кратко описывает  необходимые  эле-

  менты программ на языке макроассемблер.

       Все используемые в данном разделе директивы языка мак-

  роассемблер подробно описаны в [1].

       Комментарии, включенные в примеры операторов в  данном

  разделе, не являются необходимыми частями операторов.  Све-

  дения о комментариях и других частях операторов языка  мак-

  роассемблер содержатся в [1].



       4.1.1. Необходимые     элементы      программы

              пользователя


       Программа пользователя, разработанная  на  языке  мак-

  роассемблер, должна включать следующие три элемента:

       1) входное предложение, определяющее адрес точки входа

  в программу;

       2)  конечное  предложение,  соответствующее   входному




                           - 32 -

                        00152-01 33 01


  предложению;

       3) операцию установки содержимого регистра 0.



       4.1.1.1. Входное предложение


       Для успешного выполнения программа на  языке  макроас-

  семблер должна содержать в себе входное предложение, указы-

  вающее адрес передачи управления программы. Она также может

  включать и другие входные предложения. Программа может пра-

  вильно транслироваться без  входного  предложения,  но  при

  попытке ее выполнения регистрируется ошибка.

       Входное предложение программы на языке  макроассемблер

  имеет три элемента:

       1) директиву;

       2) символическое имя;

       3) маску.

       Пример.

          .ENTRY  PROGRAM,^M<R4,R5>

       Директива .ENTRY указавает  программе  макроассемблер,

  на точку входа программы.  PROGRAM  является  символическим

  именем для этой точки  входа.  Символическое  имя  является

  глобальным перемещаемым символом, равным значению  счетчика

  ячеек для входного предложения. Это имя должно быть  повто-

  рено в конечном предложении (подпункте 4.1.1.2), если прог-

  рамма является основной программой. Его можно  использовать

  с директивами .MASK и .TRANSFER и в других  случаях,  когда

  пользователю нужно указать адрес точки входа программы.





                           - 33 -

                        00152-01 33 01


       4.1.1.2. Конечное предложение


       Конечное предложение имеет следующий формат:

       .END PROGRAM

       Директива .END указывает программе макроассемблер, что

  данное предложение определяет конец процедуры.  Символичес-

  кое имя PROGRAM идентично заданному во входном предложении.

  Если данная программа является подпрограммой,  ее  символи-

  ческое имя не надо включать в конечное предложение.



       4.1.1.3. Установка регистра 0


       Для правильного завершения выполнения образа необходи-

  мо включить перед концом программы операцию,  устанавливаю-

  щую содержимое регистра 0  (R0).  В  особых  случаях  может

  понадобиться поместить в R0 значение, указывающее  на  сос-

  тояние ошибки. В большинстве случаев, однако, следует поме-

  щать в R0 значение SS$_NORMAL для  обозначения  нормального

  завершения. Это можно сделать одним из двух способов:

       1) включая следующую последовательность команд до опе-

  ратора конца:

        MOVL    #SS$_NORMAL,R0

        RET

       2) вызывая системную функцию $EXIT до оператора конца,

  используя следующий вызов:

        $EXIT_S

       Следует  устанавливать  значение  R0,  даже  если   не

  использован R0 в программе. Не следует  полагаться  на  то,




                           - 34 -

                        00152-01 33 01


  что R0 содержит 1 при входе в процедуру.



       4.1.2. Необходимые    элементы    блоков     и

              макрокоманд


       Программа на языке макроассемблер как правило включает

  малые структурные единицы: блоки условной трансляции,  мак-

  рокоманды и блоки повторений. Для успешной  трансляции  эти

  единицы должны содержать определенные элементы.



       4.1.2.1. Необходимые  элементы  блоков  условной

                трансляции


       Блок  условной  трансляции  -  это  последовательность

  команд, которые транслируются, если выполняются  определен-

  ные условия.  Блок  условной  трансляции  выделяется  двумя

  директивами. Перед блоком условной трансляции должна стоять

  директива .IF, а в конце - директива .ENDC.

       Пример.

          .IF     DEFINED MINIM

                  .               ; транслировать эти

                  .               ; операторы, если

                  .               ; определен MINIM

          .ENDC

       DEFINED является одной из  проверок  условий,  которые

  можно задавать с директивой .IF. MINIM  является  символом,

  который может быть определен, либо не определен и в зависи-

  мости от этого блок транслируется, либо нет.




                           - 35 -

                        00152-01 33 01


       Имеется две разновидности блока  условной  трансляции,

  которые не требуют диретивы .ENDC. Они создаются директива-

  ми .IF_X и .IIF.



       4.1.2.2. Необходимые элементы макрокоманд


       Макрокоманда является последовательностью  операторов,

  транслирующихся всякий раз, когда  в  программе  вызывается

  имя макрокоманды. Чтобы макрокоманда  транслировалась  пра-

  вильно, ее нужно определить. Макроопределение должно  вклю-

  чать два предложения: предложение начала, содержащее дирек-

  тиву .MACRO, и последнее предложение, содержащее  директиву

  .ENDM.

       Пример.

          .MACRO  TEXT

                  .       ; транслировать эти операторы,

                  .       ; когда вызывается макрокоманда

                  .       ; TEXT

          .ENDM   TEXT

       TEXT является именем макрокоманды. Оно может быть  той

  же комбинацией символов, как и  определяемый  пользователем

  символ, но такое многократное использование имен  не  реко-

  мендуется. Для  вызова  этой  макрокоманды  из  последующих

  точек программы нужно воспользоваться именем TEXT:

          TEXT          ; вызов макрокоманды TEXT

       Нет необходимости включать имя макрокоманды в директи-

  ву .ENDM, но такое включение упрощает чтение программы.





                           - 36 -

                        00152-01 33 01


       4.1.2.3. Необходимые элементы блоков повторений


       Блок повторений является последовательностью  операто-

  ров языка макроассемблер, которые, как правило, имеют место

  только внутри макрокоманд. Эта последовательность  операто-

  ров включает текст, который будет повторен в соответствии с

  условиями, существующими при разборе блока повторений прог-

  раммой макроассемблер. Блоку повторений должно  предшество-

  вать предложение, содержащее директиву .REPEAT.  За  блоком

  повторений должно следовать предложение, содержащее  дирек-

  тиву .ENDR. Как эти элементы располагаются внутри  макроко-

  манды показано в примере.

       Пример.

          .MACRO  TEXT  NUMB,ABC

          .REPEAT NUMB

          .ASCII  /ABC/

          .ENDR

          .ENDM   TEXT

       Число повторений здесь представлено  параметром  NUMB.

  Когда вызывается макрокоманда TEXT, для  замены  аргументов

  NUMB и ABC подставляются выражения. Аргумент  ABC  является

  текстом, подлежащим повторению.



       4.1.2.4. Необходимые    элементы    блоков     с

                неопределенным числом повторений


       Директивы .IRP и .IRPC как и .REPEAT также используют-

  ся для задания повторений, они наиболее полезны внутри мак-




                           - 37 -

                        00152-01 33 01


  рокоманд. Для каждой директивы  .IRP  или  .IRPC  оператора

  должна быть директива .ENDR. Сведения  об  этих  директивах

  содержатся в [1].



       4.1.3. Элементы с ограниченным контекстом


       Некоторые элементы программ  на  языке  макроассемблер

  могут использоваться  только  в  ограниченном  контексте  и

  вызывают ошибки при другом использовании.

       Кроме того, многие директивы языка макроассемблер тре-

  буют определенных типов аргументов  и  не  будут  правильно

  транслироваться, если аргумент специфицирован  неправильно.

  Спецификация  параметров  директив  содержится  в  описании

  директив в [1].



       4.1.3.1. Элементы,   используемые    только    в

                макрокомандах


       Имеется три операции работы со строками, которые могут

  использоваться только внутри макрокоманд. Строковые  опера-

  ции макрокоманд  являются  единственными  операциями  языка

  макроассемблер, начинающимися со знака процента(%):

          %EXTRACT

          %LENGTH

          %LOCATE

       Директиву .MEXIT, используемую для окончания макрорас-

  ширения при определенных условиях, можно использовать толь-

  ко внутри макрокоманд и блоков повторений.




                           - 38 -

                        00152-01 33 01


       Директиву .NARG, которая определяет  количество  аргу-

  ментов  текущего  макровызова,  можно  использовать  только

  внутри макрокоманды.



       4.1.3.2. Ограничения для программных секций


       Директивы, используемые  для  управления  программными

  секциями накладывают определенные требования, которые долж-

  ны соблюдаться для успешной трансляции, компоновки и выпол-

  нения:

       - каждому    предложению,    содержащему     директиву

  .RESтORE_PSECT должно соответствовать предложение, содержа-

  щее директиву SAVE_PSECT. Если до  использования  директивы

  RESTORE_PSECT контекст программной секции не был сохранен в

  стеке контекстов программных секций с использованием дирек-

  тивы .SAVE_PSECT, то при трасляции регистрируется ошибка;

       - если задается параметр программной секции ABS (абсо-

  лютная), то не включается в нее никаких предложений,  гене-

  рирующих двоичный код. Включение в  абсолютную  программную

  секцию таких директив как .WORD и .ASCII вызовет ошибки при

  компоновке программы. Однако, можно  включать  предложения,

  задающие структуры данных (используя, например,  .BLK)  или

  определяющие символы;

       - если программной секции присвоен параметр NOEXE  (не

  выполняемая), то  нельзя  включать  в  нее  адрес  передачи

  управления процедуры. Адрес передачи управления определяет-

  ся использованием директив .ENTRY и .END.





                           - 39 -

                        00152-01 33 01


       4.2. Выходные данные. Файл листинга


       Результатом работы программы  макроассемблер  является

  оттранслированная  программа  пользователя.  Файл  листинга

  содержит результат трансляции и может включать  в  себя  до

  семи частей:

       1) таблицу  содержания  (необязательную)  и  заголовки

  страниц;

       2) исходные операторы и шестнадцатеричный код;

       3) конечный список модификаций (необязательный);

       4) таблицу символов;

       5) краткое описание программных секций;

       6) таблицу перекрестных ссылок (необязательную);

       7) сводку трансляции.



       4.2.1. Таблица содержания и заголовки страниц


       Если исходная программа пользователя содержит директи-

  вы .SUBTITLE, программа макроассемблер распечатывает  перед

  листингом трансляции таблицу содержания. Таблица содержания

  перечисляет все заголовки, специфицированные  в  директивах

  .SUBTITLE. Подзаголовок распечатывается с номером  исходной

  страницы и номером строки директивы .SUBTITLE.

       Программа макроассемблер  печатает  в  файле  листинга

  новую страницу, когда он встречает в исходном тексте дирек-

  тиву .PAGE, когда он встречает в исходном файле новую стра-

  ницу или когда заполняется существующая страница  листинга.

  Вверху каждой страницы  листинга  программа  макроассемблер




                           - 40 -

                        00152-01 33 01


  печатает две  строки  заголовка.  Первая  строка  заголовка

  содержит следующую информацию:

       - заголовок  модуля,  специфицированный  в   директиве

         .TITLE ;

       - комментарий  после  заголовка  модуля  в   директиве

         .TITLе ;

       - дату;

       - время дня;

       - идентификацию версии языка макроассемблер;

       - номер страницы листинга.

       Во вторую строку заголовка входит  следующая  информа-

  ция:

       - идентифицирующая  информация,  специфицированная   в

         директиве .IDENT (часто используется для  специфика-

         ции номера версии);

       - подзаголовок  секции  модуля,  специфицированный   в

         директиве .SUBTITLE;

       - дата и время создания исходного файла;

       - спецификация исходного файла;

       - номер исходной страницы.



       4.2.2. Исходные операторы и  шестнадцатеричный

              код


       Исходные операторы и соответствующий  им  шестнадцате-

  ричный код составляют основную часть листинга. Она содержит

  исходные строки модуля и сгенерированный двоичный код. Каж-

  дая строка кода содержит следующую информацию:



                           - 41 -

                        00152-01 33 01


       - исходную строку, включая комментарии;

       - номер строки после редактирования, либо,  если  файл

         не имеет номеров строк, последовательный номер стро-

         ки. Если был  специфицирован  квалификатор  /UPDATE,

         номера в листинге будут с последовательными номерами

         (даже если первоначальный исходный файл имел  сгене-

         рированные  редактором  номера  строк).  Вставленные

         строки будут обозначены номерами строк,  содержащими

         десятичные точки;

       - счетчик ячеек;

       - шестнадцатеричный код.

       Шестнадцатеричный код  печатается  с  младшим  адресом

  слева. Распечатываемый код инструкции содержит справа нале-

  во:

       - код операции;

       - режим адресации и адрес для первого  операнда  (если

         операнд задан);

       - режим адресации и адрес для второго  операнда  (если

         операнд задан);

       - режим адресации и адрес для третьего операнда  (если

         операнд задан).

       Двоичный код хранимых  данных  распечатывается  справа

  налево. Число информационных элементов в строке зависит  от

  типов данных, как показано в табл. 7.










                           - 42 -

                        00152-01 33 01


                                                   Таблица 7

  ----------------------------------------------------------

         Тип данных             ! Число элементов в строке

  ----------------------------------------------------------

    Байт                        !       12

    Слово                       !        7

    Длинное слово               !        4

    Квадрослово                 !        1

    Октаслово                   !        0,5

    КОИ-8                       !        12 (символов)

    Упакованный десятичный      !

    Формат                      !        24 (цифры)

       Если выражение содержит символы, описанные вне данного

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

  в апострофах. Программа макроассемблер  вычисляет  значение

  выражения, при этом для внешних символов подставляется зна-

  чение 0. Апостроф указывает, что  окончательное  вычисление

  выражения выполняется компоновщиком.

       Программа макроассемблер печатает также в данной части

  листинга диагностические сообщения. Каждое сообщение  печа-

  тается сразу после строки, в которой была выявлена ошибка.



       4.2.3. Конечный список модификаций


       Необязательный конечный список модификаций формируемый

  в том случае, когда для файла  специфицирован  квалификаTOр

  /UPDATE, занимает колонки с 1 по 16 в основной  части  лис-

  тинга, параллельно с распечаткой  исходных  строк,  номеров



                           - 43 -

                        00152-01 33 01


  строк и шестнадцатеричного кода.  Строки  будут  помечаться

  как **NEW** (новая), если они были добавлены или  изменены,

  если только в файле модификаций  не  специфицирован  другой

  завершающий список изменений. Когда  строки  были  удалены,

  следующая после удаления строка будет содержать номер спис-

  ка изменений в ФОРМЕ -N, где N является количеством удален-

  ных строк.



       4.2.4. Таблица символов


       В таблице символов  распечатываются  все  символы,  за

  исключением постоянных. Символы располагаются в  алфавитном

  порядке в три колонки. Значение символа, если оно известно,

  распечатывается рядом с символом. Если символу присваивает-

  ся значение оператором прямого присваивания или  директивой

  (такой, как директива .NARG), то символ отделяется от  зна-

  чения знаком равенства.  Если  символ  определяется  внешне

  (значение неизвестно), то значение  печатается  как  строка

  звездочек. Использование символов для описания  специальных

  параметров дано в табл. 8.

                                                    Таблица 8

  -----------------------------------------------------------

     Символ  !            Значение

  -----------------------------------------------------------

          D  ! Символ является локальным символом, который

             ! будет доступным отладчику

          G  ! Символ определяется в модуле как глобальный




                           - 44 -

                        00152-01 33 01


                                          Продолжение табл. 8

  -----------------------------------------------------------

     Символ  !            Значение

  -----------------------------------------------------------

          R  ! Символ является перемещаемым

          W  ! Символ является слабым глобальным символом

             ! (специфицирован в директиве .WEAK)

          X  ! Символ определяется внешне

          U  ! Символ не определен (символ задан директивой

             ! .DISABLE GLOBAL, но не описан и не специфи-

             ! цирован в .EXTERNAL)

       Если символ определяется как внешний или  как  переме-

  щаемый, то печатается номер программной секции,  в  которой

  он появляется первый раз.



       4.2.5. Содержание программных секций


       Содержание  программных  секций  включает  программные

  секции, их размер, их параметры и  их  выравнивание.  Прог-

  раммные секции распечатываются в том порядке, в котором они

  определены в программе. Каждой  программной  секции  назна-

  чается номер, основанный на порядке, в котором она  опреде-

  лена в программе. Номер программой секции печатается  после

  размера программной секции.











                           - 45 -

                        00152-01 33 01


       4.2.6. Листинг перекрестных ссылок


       Программа  макроассемблер  распечатывает  перекрестные

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

  манд, директив, кодов операторов и регистров. Внутри каждой

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

  Для каждого элемента печатается следующая информация:

       - имя символа;

       - значение;

       - номер строки и номер страницы определения символа;

       - номер строки и номер страницы каждой ссылки на  сим-

  вол.

       Пользователь управляет тем, для  каких  групп  состав-

  ляется листинг перекрестных ссылок, специфицируя значения в

  квалификаторе /CROSS_REFERENCE. Можно исключать  определен-

  ные символы  из  листинга  перекрестных  ссылок,  используя

  директивы .CROSS и .NOCROSS.



       4.2.7. Сводка трансляции


       Сводка  трансляции  содержит   показатели   внутренних

  характеристик  программы  макроассемблер,   диагностическую

  сводку,  квалификаторы  и  спецификации  файлов  в  команде

  MACRO.

       Внутренние показатели характеристик программы макроас-

  семблер включают в себя страничные отказы, время процессора

  и затраченное время для  разных  этапов  трансляции.  Кроме

  того, показатели включают: предел рабочего набора  и  коли-




                           - 46 -

                        00152-01 33 01


  чество символов, исходных строк, об'ектных  записей,  об'ем

  памяти, требуемой для процесса.

       Если  программа  макроассемблер  обнаружила  в  модуле

  какие-то ошибки, она печатает в листинге ту  же  диагности-

  ческую сводку, которую она выводит на терминал. Если ошибок

  не было, то она печатает в сводке следующее сообщение:

  THERE WERE NO ERRORS OR WARNINS

       Последняя строка в файле листинга показывает  квалифи-

  каторы и спецификации файлов, введенные в команде MACRO.








































                           - 47 -

                        00152-01 33 01


                        5.  СОOБЩЕНИЯ



       Если программа макроассемблер обнаруживает  ошибку  во

  время трансляции, то она выводит сообщение об ошибке. Прог-

  рамма макроассемблер выводит  сообщение  на  терминал  (для

  интерактивных заданий) или в журнальный  файл  пакета  (для

  пакетных заданий) и в файл листинга.  В  приложении  описы-

  ваются диагностические сообщения программы макроассемблер.

       Программа макроассемблер выводит диагностические сооб-

  щения в следующем формате:

          %MACRO-У-КОД, текст

  где У

       - указатель уровня серьезности ошибки. Имеет  значение

         "Е" для ошибки или значение "W" для  предупреждения.

         Имеется два уровня серьезности: ошибка и  предупреж-

         дение. Об'ектные модули, созданные с  сообщением  об

         ошибке, не могут быть скомпонованы  в  файл  образа.

         Об'ектные модули, созданные с предупреждающим  сооб-

         щением, могут компоноваться в файл образа, хотя ком-

         поновщик выведет диагностическое сообщение;

  КОД

       - аббревиатура текста сообщения;

  текст

       - пояснение сообщения.

       Программа макроассемблер выводит  на  терминал  или  в

  журнальный файл пакета следующую информацию:

       - строку из листинга, которая предшествовала бы  сооб-




                           - 48 -

                        00152-01 33 01


         щению об ошибке  при  наличии  файла  листинга.  Эта

         строка часто является исходной  строкой,  содержащей

         ошибку,  но  иногда  это  лишь  двоичное  расширение

         исходной строки;

       - само сообщение об ошибке.

       Если программа  макроассемблер  обнаружила  какие-либо

  ошибки во время процесса трансляции,  то  после  трансляции

  она выводит сводку диагностики. Эту сводку  она  отображает

  на терминале или выводит в журнальный файл пакета и в  файл

  листинга. Сводка содержит общее число ошибок,  предупрежде-

  ний и информационных сообщений с номерами строк  и  страниц

  заключенных в скобки. В конце сводки ошибок программа  мак-

  роассемблер выводит список спецификаций  файлов  в  команде

  MACRO.






























                           - 49 -

                        00152-01 33 01


         6. ОПИСАНИЕ ТРАНСЛЯЦИИ ПРОГРАММ ПОЛЬЗОВАТЕЛЯ



       Для трансляции  программы  пользователя  достаточно  в

  командной строке вызова  программы  макроассемблер  указать

  имя программы (спецификацию файла) пользователя (раздел 2).

       Программы на языке макроассемблер должны писаться так,

  чтобы их было легко читать, легко исправлять и легко  об'е-

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

  бенности, которые помогут улучшить качество программы поль-

  зователя.



       6.1. Модули


       Язык макроассемблер позволяет  использовать  модульный

  подход к разработке программ. Можно создать  всю  программу

  из серии малых независимых подпрограмм или модулей.  Каждый

  модуль состоит из нескольких подпрограмм.  Каждая  подпрог-

  рамма является последовательностью операторов,  выполняющих

  одну процедуру.

       Модульное программирование облегчает создание,  отлад-

  ку, сопровождение и совершенствование программ. Использова-

  ние модульного принципа имеет следующие цели:

       - писать и проверять каждую подпрограмму независимо от

         других подпрограмм. Тестировать модуль, состоящий из

         этих подпрограмм, независимо от других модулей;

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

         несколько программистов;

       - изменение программы  требует  изменения  и  проверки



                           - 50 -

                        00152-01 33 01


         только модуля, в котором происходит изменение.

       Программа  макроассемблер  транслирует  каждый  модуль

  отдельно. Затем программа компоновщик соединяет  их  все  в

  законченную программу.



       6.2. Программные секции


       Можно разбить об'ектный модуль на ряд программных сек-

  ций.  Использование  программных  секций  позволяет   иметь

  дополнительную защиту от ошибок  и  управлять  порядком,  в

  котором программы хранятся в виртуальной памяти.  Программа

  макроассемблер записывает в об'ектный модуль  информацию  о

  программных секциях, и программа компоновщик использует эту

  информацию  при  создании  выполняемого  образа  программы.

  Заметим, что число программных секций  в  об'ектном  модуле

  должно быть ограниченным.  Большое  количество  программных

  секций заставляет программу  активирования  образов  делать

  дополнительную работу.

       Начало программной секции и  ее  атрибуты  описываются

  директивой .PSECT. В пределах каждого модуля программа мак-

  роассемблер сохраняет один счетчик адресов для каждой прог-

  раммной секции.

       Можно продолжить определенную ранее  программную  сек-

  цию, используя вторую директиву .PSECT, в которой  задается

  то же имя, что и в первой директиве .PSECT.

       Поскольку программа макроассемблер не знает, где нахо-

  дится каждая программная секция, все ссылки между  секциями

  соотносятся с базой секции. Компоновщик разрешает эти ссыл-



                           - 51 -

                        00152-01 33 01


  ки во время компоновки.

       Можно использовать программные секции  для  выполнения

  любого из следующих действий:

       - разделение об'ектного модуля на меньшие секции. Каж-

         дая программная секция должна содержать  законченную

         подпрограмму. Это может улучшить  модульность  прог-

         раммы, делая ее проще для отладки, модификации;

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

         же ячейкам данных. Если вы специфицируете то же  имя

         программной секции с параметром OVR в  разных  моду-

         лях, каждая программная секция будет разделять  одну

         и ту же виртуальную память;

       - отделение области, в которые вы собираетесь  записы-

         вать информацию от областей, в которые вы  не  соби-

         раетесь записывать информацию. Например, если  прог-

         рамма ошибочно записывает  в  область  с  параметром

         NOWRT (нет записи), произойдет нарушение  доступа  к

         памяти. Разделение таких  областей  в  программе  на

         программные секции делает  отладку  программы  более

         простой, поскольку программные секции действуют  как

         дополнительная защита от ошибок;

       - идентифицирование  секции  об'ектного   модуля   для

         отладчика. Отладчик использует имя программной  сек-

         ции для определения адреса и идентификации проверяе-

         мой секции программы. Следовательно, следует  всегда

         специфицировать имена для всех  программных  секций.

         Избегайте использования устанавливаемых по умолчанию




                           - 52 -

                        00152-01 33 01


         программных секций, которые программа макроассемблер

         создает, если не задана директива  .PSECT  или  если

         задана директива .PSECT без имени  программной  сек-

         ции;

       - образование  разделяемых  программных   секций   для

         использования в совместно используемых (разделяемых)

         образах,  привилегированных  и  непривилегированных.

         Одну копию разделяемого образа на диске и в физичес-

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

         много процессов. Несколько процессов могут  получать

         доступ к данным в разделяемом  образе.  Используемые

         многими процессами большие программы  для  повышения

         производительности системы  могут  делаться  в  виде

         разделяемых образов;

       - управление порядком, в  котором  программные  секции

         хранятся в виртуальной памяти;  это  может  улучшить

         производительность  программ,   превышающих   размер

         рабочего набора. Программные секции, к которым часто

         выполняются обращения, следует группировать  вместе,

         при этом повышается вероятность того, что они  будут

         находиться в рабочем наборе.

       Компоновщик разделяет все программные секции на группы

  с одинаковыми параметрами. Внутри  этих  групп  компоновщик

  располагает  программные  секции  по  именам  в  алфавитном

  порядке.

       Программные секции с одним именем и  параметром  овер-

  лейности располагаются  в  виртуальной  памяти,  начиная  с




                           - 53 -

                        00152-01 33 01


  одного адреса. Программные секции с одним именем и парамет-

  ром конкатенации (последовательно соединяются) в том поряд-

  ке, в котором они специфицируются для компоновщика.

       Параметры, задаваемые в директиве  .PSECT,  описывают,

  но не управляют содержанием программной секции;  необходимо

  обеспечить, чтобы программные секции обладали такими  пара-

  метрами. Например, нельзя включать выполняемые инструкции в

  программную секцию с параметром NOEXE (невыполняемая).



       6.3. Символы, определяемые пользователем


       Определяемыми пользователем символами являются  симво-

  лические имена, которые используются, чтобы:

       - идентифицировать местоположение подпрограммы;

       - идентифицировать местоположение данных;

       - представить значение.

       Символ,  идентифицирующий  ячейку  памяти,  называется

  меткой. Можно использовать метки для обращений  к  ячейкам,

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

       Можно также использовать символ для замены  константы,

  используемой в нескольких местах в программе. Это позволяет

  изменять значение, на которое  есть  ссылки  из  нескольких

  мест, простым переопределением символа в другое значение.

       Символ может быть внутренним в одном модуле, т.е. сим-

  вол имеет смысл только в модуле, в  котором  он  определен.

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

       Символ со ссылками на  него  в  модулях,  отличных  от

  модуля, в котором он  определяется,  называется  глобальным



                           - 54 -

                        00152-01 33 01


  символом. Глобальные символы являются ключевыми для модуль-

  ного программирования, т.к. они  обеспечивают  связь  между

  модулями. Используется двойное двоеточие (::) для определе-

  ния глобальных символов, используемых как метки, и  двойной

  знак равенства (==) для  определения  глобальных  символов,

  используемых для представления значения.

       Программа макроассемблер  заменяет  каждую  ссылку  на

  локальный символ  адресом  или  значением  символа.  Однако

  программа макроассемблер не знает адреса глобального симво-

  ла, определяемого в другом модуле. Она указывает  компонов-

  щику, что символ глобальный. Компоновщик  подменяет  каждую

  ссылку на глобальный символ адресом или значением символа.

       По мере обработки  модуля  программой  макроассемблер,

  строится таблица символов, содержащая  все  используемые  в

  модуле символы с адресом  или  значением  каждого  символа.

  Таблица символов распечатывается в файле  листинга.  Обычно

  программа макроассемблер не записывает в  об'ектный  модуль

  таблицу символов полностью; она записывает таблицу,  содер-

  жащую  только  глобальные  символы.  Программа  компоновщик

  использует таблицу глобальных символов для разрешения  ссы-

  лок на глобальные символы.

       Символический отладчик также использует таблицу симво-

  лов об'ектного модуля. Соответственно,  пользователю  может

  понадобиться включить в таблицу символов об'ектного  модуля

  локальные символы.  Для  включения  конкретного  локального

  символа, пользователь должен специфицировать его  использо-

  вание директивой .DEBUG. Для включения всех локальных  сим-




                           - 55 -

                        00152-01 33 01


  волов надо специфицировать квалификатор  /DEBUG  в  команде

  MACRO или директиву .ENABLE DEBUG в исходном файле.

       Локальные метки - это временные  метки,  состоящие  из

  числа со следующим за ним знаком "$", которые можно исполь-

  зовать для ссылок между символьными метками [1]. В  отличие

  от символов, локальные метки можно вновь использовать в том

  же об'ектном модуле.  Соответственно,  локальные  метки  не

  включаются в таблицу символов и  не  доступны  компоновщику

  или отладчику.



       6.4. Макрокоманды


       Макрокоманды являются очень полезным  средством  языка

  макроассемблер. Макрокоманда - это одна команда, включающая

  в себя несколько операторов. Присваивается имя каждой  мак-

  рокоманде,  когда  она  определяется.  Макрокомандой  можно

  определить  любую  последовательность  операторов,  которую

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

  вать эту последовательность,  вставив  имя  макрокоманды  в

  поле операции в строке оператора.

       Макрокоманда должна быть определена прежде, чем  можно

  на нее сослаться. Каждый раз, когда программа  макроассемб-

  лер встречает имя макрокоманды,  она  вставляет  последова-

  тельность операторов, содержащихся  в  макроопределении,  в

  исходный текст программы. Это называется расширением макро-

  команды.

       Можно определить  макрокоманды,  содержащие  директивы

  условной трансляции. Каждый раз при расширении макрокоманды



                           - 56 -

                        00152-01 33 01


  условия проверяются. Таким образом  можно  генерировать  из

  одной макрокоманды несколько различных.

       Кроме использования макрокоманд, определяемых  пользо-

  вателем, можно пользоваться макрокомандами, предоставляемы-

  ми операционной системой МОС ВП. Эти системные макрокоманды

  выполняют полезные задачи, такие как вызов системных  функ-

  ций. Можно использовать системные макрокоманды, чтобы вызы-

  вать системные функции, например, для выполнения действий с

  файлами и  записями,  управления  процессами  и  управления

  памятью.

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

  рокоманд. Системные макрокоманды, например, определяются  в

  системной библиотеке макрокоманд. Можно ссылаться на макро-

  команды из библиотек таким же образом, как и на макрокоман-

  ды в об'ектных модулях. Однако пользователь должен специфи-

  цировать имя библиотеки макрокоманд в команде MACRO с  ква-

  лификатором /LIBRARY, чтобы программа макроассемблер  нашла

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

  умолчанию библиотеки - системной библиотеки.




















                           - 57 -

                        00152-01 33 01





                          приложение







      Диагностические сообщения программы макроассемблер



       Если  программа  макроассемблер  во  время  трансляции

  встречает ошибку, то она выводит диагностическое  сообщение

  на терминал или в журнальный файл пакета и в файл  листинга

  (если таковой  существует).  Общий  формат  диагностических

  сообщений программы макроассемблер:

          %МАКРО-У-КОД, текст

  где У

       - указатель уровня серьезности ошибки. Указатель имеет

         значение "Е" для ошибки или значение "W" для предуп-

         реждения;

  КОД

       - аббревиатура текста сообщения; в настоящем  приложе-

         нии сообщения об ошибках располагаются в  алфавитном

         порядке по этим кодам;

  текст

       - пояснение к сообщению.

       Пример.

     %MACRO-E-ILLMASKWITS, RESERVED BITS SET IN ENTRY MASK

       Некоторые диагностические  сообщения  ввода  и  вывода

  сопровождаются сообщением об  ошибке  операционной  системы



                           - 58 -

                        00152-01 33 01


  МОС ВП.

       В  приложении  приводятся  диагностические  сообщения,

  выводимые программой макроассемблер. Каждое сообщение  соп-

  ровождается  об'яснением  причины  ошибки,   рекомендациями

  пользователю по устранению ошибки.



  ADRLSTSYNX, ADDRESS LIST SYNTAX ERROR

       Пояснение: список адресов в директиве .ADDRESS  содер-

  жит синтаксическую ошибку

       Действие пользователя: исправить синтаксис.

       Значение: ошибка



  ALIGNEXCEED, ALIGNMENT EXCEEDS PSECT ALIGNMENT

       Пояснение: директива .ALIGN специфицирует выравнивание

  большее, чем  выравнивание  программной  секции.  Например,

  директива  .PSECT  специфицировала  выравнивание  по  байту

  (используемое по умолчанию) и директива .ALIGN специфициро-

  вала выравнивание по длинному слову.  Это  сообщение  также

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

  ванием.

       Действие пользователя: исправить конфликтные  выравни-

  вания. Директива .PSECT должна  специфицировать  наибольшее

  требующееся в программной секции выравнивание.

       Значение: ошибка










                           - 59 -

                        00152-01 33 01


  ARGTOOLONG, ARGUMENT TOO LONG

       Пояснение: аргумент длиной более 1000 символов.

       Действие пользователя: уменьшить длину аргумента.

       Значение: ошибка



  ASCTOOLONG, ASCII STRING TOO LONG


       Пояснение: строка в директиве .ASCII длиной более  256

  символов, или строка в директиве .ASCID более 65535  симво-

  лов.

       Действие пользователя: уменьшить длину строки.

       Значение: ошибка



  ASGNMNTSYN, ASSIGNMENT SYNTAX ERROR


       Пояснение: оператор прямого присваивания содержит син-

  таксическую ошибку.

       Действие пользователя: исправить синтаксис.

       Значение: ошибка



  BADENTRY, BAD FORMAT FOR .ENTRY STATEMENT

       Пояснение: директива .ENTRY не специфицирует имя точки

  входа и входную маску.

       Действие пользователя: исправить  синтаксис  директивы

  .ENTRY.

       Значение: ошибка








                           - 60 -

                        00152-01 33 01


  BADLEXARG, ILLEGAL LEXICAL FUNCTION ARGUMENT


       Пояснение: недопустимый  аргумент  строковой  операции

  макрокоманды. Строковые аргументы  могут  быть  аргументами

  макрокоманд или строками,  разделяемыми  угловыми  скобками

  или парными разделителями, первому из которых  предшествует

  знак (^). Символические аргументы  могут  быть  абсолютными

  символами или десятичными целыми.

       Действие пользователя: исправить синтаксис аргумента.

       Значение: ошибка



  BADLEXFORM, ILLEGAL FORMAT FOR LEXICAL FUNCTION


       Пояснение: макрокоманда в строковой операции  содержит

  синтаксическую ошибку.

       Действие пользователя: исправить  синтаксис  строковой

  операции макрокоманды.

       Значение: ошибка



  BADLOGICPC, INTERNAL LOGIC ERROR DETECTED AT PC XXXXX


       Пояснение: внутренняя ошибка в программе  макроассемб-

  лер; XXXXX указывает значение PC в  то  время,  когда  была

  обнаружена  ошибка.  Программа  макроассемблер  не  создает

  об'ектного модуля или файла листинга.

       Действие пользователя: повторите транслирование.  Если

  ошибка повторяется,  известите  администратора  системы  об

  ошибке программного обеспечения.





                           - 61 -

                        00152-01 33 01


       Значение: ошибка



  BADVALUE, XXXXX IS AN INVALID KEYWORD VALUE


       Пояснение:  квалификатор  команды  имеет  недопустимое

  значение; XXXXX показывает специфицированное в команде зна-

  чение. Макроассемблер не создает об'ектного модуля или файл

  листинга.

       Действие пользователя: введите команду снова с исправ-

  ленным синтаксисом.

       Значение: ошибка



  BLKDIRSYNX, BLOCK DIRECTIVE SYNTAX ERROR


       Пояснение: директива  блока  условной  трансляции  или

  блока повторений содержит синтаксическую ошибку.

       Действие пользователя: исправить синтаксис директивы.

       Значение: ошибка



  BLKEXPNABS, BLOCK EXPRESSION NOT ABSOLUTE


       Пояснение: выражение, специфицирующее  об'ем  резерви-

  руемой памяти  в  директиве  .BLKA,  .BLKB,  .BLKD,  .BLKF,

  .BLKG, .BLKH, .BLKL, .BLKO, .BLKQ или .BLKW, содержит неоп-

  ределенный символ или является относительным выражением.

       Действие пользователя: заменить  выражение  абсолютным

  выражением, не содержащим никаких неопределенных символов.

       Значение: ошибка





                           - 62 -

                        00152-01 33 01




  BRDESTRANGE, BRANCH DESTINATION OUT OF RANGE


       Пояснение:  специфицированный  в  инструкции  перехода

  адрес находится слишком далеко  от  текущего  значения  PC.

  Инструкции перехода со смещением в виде байта имеют  диапа-

  зон от -128 байтов до +127 байтов от текущего значения  PC.

  Инструкции перехода со смещением в виде слова имеют  диапа-

  зон от -32768 байтов до +32767 байтов от текущего  значения

  PC.

       Действие пользователя: использовать инструкцию перехо-

  да со смещением в виде слова вместо инструкции со смещением

  в виде байта; использовать вместо инструкции перехода инст-

  рукцию безусловного перехода (JMP);  либо  изменить  логику

  программы так, чтобы адреса инструкций перехода  находились

  в указанном диапазоне.

       Значение: ошибка.



  CANTLOMAC, CAN'T LOCATE MACRO IN MACRO LIBRARIES


       Пояснение: специфицированное в  директиве  .MCALL  имя

  макрокоманды не было определено в библиотеках  макрокоманд,

  в которых производился поиск.

       Действие пользователя: указать в команде  MACRO  языка

  DCL библиотеку макрокоманд, определяющую макрокоманду.

       Значение: ошибка.








                           - 63 -

                        00152-01 33 01


  CLOSEIN, ERROR CLOSING FILE-SPEC AS INPUT


       Пояснение: ошибка ввода-вывода при закрытии программой

  макроассемблер входного файла или файла библиотеки макроко-

  манд; FAIL-SPEC является спецификацией закрываемого файла.

       Действие пользователя: повторить операцию или  сделать

  новую копию файла и повторить операцию с новой копией  фай-

  ла.

       Значение: ошибка



  CLOSEOUT, ERROR CLOSING FILE-SPEC AS OUTPUT


       Пояснение: ошибка ввода-вывода при закрытии программой

  макроассемблер выходного файла - об'ектного  или  листинга;

  FAIL-SPEC является спецификацией закрываемого файла.

       Действие пользователя: повторить операцию. Если ошибка

  повторяется, сообщить администратору системы.

       Значение: ошибка



  CONFQUAL, CONFLICTING QUALIFIERS


       Пояснение: программа макроассемблер встретила комбина-

  цию квалификаторов команды или квалификаторов файла,  кото-

  рую нельзя задействовать.

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

  соответствии с ограничениями на различные квалификаторы.

       Значение: ошибка







                           - 64 -

                        00152-01 33 01


  DATALSTSYN, DATA LIST SYNTAX ERROR


       Пояснение: список данных в директиве содержит  синтак-

  сическую ошибку. Например, директива  .LONG  3,,5  содержит

  синтаксическую ошибку в списке данных, поскольку  нет  эле-

  мента данных между двумя запятыми.

       Действие пользователя: исправить синтаксис списка дан-

  ных.

       Значение: ошибка



  DATATRUNC, DATA TRUNCATION ERROR


       Пояснение: специфицированное значение не поместилось в

  данном типе данных. Программа макроассемблер произвела усе-

  чение значения, чтобы оно поместилось в типе данных.

       Действие пользователя: уменьшить  значение  или  коли-

  чество символов в строке ASCII или изменить тип данных.

       Значение: предупреждение



  DIRSYNX, DIRECTIVE SYNTAX ERROR


       Пояснение: директива содержит синтаксическую ошибку.

       Действие пользователя: исправить синтаксис директивы.

       Значение: ошибка



  DIVBYZERO, DIVISION BY ZERO ERROR


       Пояснение: выражение содержит деление на нуль.

       Действие пользователя: исправить значения в выражении.




                           - 65 -

                        00152-01 33 01


       Значение: предупреждение



  EMSKNOTABS, ENTRY MASK NOT ABSOLUTE


       Пояснение: выражение для входной маски  не  абсолютное

  или содержит неопределенные символы.

       Действие пользователя: изменить значения в выражении.

       Значение: ошибка



  ENDWRNGMAC, STATEMENT ENDS WRONG MACRO


       Пояснение: директива .ENDM специфицирует имя, отличное

  от имени в соответствующей директиве .MACRO.

       Действие  пользователя:  исправить  имя  в   директиве

  .ENDM, чтобы обеспечить  требуемое  соответствие  директивы

  .ENDM и директивы .MACRO.

       Значение: ошибка



  EXPOVR32, EXPRESSION OVERFLOWED 32-BITS


       Пояснение: значение выражения  не  может  храниться  в

  длинном слове (32 битах). Программа макроассемблер  усекает

  значение до 32 битов.

       Действие пользователя: изменить значения в выражении.

       Значение: предупреждение











                           - 66 -

                        00152-01 33 01


  FLTPNTSYNX, FLOATING POINT SYNTAX ERROR


       Пояснение: константа с плавающей запятой содержит син-

  таксическую ошибку.

       Действие пользователя: исправить синтаксис константы.

       Значение: предупреждение



  GENERR, GENERATED ERROR: XXXXX MESSAGE


       Пояснение:  транслировалась  директива  .ERROR;  XXXXX

  является значением специфицированного в  директиве  выраже-

  ния;  MESSAGE  (сообщение)  является  специфицированным   в

  директиве текстом.

       Действие пользователя: следовать  инструкциям  сообще-

  ния.

       Значение: ошибка



  GENWRN, GENERATED WARNING: XXXXX MESSAGE


       Пояснение:  транслировалась  директива  .WARN;   XXXXX

  является значением специфицированного в  директиве  выраже-

  ния;  MESSAGE  (сообщение)  является  специфицированным   в

  директиве текстом.

       Действие пользователя: следовать инструкциям в сообще-

  нии.

       Значение: предупреждение









                           - 67 -

                        00152-01 33 01


  IFDIRSYNX, IF DIRECTIVE SYNTAX ERROR


       Пояснение: директива условной трансляции содержит син-

  таксическую ошибку.

       Действие пользователя: исправить синтаксис директивы.

       Значение: ошибка



  IFEXPRNABS, IF EXPRESSION NOT ABSOLUTE


       Пояснение: выражение в  директиве  .IF  не  абсолютное

  выражение или содержит неопределенные символы.

       Действие пользователя: изменить значения в выражении.

       Значение: ошибка



  IFLEVLXCED, IF NESTING LEVEL EXCEEDED


       Пояснение: программа макроассемблер встретила более 31

  вложенных уровня условной трансляции блоков.

       Действие пользователя:  изменить  структуру  программы

  для уменьшения уровня вложений блоков условной трансляции.

       Значение: ошибка



  ILLARGDESC, ILLEGAL OPERAND ARGUMENT DESCRIPTOR


       Пояснение: недопустимый описатель операции в директиве

  .OPDEF.

       Действие пользователя: используйте  допустимый  описа-

  тель операции.

       Значение: ошибка




                           - 68 -

                        00152-01 33 01




  ILLASCARG, ILLEGAL ASCII ARGUMENT


       Пояснение: аргумент директивы .ASCII не  имеет  заклю-

  чающих его ограничителей;  или  выражение  не  заключено  в

  угловые скобки.

       Действие пользователя: исправить синтаксис аргумента.

       Значение: ошибка



  ILLBRDEST, ILLEGAL BRANCH DESTINATION


       Пояснение: в инструкции перехода  не  правильно  задан

  адрес, например, BRB 10(R)9.

       Действие пользователя:  изменить  адрес  в  инструкции

  перехода или использовать инструкцию перехода  безусловного

  перехода (JMP).

       Значение: ошибка



  ILLCHR, ILLEGAL CHARACTER


       Пояснение: исходная  строка  содержит  недопустимый  в

  данном контексте символ.

       Действие пользователя: удалить недопустимый символ.

       Значение: ошибка.



  ILLDFLTARG, ILLEGAL ARGUMENT FOR .DEFAULT DIRECTIVE


       Пояснение: директива .DEFAULT не специфицировала  сме-

  щение (DISPLACEMENT) операнда, либо специфицированное  сме-




                           - 69 -

                        00152-01 33 01


  щение не было байтом, словом или длинным словом.

       Действие пользователя: исправить директиву .DEFAULT.

       Значение: ошибка.



  ILLIFCOND, ILLEGAL IF CONDITION


       Пояснение: специфицированное для  условной  трансляции

  условие не является допустимым условием, или не было симво-

  лов после условия DIFFERENT или IDENTICAL.

       Действие пользователя: исправить  синтаксис  директивы

  условной трансляции.

       Значение: ошибка



  ILLINDXREG, INVALID INDEX REGISTER


       Пояснение: базовый режим меняет значение  регистра,  и

  индексный регистр тот же  самый,  что  и  регистр  базового

  режима; базовый  режим  является  литеральным  или  режимом

  непосредственной  адресации;  или  в  качестве   индексного

  регистра использовался PC.

       Действие пользователя: исправить режим адресации.

       Значение: ошибка



  ILLMACARGN, ILLEGAL MACRO ARGUMENT NAME


       Пояснение: имя в директиве .MACRO содержит  недопусти-

  мый символ.

       Действие пользователя: удалить недопустимый символ.





                           - 70 -

                        00152-01 33 01


       Значение: ошибка



  ILLMACNAM, ILLEGAL MACRO NAME


       Пояснение: имя макрокоманды не было специфицировано  в

  директиве .MACRO.

       Действие пользователя: специфицировать имя макрокоман-

  ды


       Значение: ошибка



  ILLMASKBIT, RESERVED BITS SET IN ENTRY MASK


       Пояснение:  маска  сохранения  регистров  в  директиве

  .ENTRY или .MASK специфицирует регистры R0, R1, AP  или  PC

  (соответствующие битам 0, 1, 12 и 13).

       Действие пользователя: удалить эти регистры  из  маски

  сохранения регистров.

       Значение: ошибка



  ILLMODE, ILLEGAL MODE


       Пояснение: специфицирован недопустимый для  инструкции

  режим адресации.

       Действие  пользователя:  специфицировать   разрешенный

  режим адресации.

       Значение: ошибка








                           - 71 -

                        00152-01 33 01


  ILLOPDEF, ILLEGAL FORMAT FOR .OPDEF


       Пояснение: директива .OPDEF имеет неверный синтаксис.

       Действие пользователя: исправить  синтаксис  директивы

  .OPDEF.

       Значение: ошибка



  ILLOPDEFVL, ILLEGAL VALUE FOR OPCODE DEFINITION


       Пояснение: специфицированное в директиве .OPDEF значе-

  ние не помещается в двух байтах.

       Действие пользователя: исправить значение в директиве.

       Значение: ошибка



  ILLREGHERE, THIS REGISTER MAY NOT WE USED HERE


       Пояснение: регистр PC не может использоваться  в  сле-

  дующих        режимах        адресации:        регистровом,

  косвенно-регистровом, с автоуменьшением, с  автоувеличением

  и косвенном с автоувеличением.

       Действие пользователя: использовать другой регистр.

       Значение: ошибка



  ILLREGNUM, ILLEGAL REGISTER NUMBER


       Пояснение: имя регистра не находится в диапазоне от R1

  до R12 или не является именем регистра AP, FP, SP ли PC.

       Действие  пользователя:  исправить  недопустимое   имя

  регистра.




                           - 72 -

                        00152-01 33 01


       Значение: ошибка



  ILLSYMLEN, SYMBOL EXCEEDS 31 CHARACTERS


       Пояснение: символическое имя было длиннее 31  символа.

  Программа макроассемблер усекает имя до 31 символа.

       Действие пользователя: уменьшить имя до 31 символа.

       Значение: предупреждение.



  INSVIRMEM, INSUFFICIENT VIRTUAL MEMORY


       Пояснение: оттранслированный модуль имеет слишком мно-

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

  памяти; или макроопределение рекурсивно вызывает само себя.

       Действие  пользователя:  свяжитесь  с  администратором

  системы, чтобы увеличить доступный об'ем виртуальной  памя-

  ти; уменьшите уровень вложений макрокоманд; разбейте модуль

  на несколько меньших модулей или устраните рекурсивное мак-

  роопределение.

       Значение: ошибка



  INVALIGN, INVALID ALIGNMENT


       Пояснение: за директивой .ALIGN не  следует  ни  целая

  величина ни ключевое слово.

       Действие пользователя: исправить  синтаксис  директивы

  .ALIGN.

       Значение: ошибка





                           - 73 -

                        00152-01 33 01




  LINTOOLONG, LINE TOO LONG


       Пояснение: исходная строка в макроопределении  длиннее

  1000 символов.

       Действие  пользователя:  изменить  структуру  исходной

  программы, чтобы уменьшить строку.

       Значение: ошибка



  MACLBFMTER, MACRO LIBRARY FORMAT ERROR


       Пояснение: ошибка формата в библиотеке макрокоманд.

       Действие пользователя: повторить  трансляцию  и,  если

  ошибка все-таки происходит, использовать команду языка  DCL

  LIBRARY для создания библиотеки из исходной программы  сно-

  ва.

       Значение: ошибка



  MAYNOTINDX, THIS MODE MAY NOT BE INDEXED


       Пояснение: базовый режим  адресации  был  регистровым,

  непосредственным или литеральным.

       Действие пользователя: изменить режим адресации.

       Значение: ошибка



  MCHINSTSYN, MACHINE INSTRUCTION SYNTAX ERROR


       Пояснение: синтаксическая ошибка в инструкции,  напри-

  мер, MOVL, A.




                           - 74 -

                        00152-01 33 01


       Действие пользователя: исправить синтаксис инструкции.

       Значение: ошибка



  MISSINGEND, MISSING .END DIRECTIVE


       Пояснение: нет директивы .END в конце модуля. Програм-

  ма макроассемблер вставила директиву .END  после  последней

  строки.

       Действие пользователя: вставить директиву .END.

       Значение: предупреждение.

  MSGCMAIIF, MISSING COMA IN .IIF STATEMENT


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

  ве .IIF.

       Действие пользователя: вставить в директиву запятую.

       Значение: ошибка



  MULDEFLBL, MULTIPLE DEFINITION OF LABEL


       Пояснение: одна и та  же  метка  дважды  определена  в

  модуле.

       Действие пользователя: удалить второе определение мет-

  ки, или заменить одну из меток на другое символическое имя.

       Значение: ошибка



  NOFORMLARG, NO FORMAL ARGUMENT FOR .IRP/.IRPC


       Пояснение: нет формальных аргументов в директиве  .IRP

  или IRPC.




                           - 75 -

                        00152-01 33 01


       Действие пользователя: исправить  синтаксис  директивы

  .IRP или IRPC.

       Значение: ошибка



  NOTDESCSTRG, ILLEGAL CHARACTER IN DECIMAL STRING


       Пояснение: десятичная строка содержит символ, отличный

  от цифр от 0 до 9, знака плюс, минус.

       Действие пользователя: исправить синтаксис  десятичной

  строки.

       Значение: ошибка.



  NOTENABORT, NOT A LEGAL ENABL OPTION


       Пояснение: аргумент директивы .ENABLE или .DISABLE  не

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

       Действие пользователя: удалить необязательный аргумент

  или заменить его допустимым.

       Значение: ошибка.



  NOTENUFOPR, NOT ENOUGH OPERANDS SUPPLIED


       Пояснение: инструкция требует  больше  операндов,  чем

  было специфицировано в операторе.

       Действие пользователя: добавить операнды или  заменить

  инструкцию.

       Значение: ошибка.







                           - 76 -

                        00152-01 33 01


  NOTINANIF, STATEMENT OUTSIDE CONDITION BODY


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

  .IF_FALSE, .IF_TRUE, .IF_TRUE_FALSE, .IIF, .IFT  или  .IFTF

  находится вне блока условной трансляции.

       Действие пользователя: заменить или удалить  директиву

  дополнительного условия.

       Значение: ошибка



  NOTINMACRO, STATEMENT NOT IN MACRO BODY


       Пояснение: директива .NARG находится вне  макроопреде-

  ления или макрорасширения.

       Действие пользователя: удалить или переместить строку,

  содержащую директиву .NARG.

       Значение: ошибка



  NOTLGLISPOP, NOT A LEGAL LISTING OPTION


       Пояснение: аргумент директивы  .SHOW,  .NOSHOW,  .LIST

  или .NLIST является недопустимым необязательным аргументом.

       Действие пользователя: удалить  недопустимый  необяза-

  тельный аргумент или заменить его допустимым.

       Значение: ошибка




  NOTPSECOPT, NOT A VALID PSECT OPTION


       Пояснение: специфицированный в директиве .PSECT  пара-

  метр является недопустимым.



                           - 77 -

                        00152-01 33 01


       Действие пользователя: удалить  недопустимый  параметр

  или заменить его допустимым.

       Значение: ошибка



  OPENIN, ERROR OPENING FILE-SPEC AS INPUT


       Пояснение: программа макроассемблер  встретила  ошибку

  ввода-вывода при открытии входного исходного файла или биб-

  лиотеки макрокоманд; FILE-SPEC является спецификацией  отк-

  рываемого файла. Это сообщение генерируется, когда файл  не

  может быть найден.

       Действие пользователя: повторить трансляцию  или  сде-

  лать новую копию входного файла и повторить трансляцию.

       Значение: ошибка



  OPENOUT, ERROR OPENING FILE-SPEC AS OUTPUT


       Пояснение: ошибка ввода-вывода при открытии программой

  макроассемблер выходного файла - об'ектного  или  листинга;

  FILЕ-SPEC является спецификацией  открываемого  файла.  Это

  сообщение появляется, когда устройство защищено  от  записи

  или не смонтировано.

       Действие  пользователя:  повторить  трансляцию,   если

  ошибка повторяется, известить администратора системы.

       Значение: ошибка










                           - 78 -

                        00152-01 33 01


  OPRNDSYNX, OPERAND SYNTAX ERROR


       Пояснение: операнд содержит синтаксическую ошибку.

       Действие пользователя: исправить синтаксис операнда.

       Значение: ошибка



  PACTOOLONG, PACKED DECIMAL STRING TOO LONG


       Пояснение: числовая строка в директиве  .PACKED  имеет

  более 31 цифры.

       Действие  пользователя:  уменьшить  длину   десятичной

  строки.

       Значение: ошибка



  PSECOPCNFL, CONFLICTING PSECT OPTIONS


       Пояснение: специфицированные в директиве .PSECT значе-

  ния являются конфликтными по отношению друг к другу или  не

  являются теми же значениями, что и специфицированные в пре-

  дыдущей специфицированной с тем же именем директиве  .PSECT

  значения.

       Действие пользователя: исправить конфликтные  значения

  в директиве .PSECT.

       Значение: ошибка



  PSECBUFOVF, PSECT CONTEXT BUFFER OVERFLOW


       Пояснение: директива  .SAVE_PSECT  пыталась  сохранить

  контекст программной секции, когда контекстный буфер  прог-




                           - 79 -

                        00152-01 33 01


  раммной секции был заполнен.  В  буфере  максимально  можно

  сохранить контексты 31 программной секции.

       Действие пользователя: уменьшить число вложений  прог-

  раммных секций.

       Значение: ошибка



  PSECBUFUND, PSECT CONTEXT BUFFER UNDERFLOW


       Пояснение: директива .RESTORE_PSECT пыталась восстано-

  вить контекст программной секции, когда  контекстный  буфер

  программных секций был пуст.

       Действие пользователя: обеспечить, чтобы каждая дирек-

  тива   .RESTORE_PSECT    соответствовала    бы    директиве

  .SAVE_PSECT.

       Значение: ошибка



  READERR, ERROR READING FILE-SPEC


       Пояснение: программа  макроассемблер  втретила  ошибку

  ввода-вывода при чтении входного исходного файла или  файла

  библиотеки; FILE-SPEC является спецификацией читаемого фай-

  ла.

       Действие пользователя: повторить трансляцию  или  соз-

  дать новую копию исходного файла и затем повторить трансля-

  цию.

       Значение: ошибка








                           - 80 -

                        00152-01 33 01


  REGOPSYNX, REGISTER OPERAND SYNTAX ERROR


       Пояснение: синтаксис режима адресации содержит ошибку.

       Действие  пользователя:  исправить  синтаксис   режима

  адресации.

       Значение: ошибка



  RMSERROR, RMS SERVICE ERROR


       Пояснение: ошибка при выполнении  программой  макроас-

  семблер операций СУД операционной системы МОС ВП.

       Действие пользователя: повторить операцию.

       Значение: ошибка



  RPTCNTNABS, REPEAT COUNT NOT ABSOLUTE


       Пояснение: счетчик повторений в директиве .BYTE, WORD,

  .LONG, .SIGNED_BYTE или .SIGNED_WORD содержит  неопределен-

  ный символ или является относительным выражением.

       Действие пользователя: замените  выражение  абсолютным

  выражением, не содержащим никаких неопределенных символов.

       Значение: ошибка



  SYMDCLEXTR, SYMBOL DECLARED EXTERNAL


       Пояснение:  определение  метки  или  оператор  прямого

  присваивания специфицировали символ,  ранее  описанный  как

  внешний в директиве .EXTERNAL.

       Действие пользователя: удалить  описание  символа  как




                           - 81 -

                        00152-01 33 01


  внешнего или изменить имя внутреннего символа.

       Значение: ошибка.


  SYMDEFINMO, SYMBOL IS DEFINED IN MODULE


       Пояснение: директива  .EXTERNAL  специфицирует  метку,

  ранее определенную в модуле.

       Действие пользователя: удалить  внешнее  описание  или

  переименовать внутренний символ.

       Значение: ошибка.



  SYMNOTABS, SYMBOL IS NOT ABSOLUTE


       Пояснение: в макрокоманде аргумент строковой  операции

  задан относительно символа или не описан.

       Действие пользователя: обеспечить, чтобы символ  опре-

  делялся как абсолютный символ.

       Значение: ошибка.



  SYMOUTPHAS, SYMBOL OUT OF PHASE


       Пояснение:  определение  метки  специфицирует   метку,

  определяемую в модуле позднее;  или  определение  локальной

  метки специфицирует локальную метку, определяемую позднее в

  том же самом блоке локальных меток.

       Действие пользователя: обеспечить, чтобы метка в моду-

  ле определялась только один раз, или чтобы локальная  метка

  определялась в блоке локальных меток только раз.

       Значение: ошибка




                           - 82 -

                        00152-01 33 01




  TEXT, NO INPUT FILE GIVEN


       Пояснение: команда MACRO  языка  DCL  не  содержит  ни

  одного исходного файла; она содержит только файлы библиотек

  макрокоманд.

       Действие  пользователя:  специфицировать  в  командной

  строке исходный файл.

       Значение: ошибка



  TOOMNYARGS, TOO MANY ARGUMENTS IN MACRO CALL


       Пояснение: макровызов содержит больше аргументов,  чем

  специфицировалось директивой .MACRO в макроопределении.

       Действие пользователя: обеспечьте соответствие  макро-

  вызова макроопределению.

       Значение: ошибка



  TOOMNYOPRND, TOO MANY OPERAND FOR INSTRUCTION


       Пояснение: для инструкции специфицировано слишком мно-

  го операндов.

       Действие пользователя: уменьшить число операндов.

       Значение: ошибка



  TOOMNYPSEC, TOO MANY PSECTS DECLARED


       Пояснение: описано более 255 определяемых  пользовате-

  лем программных секций.




                           - 83 -

                        00152-01 33 01


       Действие  пользователя:  уменьшить  число  программных

  секций.

       Значение: ошибка



  UNDEFSYM, UNDEFINED SYMBOL


       Пояснение: ссылка к локальной метке, не определенной в

  блоке локальных меток; или, если  было  запрещение  GLOBAL,

  ссылка на символ, не определенный в модуле или не  специфи-

  цированный в директиве .EXTERNAL.

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

  символ, или специфицировать символ в директиве .EXTERNAL.

       Значение: ошибка



  UNDEFXFRAD, UNDEFINED TRANSFER ADDRESS


       Пояснение: директива .END специфицирует адрес передачи

  управления, который не определен в модуле или не специфици-

  рован в директиве .EXTERNAL.

       Действие  пользователя:  определить   адрес   передачи

  управления или удалить его из директивы .END.

       Значение: ошибка



  UNPROQUAL, UNPROCESSED QUALIFIERS


       Пояснение:   квалификатор   /SHOW   или   квалификатор

  /CROSS_REFERENCE специфицирован  без  квалификатора  /LIST.

  Программа макроассемблер не обрабатывает исходный файл и не

  создает об'ектный файл.



                           - 84 -

                        00152-01 33 01


       Действие пользователя: введите команду снова с  квали-

  фикатором /LIST.

       Значение: ошибка



  UNRECSTMT, UNRECOGNIZED STATEMENT


       Пояснение:  операция  не  является  кодом  инструкции,

  директивой, определенным  пользователем  кодом  инструкции,

  ранее определенной макрокомандой или макрокомандой  в  биб-

  лиотеке.

       Действие пользователя: изменить операцию на допустимый

  код операции, директиву или  макрокоманду,  или  определить

  макрокоманду.

       Значение: ошибка



  UNTERMAGR, UNTERMINATED ARGUMENT


       Пояснение: пропущен разделитель (ограничитель) строко-

  вого аргумента или пропущена угловая скобка аргумента  мак-

  рокоманды.

       Действие пользователя: добавить разделитель или  угло-

  вую скобку.

       Значение: ошибка



  UNTERMCOND, UNTERMINATED CONDITIONAL


       Пояснение:  блок  условной  трансляции  не  закончился

  директивой .ENDC. Программа макроассемблер вставила  дирек-

  тиву .ENDC перед директивой .END.



                           - 85 -

                        00152-01 33 01


       Действие пользователя: добавить директиву .ENDC.

       Значение: ошибка



  WRITEERR, ERROR WRITING FILE-SPEC


       Пояснение: произошла ошибка  ввода-вывода  при  записи

  программой макроассемблер в выходной файл об'ектного модуля

  или листинга; FILE-SPEC является спецификацией записываемо-

  го файла.

       Действие  пользователя:  повторить  трансляцию.   Если

  ошибка  повторяется,  необходимо  известить  администратора

  системы.

       Значение: ошибка

































                           - 86 -

                        00152-01 33 01





                 Перечень ссылочных документов




       1. Операционная система МОС ВП. Система программирова-

  ния на языке макроассемблер. Описание  языка.  00152-01  35

  01.

















                           - 86К -

                      2б.00152-01 33 01





                 Перечень ссылочных документов




       1. Операционная система МОС ВП. Система программирова-

  ния на языке макроассемблер. Описание языка.  2б.00152-01

  35 01.



   

                           - 87К -

                      2б.00152-01 33 01
  
  ------------------------------------------------------------
  I                                                          I
  I                  Лист регистрации изменений              I
  I                                                          I
  I----------------------------------------------------------I
  IНомера листов (страниц)IВсего IN     IВходящий IПодп.IДатаI
  I-----------------------IлистовIдоку- IN сопро- I     I    I
  IИ IИз- IЗа- IНо- IАнну-I(стра-Iмента Iводитель-I     I    I
  Iз Iме- Iме- Iвых Iлиро-Iниц)  I      Iного до- I     I    I
  Iм Iнен-Iнен-I    Iван- Iв до- I      Iкум. и   I     I    I
  I. Iных Iных I    Iных  Iкум.  I      Iдата     I     I    I
  I----------------------------------------------------------I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
  I  I    I    I    I     I      I      I         I     I    I
 
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!