     
















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



               Подсистема управления



            ПРОГРАММА ПОПОЛНЕНИЯ НАБОРА

                СИСТЕМНЫХ СООБЩЕНИЙ





              Руководство пользователя

                   00152-01 92 10



                     Листов 42



















                        1987






                          - 2 -

                      00152-01 92 10


                       АННОТАЦИЯ


     Настоящий документ  предназначен  для  пользователей,

работающих в системе МОС ВП, с целью изучения возможностей

программы пополнения набора системных сообщений  (MESSAGE)

и ее применения для формирования сообщений.

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

мировать и дополнять сообщения системы  МОС  ВП сообщения-

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

     В документе описываются методы  формирования  сообще-

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

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

MESSAGE.


                          - 3 -

                      00152-01 92 10


                       СОДЕРЖАНИЕ



1.       Назначение и условия выполнения программы....   5

1.1.     Команда MESSAGE..............................   5

1.2.     Квалификаторы команды MESSAGE................   6

1.3.     Вызов и завершение программы.................   6

1.4.     Формат сообщения.............................   7

1.5.     Формирование сообщений.......................   8

1.6.     Исходный файл сообщений......................  10

2.       Выполнение программы.........................  12

2.1.     Компиляция исходного файла сообщений.........  12

2.2.     Компоновка об'ектного модуля сообщений.......  12

2.3.     Указатели  сообщений.........................  13

2.4.     Команда SET MESSAGE..........................  16

2.5.     Описание квалификаторов команды MESSAGE......  16

2.5.1.   Квалификатор /FILE_NAME......................  16

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

2.5.3.   Квалификатор /OBJECT.........................  19

2.5.4.   Квалификатор /SYMBOLS........................  20

2.5.5.   Квалификатор /ТEXT...........................  20

2.6.     Исходный файл сообщений......................  21

2.6.1.   Символы и выражения, используемые в исходном

         файле сообщений..............................  21

2.6.2.   Операторы исходного файла сообщений..........  22

2.6.2.1. Директива определения базового номера

         сообщения .BASE..............................  24

2.6.2.2. Директива конца .END.........................  25

2.6.2.3. Директива описания программной компоненты

         .FACILITY....................................  26

2.6.2.4. Директива идентификации .IDENT...............  28


                          - 4 -

                      00152-01 92 10


2.6.2.5. Директива определения глобальных символов

         .LITERAL....................................  29

2.6.2.6. Описание сообщения..........................  31

2.6.2.7. Директива страницы .PAGE....................  35

2.6.2.8. Директива типа сообщения .SEVERITY..........  36

2.6.2.9. Директива заголовка .TITLE..................  38

2.6.3.   Примеры использования команды MESSAGE.......  39

2.6.3.1. Создание выполняемого образа, содержащего

         данные сообщения............................  39

2.6.3.2. Создание выполняемого образа, содержащего

         указатель...................................  40

3.       Сообщения программы MESSAGE.................  41

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




                          - 5 -

                      00152-01 92 10


     1. Назначение и условия выполнения программы



     Программа  пополнения  набора   системных   сообщений

MESSAGE позволяет пользователю дополнять сообщения системы

МОС ВП своими собственными  сообщениями. Сообщения пользо-

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

мер, обнаружена ошибка или программа вызвана успешно.



     1.1. Команда МESSAGE



     Формат команды MESSAGE :

     MESSAGE[/квалификатор] спец_файла [,...]

где  квалификатор - один или несколько  квалификаторов ко-

манды MESSAGE.

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

MESSAGE перед спецификацией исходного файла сообщений;

     Спец_файла - спецификация  исходного файла сообщений,

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

файла, по умолчанию принимается тип .MSG.  В  спецификации

файла допускается использование символов обобщения.

     Если указано несколько исходных файлов сообщений, они

разделяются запятыми или знаками плюс (+); файлы об'единя-

ются и компилируются как один файл.

     Если задан SYS$INPUT, то в командной строке  имя  ис-

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

дой MESSAGE; имя об'ектного модуля, заданного квалификато-

ром /OBJECT, и имя файла листинга, заданного  квалификато-

ром /LIST, должны быть указаны явно.


                          - 6 -

                      00152-01 92 10




     1.2. Квалификаторы команды MESSAGE



     Квалификаторы  команды MESSAGE и их значения по умол-

чанию:

     1) /[NO]FILE_NAME[=спец_файла]     /NOFILE_NAME;

     2) /[NO]LIST[=спец_файла]          /NOLIST

                                   (интерактивный режим);

     3) /[NO]LIST[=спец_файла]          /LIST

                                     (пакетный режим);

     4) /[NO]OBJECT[=спец_файла]        /OBJECT;

     5) /[NO]SYMBOLS                    /SYMBOLS;

     6) /[NO]TEXT                       /TEXT;

где  спец_файла - спецификация исходного файла сообщений.



     1.3. Вызов и завершение программы



     Программа MESSAGE вызывается по команде DCL :

     $MESSAGE

     После компиляции исходного файла сообщений  программа

MESSAGE возвращает управление на командный уровень DCL.

     Сообщения выдаются пользователю в виде строк алфавит-

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

условия, которые вызвали эти сообщения.

     Для использования программы MESSAGE никаких  привиле-

гий не требуется.




                          - 7 -

                      00152-01 92 10


     1.4. Формат сообщения



     Формат сообщения:

     %FACILITY-L-IDENT, текст_сообщения

где  FACILITY - поле, в  котором  указывается  сокращенное

имя программы, выдающей сообщение;

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

ся пять типов сообщений, которым соответствуют коды:

     1) S - сообщение об успешном выполнении;

     2) I - информационное сообщение;

     3) W - предупреждающее сообщение;

     4) е - сообщение об ошибке;

     5) F - сообщение о фатальной или серьезной ошибке;

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

представляющих краткое сообщение. Допускается до 15  алфа-

витно-цифровых знаков;

     Текст сообщения - текст, об'ясняющий причину  сообще-

ния. Текст сообщения может также содержать до 255 выводных

аргументов  в  символьном  коде   (FAO).   Эти   аргументы

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

на экран, например,  инструкцию,  при  выполнении  которой

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

пользователю;

     Символы процент (%) и запятая (,) являются  ограничи-

телями первых трех полей - FACILITY-L-IDENT (если хотя  бы

одно из них присутствует в сообщении); если поля FACILITY,

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

выведен программой  системного  обслуживания  PUT  MESSAGE

($PUTMSG).


                          - 8 -

                      00152-01 92 10


     Пример.

%TYPE-W-OPENIN, ERROR OPENING_DQA0:[ROSE]STATS.FOR;

                                                  AS INPUT

где  TYPE - FACILITY;

     W - предупреждение, один из типов сообщений;

     OPENIN - IDENT;

     _DQA0:[ROSE]STATS.FOR - FAO аргументы;

     ERROR OPENING_DQA0:[ROSE]STATS.FOR;AS INPUT  -  текст

сообщения.



     1.5. Формирование сообщений



     Чтобы сформировать сообщения, необходимо написать ис-

ходный файл сообщений, скомпилировать его с помощью  прог-

раммы MESSAGE и скомпоновать полученный об'ектный модуль с

пользовательским об'ектным модулем. При  выполнении  прог-

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

$PUTMSG с помощью вектора аргумента сообщения ищет  инфор-

мацию, которая используется в сообщении.

     Вектор аргумента сообщения  содержит  код  сообщения;

это 32-битовое значение, которое однозначно определяет со-

общение. Код сообщения, созданный из  информации,  опреде-

ленной в исходном файле сообщений, содержит следующие эле-

менты:

     1) тип сообщения, определенный в директиве  .SEVERITY

или в описании сообщения;

     2) номер сообщения,  автоматически  присваиваемый  по

описанию сообщения или заданный по  директиве  определения

базового номера сообщения .BASE;

     3) номер программной компоненты, заданный в директиве


                          - 9 -

                      00152-01 92 10


описания  программной компоненты;

     4) внешние управляющие флаги.

     На рис.1 показано распределение битов в коде  сообще-

ния.



31       28 27               16 15                3 2    0

-----------+-------------------+-------------------+------

 CONTROL   ! FACILITY NUMBER   ! MESSAGE NUMBER    ! SEV

-----------+-------------------+-------------------+------



в битах 0-2 содержится тип сообщения;

в битах 3-15 содержится номер сообщения;

в битах 16-27 содержится номер программной компоненты;

в битах 28-31 устанавливаются внешние управляющие флаги.



                  Рис.1



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

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

лом сообщения. Этот символ описывается  в  исходном  файле

сообщений. Символ сообщения, который появляется в  скомпи-

лириванном файле сообщений содержит:

     1) префикс символа, определяемый в директиве описания

программной компоненты;

     2) символическое имя, задаваемое в  описании  сообще-

ния.




                          - 10 -

                      00152-01 92 10


     1.6. Исходный файл сообщений



     Исходный файл сообщений содержит информацию,  необхо-

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

торые описывают текст сообщения, значение кода сообщения и

символ сообщения.

     Исходный файл сообщений состоит из элементов:

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

     2) директива типа сообщения;

     3) директива определения базового номера сообщения;

     4) описание сообщения;

     5) директива определения глобальных символов;

     6) директива идентификации;

     7) директива заголовка листинга;

     8) директива страницы;

     9) директива конца.

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

.TITLE, которая позволяет определить имя модуля для компи-

лируемого файла сообщений. Следующей за директивой  .TITLE

должна быть указана директива  .FACILITY.  Все  сообщения,

определяемые после директивы .FACILITY, связаны  с  данной

программной компонентой. Директива .END или новая директи-

ва .FACILITY завершают список сообщений, связанных с  ука-

занной программной компонентой.

     Тип сообщения определяется для каждого сообщения либо

в директиве .SEVERITY, либо включением  типа  сообщения  в

описаниE сообщения.

     Каждое сообщение, описываемое в исходном файле  сооб-

щений, должно иметь имя программной компоненты и  описание

сообщения, связанного с ней. Все другие операторы исходно-


                          - 11 -

                      00152-01 92 10


го файла сообщений не обязательны.

     Например, TESTMSG.MSG - исходный файл сообщений.  Со-

общения, описываемые в ТЕSTMSG.MSG, относятся к  программе

TEST.FOR, написанной на языке программирования ФОРТРАН.

     Исходный файл сообщений TESTMSG.MSG содержит строки:

     .FACILITY     TEST,1 /PREFIX=MSG_

     .SEVERITY     ERROR

     SYNTAX        <SYNTAX ERROR IN STRING '!AS'>/FAO=1

     ERRORS        <ERRORS ENCOUNTERED DURING PROCESSING>

     .END

     Программа TEST.FOR, написанная на языке  программиро-

вания ФОРТРАН, содержит строки:

     EXTERNAL MSG_SYNTAX,MSG_ERRORS

     CALL LIB$SIGNAL(MSG_SYNTAX,%VAL(1),'ABC')

     CALL LIB$SIGNAL(MSG_ERRORS)

     END

     Исходный файл сообщений TESTMSG.MSG определяет симво-

лы сообщений MSG_SYNTAX и MSG_ERRORS,  которые  включаются

как  аргументы  в  процедуры  вызова  программы  TEST.FOR.

функция %VAL является  функцией  периода  компиляции.  При

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

вольная строка 'ABC'.














                          - 12 -

                      00152-01 92 10


               2. Выполнение программы



     2.1 Компиляция исходного файла сообщений



     До того, как сообщения, описанные  в  исходном  файле

сообщений, можно будет использовать,  данный  файл  должен

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

об'ектного модуля. Для инициации процесса компиляции  вво-

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

ходного файла сообщений.

     Например, для компиляции  исходного  файла  сообщений

TESTMSG.MSG вводится команда:

     $МESSAGE TESTMSG

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

об'ектный модуль TESTMSG.OBJ.

     Для удобства можно поместить об'ектные модули сообще-

ний в библиотеку об'ектных модулей.



     2.2. Компоновка об'ектного модуля сообщений



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

об'ектный  модуль  сообщений  должен  быть  скомпонован  с

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

компиляции исходного файла), чтобы получить файл выполняе-

мого образа.

     Например,  для  компоновки  двух  об'ектных   модулей

TESTMSG.OBJ и TEST.OBJ вводится команда:

     $LINK/NOTRACE TEST+TESTMSG

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

который содержит и сообщения, и код программы. Для запуска


                          - 13 -

                      00152-01 92 10


образа вводится команда:

     $RUN TEST

     Если при выполнении программы обнаружены ошибки,  вы-

водятся сообщения;

     %TEST-E-SYNTAX, SYNTAX ERROR IN STRING 'ABC'

     %TEST-E-ERRORS, ERRORS ENCOUNTERED DURING PROCESSING



     2.3. Указатели сообщений



     Указатели сообщений используются обычно, когда  необ-

ходимо обеспечить один и тот же набор сообщений различными

текстами сообщений,  например,  многоязыковая ситуация.  В

этом случае об'ектный модуль сообщений не компонуется  не-

посредственно с об'ектным модулем  программы,  поэтому  не

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

менить текст сообщений, включенный в него.

     Для того,  чтобы  использовать  указатель,  требуется

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

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

лы и указатели на невыполняемый файл.

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

ем и компоновкой исходного файла сообщений. Например,  для

того,  чтобы   создать   невыполняемый   файл    сообщений

COBOLMF.EXE, сначала надо создать компилированием исходно-

го  файла  сообщений    COBOLMSG.MSG   об'ектный   модуль,

COBOLMSG.OBJ  по команде:

     $MESSAGE/NOSYMBOLS COBOLMSG

     Затем, полученный об'ектный модуль компонуется по ко-

манде:

     $LINK/SHAREABLE=SYS$MESSAGE:COBOLMF COBOLMSG.OBJ


                          - 14 -

                      00152-01 92 10


     Созданный невыполняемый образ COBOLMF.EXE  помещается

в библиотеку системных сообщений SYS$MESSAGE.

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

ного файла сообщений по  команде  MESSAGE/FILE_NAME.  Файл

указателя должен иметь иное имя, чем невыполняемый файл.

     Об'ектный    модуль,    полученный     по     команде

MESSAGE/FILE_NAME, содержит только  глобальные  символы  и

спецификацию невыполняемого файла сообщений.

     Например, об'ектный модуль MESPNTR.OBJ,  который  со-

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

COBOLMF.EXE, создается по команде:

     $MESSAGE/FILE_NAME=COBOLMF/OBJECT=MESPNTR COBOLMSG

     Кроме указателей, об'ектный модуль MESPNTR.OBJ содер-

жит глобальные символы, описанные в исходном файле сообще-

ний COBOLMSG.MSG. Если SYS$MESSAGE не установлен для невы-

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

/FILE_MAME в спецификации файла  необходимо  явно  указать

устройство и каталог.

     После того, как об'ектный молуль файла  указателя был

создан, он может  быть  скомпонован  с  об'ектным  модулем

программы.

     Например, об'ектный модуль MESPNTR.OBJ компонуется  с

программой COBOLCODE на языке КОБОЛ по команде:

     $LINK COBOLCODE,MESPNTR

     При выполнении полученного файла образа данные  сооб-

щения выбираются из невыполняемого файла сообщений COBOLMF

с помощью программы системного обслуживания $GETMSG.

     На рис.2 показано создание невыполняемого файла сооб-

щений.


                          - 15 -

                      00152-01 92 10


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

!исходный файл!    ! компилятор !   !об'ектный мо- !

! сообщений   !--->! /NOSYMBOLS !-->!дуль сообщений!----

!COBOLMSG.MSG !    !  COBOLMSG  !   !COBOLMSG.OBJ  !   !

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

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

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

     !   !    ! компоновщик   !     ! невыполняемый !

     !   ---->! /SHAREABLE=   !---->! файл сообщений!

     !        ! SYS$MESSAGE:  !     ! SYS$MESSAGE   !

     !        !  COBOLMF      !     !  COBOLMF.EXE  !

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

     !                                           ^

     V                              $GETMSG      !

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

!компилятор!   ! указатель !   !        !   !выполняемая !

!/FILENAME-!   ! об'ектного!   ! компо- !   ! программа, !

! COBOLMF  !-->! модуля    !-->! новщик !-->! включающая !

! /OBJECT- !   !сообщений  !   !        !   ! указатель к!

! MESPNTR  !   !MESPNTR.OBJ!            !   !данным сооб-!

!          !   !           !   !        !   ! щениям     !

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

                                    ^

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

 ! об'ектный модуль программы,!     !

 !                            !------

 !    COBOLCODE.OBJ           !

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



                           рис. 2


                          - 16 -

                      00152-01 92 10




     2.4. Команда SET MESSAGE



     Команда SET MESSAGE позволяет:

     1) запрещать или разрешать для процесса  пользователя

выдачу различных полей сообщений;

     2) дополнять системные сообщения сообщениями из невы-

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

     Например, команда SET MESSAGE указывает, что  сообще-

ние в файле образа MYMSG.EXE дополняет  существующие  сис-

темные сообщения:

     $SET MESSAGE MYMSG

     Команда SET MESSAGE используется с  одним  или  более

квалификаторами, запрещающими или  разрешающими  появление

одного или более полей в  сообщении.  Например,  следующая

команда запрещает появление поля IDENT в сообщении:

     $SET MESSAGE/NOIDENTIFICATION



     2.5. Описание  квалификаторов  команды MESSAGE



     По квалификаторам команды MESSAGE указывается  тип  и

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

манды MESSAGE позволяют также создавать невыполняемые фай-

лы сообщений и файлы указателей.



     2.5.1. Квалификатор /FILE_NAME



     По квалификатору /FILE_NAME создается  об'ектный  мо-

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

общения.


                          - 17 -

                      00152-01 92 10


     Формат:

     /FILE_NAME=спец_файла

     /NOFILE_NAME

где  спец_файла - спецификация невыполняемого файла  сооб-

щений. По умолчанию в спецификации файла устройство и  ка-

талог - SYS$MESSAGE, тип файла по умолчанию  -  .EXE.  Ис-

пользование символов обобщения не допускается в специфика-

ции файла.

     По квалификатору /[NO]FILE_NAME создается (или не со-

здается) об'ектный модуль, включающий указатели  на  файл,

содержащий данные сообщения. По умолчанию действует квали-

фикатор /NOFILE_NAME, указывающий,  что  об'ектный  модуль

содержит только скомпилированные сообщения и  не  содержит

указателей.

     Квалификаторы /FILE_NAME и /TEXT  являются  взаимоис-

ключающими, так как файл указателя сообщений не может  со-

держать текст сообщений.

     Текст сообщений содержится в невыполняемом файле  со-

общений, указанном в квалификатора /FILE_NAME.

     Примеры:

     1. $MESSAGE COBOLMSG

     По команде MESSAGE создается об'ектный  файл  сообще-

ний  COBOLMSG.OBJ  компилированием исходного файла сообще-

ний COBOLMSG.MSG. По умолчанию подразумевается  квалифика-

тор /NOFILE_NAME.

     2. $MESSAGE/FILE_NAME=COBOLMF COBOLMSG

     По  команде  MESSAGE   создается   об'ектный   модуль

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

файл сообщений  SYS$MESSAGE:COBOLMF.EXE.




                          - 18 -

                      00152-01 92 10


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



     По квалификатору /LIST создается выводной  файл  лис-

тинга.

     Формат:

     /LIST[=спец_файла]

     /NOLIST

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

     По  умолчанию  устройство   и   каталог   -   текущие

устройство и каталог. Тип файла  по  умолчанию  для  файла

листинга - .LIS. Использование символов обобщения в специ-

фикации файла не допускается.

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

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

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

не создается. Выводной файл листинга создается по квалифи-

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

файл листинга будет иметь то же имя, что и  исходный  файл

сообщений, а тип файла - .LIS.

     Пример.

     $MESSAGE/LIST=MSGOUTPUT COBOLMSG

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

щений COBOLMSG.MSG  и  создается  выводной  файл  листинга

MSGOUTPUT.LIS в текущем каталоге.




                          - 19 -

                      00152-01 92 10


     2.5.3. Квалификатор /OBJECT



     По квалификатору /OBJECT во время компиляции создает-

ся об'ектный модуль.

     Формат:

     /OBJECT[=спец_файла]

     /NOOBJECT

где  спец_файла - спецификация  файла для  об'ектного  мо-

дуля.

     Устройство и каталог по умолчанию -  текущие  устрой-

ство и каталог; использование символов обобщения в  специ-

фикации файла не допускается.

     Компилятор создает по умолчанию об'ектный модуль, ко-

торый содержит данные сообщений. Если  спецификация  файла

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

имя, что и исходный файл сообщений, а тип файла - .OBJ.

     Примеры:

     1. $MESSAGE COBOLMSG

     По  команде  MESSAGE   создается   об'ектный   модуль

COBOLMSG.OBJ из исходного файла сообщений COBOLMSG.MSG. По

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

     2. $MESSAGE/FILE_NAME=COBOLMF /OBJECT=MESPNTR

                                                  COBOLMSG

     По  команде  MESSAGE   создается   об'ектный   модуль

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

файл сообщений COBOLMF.EXE.




                          - 20 -

                      00152-01 92 10


     2.5.4. Квалификатор /SYMBOLS



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

с глобальными символами. По умолчанию  действует  квалифи-

катор /SYMBOLS.

     Формат:

     /[NO]SYMBOLS

     С квалификатором /SYMBOLS квалификатор /NOOBJECT  не-

допустим.

     Для создания невыполняемого файла сообщений использу-

ется квалификатор /NOSYMBOLS, так как  невыполняемый  файл

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

держать глобальные символы. Глобальные символы должны быть

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

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

/SYMBOLS, либо по умолчанию.

     Пример.

     $MESSAGE/FILE_NAME=COBOLMF /OBJECT=

                               MESPNTR/SYMBOLS COBOLMSG

     По  команде  MESSAGE   создается   об'ектный   модуль

MESPNTR.OBJ, который содержит глобальные символы.



     2.5.5. Квалификатор /TEXT



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

текст сообщений.

     Формат:

     /[NO]TEXT

     По умолчанию компилятор создает об'ектный модуль, ко-

торый содержит  текст  сообщений.  Квалификаторы  /TEXT  и


                          - 21 -

                      00152-01 92 10


/FILE_NAME - взаимоисключающие, так как файл указателя со-

общений не может содержать текст сообщений. Текст  сообще-

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

зателям, определенным с помощью квалификатора /FILE_NAME.

     С квалификатором /TEXT квалификатор  /NOOBJECT  недо-

пустим.

     Квалификатор /NOTEXT может быть использован с  квали-

фикатором /SYMBOLS, в этом случае создается  об'ектный мо-

дуль, содержащий только глобальные символы.

     Пример.

     $MESSAGE/FILE_NAME=COBOLMF/NOTEXT /OBJECT=

                                        MESPNTR COBOLMSG

     По  команде  MESSAGE   создается   об'ектный   модуль

MESPNTR.OBJ, который не содержит текст  сообщений; он  со-

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

COBOLMF.EXE.



     2.6. Исходный файл сообщений



     Исходный файл сообщений содержит операторы или дирек-

тивы, а также информацию (код и символ сообщения),  входя-

щую в сообщение.



     2.6.1. Символы и выражения, используемые в исходном

файле сообщений



     Символы, используемые в исходном файле сообщений, мо-

гут включать любые из следующих знаков:

     1) буквы от А до Z (прописные);

     2) буквы от а до z (строчные);


                          - 22 -

                      00152-01 92 10


     3) цифры от 1 до 9;

     4) знак доллара или знак денежной единицы ($) в зави-

симости от клавиатуры терминала;

     5) знак подчеркивания (_).

     Выражения, используемые в исходном  файле  сообщений,

могут содержать операторы определения системы счисления:

     1) ^X         шестнадцатеричная;

     2) ^O         восьмеричная;

     3) ^D         десятичная.

     По умолчанию задается десятичная система счисления.

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

плюс (+), который присваивает выражению положительное зна-

чение, и знак минус (-), который присваивает выражению от-

рицательное значение. Кроме того, выражения  могут  содер-

жать следующие двоичные операторы:

     1)  +       сложение;

     2)  -       вычитание;

     3)  *       умножение;

     4)  /       деление;

     5)  @       арифметический сдвиг.

     Для группирования операторов выражение содержит круг-

лые скобки; сначала вычисляются выражения,  заключенные  в

скобки; внутренние скобки всегда раскрываются первыми.



     2.6.2. Операторы исходного файла сообщений



     Операторы исходного файла сообщений используются  при

написании исходного файла сообщений.  Операторы  исходного

файла сообщений устанавливают  различные  поля  сообщения:

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


                          - 23 -

                      00152-01 92 10


тинга. Операторы или директивы исходного файла сообщений:

     1)   директива   описания   программной    компоненты

.FACILITY;

     2) директива типа сообщения .SEFERITY;

     3) директива определения  базового  номера  сообщения

.BASE;

     4) описание сообщения;

     5) директива конца .END;

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

.LITERAL;

     7) директива идентификации .IDENT;

     8) директивы создания листинга:  директива  заголовка

.TITLE, директива страницы .PAGE.

     Любая  строка  исходного  файла  сообщений,  исключая

строки, содержащие директиву .TITLE, может содержать  ком-

ментарий. Комментарии выделяются восклицательными  знаками

(!). В любой строке можно вставить дополнительные  пробелы

и знаки табуляции для удобства чтения.

     Заголовок листинга, определенный с помощью  директивы

.TITLE и текст сообщения, заданный в  описании  сообщения,

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

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

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

должен  стоять символ отрицания (-).




                          - 24 -

                      00152-01 92 10


     2.6.2.1. Директива определения базового номера

сообщения .BASE



     Директива .BASE определяет значение номера сообщения,

используемое при формировании кода сообщения.

     Формат директивы:

     .BASE номер

где  номер - номер сообщения, связанный с  описанием  сле-

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

сообщения.

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

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

тельно, начиная с единицы.

     Если требуется отказаться от нумерации  по  умолчанию

(например, если требуется зарезервировать номера сообщений

для последующих сообщений), то номер сообщения задается по

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

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

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

щений, которые следуют за директивой  .BASE  до  следующей

директивы .BASE или до конца всех сообщений  данной  прог-

раммной компоненты.

     Пример.

     .TITLE       SAMPLE ERROR AND WARNING MESSAGES

     .IDENT       'VERSION 4.00'

     .FACILITY    SAMPLE, 1/PREFIX=ABC_

     .SEVERITY    ERROR

     UNRECOG      <UNRECOGNIZED KEYWORD !AS>/FAO_COUNT=1

     AMBIG        <AMBIGUOUS KEYWORD>

     .SEVERITY    WARNING


                          - 25 -

                      00152-01 92 10


     .BASE        10

     SYNTAX       <INVALID SYNTAX IN KEYWORD>

     .END

     Номер програmmной компоненты  в  директиве  .FACILITY

определяет для первых двух сообщений соответствующие номе-

ра - 1 и 2. От этой последовательной нумерации отказывают-

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

которая назначает номер 10 третьему сообщению.



     2.6.2.2. Директива конца .END



     Директива .END завершает список сообщений для  данной

программной компоненты.

     Формат директивы:

     .END

     Директива .END завершает список сообщений для  данной

программной компоненты. Для  завершения  списка  сообщений

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

рективу .SEVERITY или новую директиву описания программной

компоненты .FACILITY.

     Пример.

     .TITLE        SAMPLE ERROR AND WARNING MESSAGES

     .IDENT        'VERSION 4.00'

     .FACILITY     SAMPLE,1/PREFIX=ABC_

     .SEVERITY     ERROR

     UNRECOG       <UNRECOGNIZED KEYWORD !AS>FAO_COUNT=1

     AMBIG         <AMBIGUOUS KEYWORD>

     .SEVERITY     WARNING

     .BASE         10

     .END


                          - 26 -

                      00152-01 92 10


     Директива .END завершает список сообщений  для  прог-

раммной компоненты SAMPLE.



     2.6.2.3. Директива описания программной компоненты

.FACILITY



     Директива .FACILITY указывает программную компоненту,

которая определяет данные сообщения.

     Формат директивы:

     .FACILITY [/квалиф,...]имя[,]номер[/квалиф,...]

где  квалиф - один из квалификаторов директивы программной

компоненты;

     Имя - имя программной компоненты, которое  будет  ис-

пользоваться в поле FACILITY кода сообщения и  в  символе,

соответствующем номеру программной компоненты. Длина имени

не должна превышать 9 символов;

     Номер - номер  программной  компоненты,  который  ис-

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

щения. Номер - десятичное значение в  диапазоне  от  1  до

2047, или выражение, которое соответствует значению в ука-

занном  диапазоне.  Номера  программных  компонент  обычно

распределяются администратором  системы;  не  должно  быть

программных компонент с одинаковыми номерами.

     Квалификаторы директивы:

     1)  /PREFIX=префикс

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

сообщения.

     Квалификатор описывает альтернативный символьный пре-

фикс, используемый в символе сообщения всех сообщений, от-

носящихся к данной программной компоненте. Символьный пре-


                          - 27 -

                      00152-01 92 10


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

поненты, за которым следует символ подчеркивания (_). Если

кроме квалификатора /PREFIX  задан  квалификатор  /SYSTEM,

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

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

т.е. ($_). Общая длина символьного префикса и  символичес-

кого имени сообщения не должна превышать 31 символ;

     2) /SHARED

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

раммной компоненты в коде сообщения. Квалификатор  /SHARED

используется только для разделяемых сообщений и  сообщений

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

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

     3) /SYSTEM

     Квалификатор запрещает установку бита пользователя  в

кодах сообщений. Квалификатор /SYSTEM  зарезервирован  для

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

     Директива описания  программной  компоненты  является

первой директивой в исходном файле сообщения. Все последу-

ющие строки файла до оператора .END или другого  оператора

описания программной компоненты относятся к  данной  прог-

раммной компоненте. В директиве .FACILITY необходимы  ука-

зывать оба элемента - имя и номер программной  компоненты;

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

либо табуляцией.

     Директива  описания  программной  компоненты  создает

глобальный символ в формате:

     Имя$_FACILITY

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

закрепленный за программной компонентой.


                          - 28 -

                      00152-01 92 10


     Пример.

     .TITLE     SAMPLE ERROR AND WARNING MESSAGES

     .IDENT     'VERSION 4.00'

     .FACILITY  SAMPLE,1/PREFIX=ABC_

     .SEVERITY  ERROR

     UNRECOG    <UNRECOGNIZED KEYWORD !AS>/FAO_COUNT=1

     AMBIG      <AMBIGUOUS KEYWORD>

     .SEVERITY  WARNING

     .BASE      10

     SYNTAX     <INVALID SYNTAX IN KEYWORD>

     .END

     Оператор .FACILITY в исходном файле сообщений  описы-

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

SAMPLE с номером программной компоненты 1. Сообшения нуме-

руются последовательно, начиная  с  единицы.  Квалификатор

/PREFIX=ABC_  определяет  символы  сообщений  ABC_UNRECOG,

ABC_AMBIG и ABC_SYNTAX.



     2.6.2.4. Директива идентификации .IDENT



     Директива  .IDENT  идентифицирует  об'ектный  модуль,

создаваемый программой MESSAGE.

     Формат директивы:

     .IDENT строка

где  строка - строка символов, идентифицирующая  об'ектный

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

может содержать от 1 до 31 алфавитно-цифровых знака,  знак

подчеркивания (_)  и знак  ($), в  этом  случае строка  не

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

ка должна быть ограничена либо апострофом ('), либо кавыч-


                          - 29 -

                      00152-01 92 10


ками (").

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

ченное директивой .TITLE. Можно идентифицировать об'ектный

модуль, указав в директиве символьную строку.

     Если  исходный файл сообщений содержит более чем одну

директиву .IDENT, то данные последней директивы входят как

часть в идентификацию об'ектного модуля.

     Пример.

     .TITLE       SAMPLE ERROR AND WARNING MESSAGES

     .IDENT       'VERSION 4.00'

     .FACILITY    SAMPLE,1/PREFIX=ABC_

     .SEVERITY    ERROR

     UNRECOG      <UNRECOGNIZED KEYWORD !AS>/FAO_COUNT=1

     AMBIG        <AMBIGUOUS KEYWORD>

     .SEVERITY    WARNING

     .BASE        10

     SYNTAX       <INVALID SYNTAX IN KEYWORD>

     .END

     Директива  .IDENT  идентифицирует  об'ектный  модуль,

создаваемый программой MESSAGE.



     2.6.2.5. Директива определения глобальных символов

.LITERAL



     Директива .LITERAL  позволяет  определять  глобальные

символы в исходном файле сообщений. Можно либо задать зна-

чение этих символов, либо использовать значение по умолча-

нию.

     Формат директивы:

     .LITERAL символ [=значение] [,...]


                          - 30 -

                      00152-01 92 10


где  символ - символическое имя;

     Значение - любое допустимое в МОС ВП выражение.  Если

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

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

но 1. Для последующих символов в том же операторе значения

по умолчанию увеличиваются на 1 по сравнению с  предыдущи-

ми.

     Можно использовать директиву .LITERAL, чтобы  присво-

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

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

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

     Примеры:

     1. .LITERAL A,B,C,

     Значения A, B и C  определяются  по  умолчанию  соот-

ветственно как 1, 2 и 3.

     2. .FACILITY     SAMPLE,1/PREFIX=MSG$_

     .SEVERITY        ERROR

     FIRST            <FIRST ERROR>

     .

     .

     .

     LAST             <LAST ERROR>

     .LITERAL         LASTMSG=MSG$_LAST

     .LITERAL         NUMSG=(MSG$_LAST@-3)-(MSG$_FIRST@-3)

                                             !#OF MESSAGES

     В примере 2 символы, заданные  в  директиве  описания

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

для присвоения значений символам, определенным  с  помощью

директив .LITERAL.

     Первая директива .LITERAL определяет символ,  который


                          - 31 -

                      00152-01 92 10


имеет последнее значение, определенное  в  32-битном  коде

сообщения. Вторая директива .LITERAL определяет общее чис-

ло сообщений в исходном файле.



     2.6.2.6. Описание сообщения



     Описание сообщения определяет символ сообщения, текст

сообщения, число FAO аргументов, которое  можно  использо-

вать в сообщении.

     Описание сообщения имеет формат:

     Имя[/квалификатор,...]<текст_сообщения>

                                    [/квалификатор,...]

где  имя - символическое имя, об'единенное с символическим

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

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

ния. Общая длина из префикса и символического имени  сооб-

щения не должна превышать 31 символа.

     Символическое имя используется в  поле  IDENT  в  том

случае, если в описании сообщения  не  задан  квалификатор

/IDENTIFICATION=имя;

     Квалификатор - один или несколько квалификаторов  ко-

манды MESSAGE;

     Текст_сообщения - текст, описывающий условия, которые

привели к выдаче сообщения.  Текст  сообщения  может  быть

заключен либо в угловые  скобки,  либо  в  кавычки.  Длина

текста не должна превышать 255 байтов; продолжать текст на

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

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

ченное сообщение. FAO директивы  используются   программой

системного обслуживания ($FAO).  Если  задается  директива


                          - 32 -

                      00152-01 92 10


FAO, необходимо использовать квалификатор /FAO_COUNT.

     Квалификаторы описания сообщения:

     1) /FAO_COUNT=N

где  N - число аргументов FAO.

     Квалификатор задает  число  аргументов  FAO,  которые

включаются в сообщение  во  время  обработки.  Значение  N

представляет собой десятичное число в диапазоне  от  0  до

255. Программа системного обслуживания $PUTMSG  использует

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

быть передано программе системного обслуживания  $FAO  при

формировании окончательного текста сообщения. По умолчанию

значение N равно 0;

     2) /IDENTIFICATION=имя

где  имя - символическое имя, задаваемое пользователем.

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

сообщения IDENT. Строка может содержать до 9 символов. Ес-

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

описании сообщения;

     3) /USER_VALUE=N

где  N - значение, задаваемое пользователем.

     Квалификатор задает выбранное пользователем значение,

которое связано с данным сообщением. Значение N  представ-

ляет собой десятичное число в диапазоне от 0  до  255.  По

умолчанию N=0. Значение выбирается  программой  системного

обслуживания $GETMSG для использования  при  классификации

сообщений по типу или по действию;

     4) /SUCCESS

     Квалификатор идентифицирует тип сообщения  (сообщение

об успешном выполнении). Квалификатор /SUCCESS  фактически

перекрывает любую директиву .SEVERITY. Если не задана  ди-


                          - 33 -

                      00152-01 92 10


ректива .SEVERITY, квалификатор /SUCCESS должен  использо-

ваться для идентификации сообщения об успешном выполнении;

     5) /INFORMATIONAL

     Квалификатор идентифицирует тип сообщения (информаци-

онное сообщение). Квалификатор /INFORMATIONAL  перекрывает

фактически любую директиву .SEVERITY. Если не  задана  ди-

ректива .SEVERITY,  то  должен  быть  указан  квалификатор

/INFORMATIONAL для идентификации  информационного  сообще-

ния;

     6) /WARNING

     Квалификатор идентифицирует тип сообщения (предупреж-

дающее сообщение). Kвалификатор /WARNING перекрывает  фак-

тически  любую   директиву   .SEVERITY.   Если   директивы

.SEVERITY нет, для идентификации предупреждающего  сообще-

ния используется квалификатор /WARNING;

     7) /ERROR

     Квалификатор идентифицирует тип сообщения  (сообщение

об ошибке). Квалификатор /ERROR перекрывает фактически лю-

бую директиву .SEVERITY. Если директивы .SEVERITY нет, для

идентификации сообщения об ошибке используется  квалифика-

тор /ERROR;

     8) /SEVERE

     Квалификатор  /SEVERE  идентифицирует  тип  сообщения

(сообщение о серьезной ошибке). Квалификатор  /SEVERE  пе-

рекрывает фактически любую директиву .SEVERITY.  Если  нет

директивы .SEVERITY,  то  для  идентификации  сообщения  о

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

/SEVERE;


                          - 34 -

                      00152-01 92 10


     9) /FATAL

     Квалификатор идентифицирует тип сообщения  (сообщение

о фатальной ошибке). Квалификатор /FATAL перекрывает  фак-

тически директиву .SEVERITY. Если директивы .SEVERITY нет,

то для идентификации  сообщения  о  фатальной  ошибке  ис-

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

     Описание сообщения задает текст сообщения и имя,  ис-

пользуемое в поле сообщения IDENT. Описание сообщения  ис-

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

включаются в текст сообщения. Любое число описаний сообще-

ний может следовать за директивой .SEVERITY (или за дирек-

тивой .FACILITY, если нет директивы .SEVERITY).

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

перед или после текста сообщений.

     Можно использовать квалификаторы типа  сообщения  для

замены типа сообщения, определенном в директиве  .SEVERITY

или для перекрытия самих  директив  .SEVERITY  в  исходном

файле сообщений. Только один квалификатор  типа  сообщения

может быть включен в описание сообщения.

     Пример.

     .TITLE        SAMPLE ERROR AND WARNING MESSAGES

     .IDENT        'VERSION 4.00'

     .FACILITY     SAMPLE,1/PREFIX=ABC_

     .SEVERITY     ERROR

     UNRECOG       <UNRECOGNIZED KEYWORD !AS>/FAO_COUNT=1

     AMBIG         <AMBIGUOUS KEYWORD>

     .SEVERITY     WARNING

     .BASE         10

     SYNTAX        <INVALID SYNTAX IN KEYWORD>

     .END


                          - 35 -

                      00152-01 92 10


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

.FACILITY и три описания  сообщений.  Символические  имена

UNRECOG, AMBIG и SYNTAX, указанные в описаниях  сообщений,

будут скомбинированы с префиксом ABC_, определенным в  ди-

рективе .FACILITY, в символические сообщения  ABC_UNRECOG,

ABS_AMBIG и ABC_SYNTAX.

     Тексты сообщений UNRECOG и SYNTAX заключаются в угло-

вые скобки (< >); текст сообщения AMBIG заключен в  кавыч-

ки ("").

     Первое описание сообщения включает FAO директиву  !AS

(по директиве !AS вставляется символьная  строка  в  конец

текста   сообщения)   и    соответствующий    квалификатор

/FAO_COUNT.



     2.6.2.7. Директива страницы .PAGE



     Директива .PAGE инициирует вывод новой  страницы  вы-

водного листинга.

     Формат директивы:

     .PAGE

     Директива .PAGE позволяет указать начало страницы при

выводе на печать. В одной директиве  .PAGE  можно  указать

вывод только одной страницы текста; директиву .PAGE  можно

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


                          - 36 -

                      00152-01 92 10


     Пример.

     .TITLE      SAMPLE ERROR AND WARNING MESSAGES

     .IDENT      'VERSION 4.00'

     .FACILITY   SAMPLE,1/PREFIX=ABC_

     .SEVERITY   ERROR

     UNRECOG     <UNRECOGNIZED KEYWORD !AS>/FAO_COUNT=1

     AMBIG       <AMBIGUOUS KEYWORD>

     .PAGE

     .SEVERITY   WARNING

     .BASE       10

     SYNTAX      <INVALID SYNTAX IN KEYWORD>

     .END

     По директиве .PAGE выводится на печать новая страница

после описания сообщения AMBIG.



     2.6.2.8. Директива типа сообщения .SEVERITY



     Директива .SEVERITY задает тип сообщения.

     Формат директивы:

     .SEVERITY тип

где  тип - тип сообщения.

     Существуют следующие типы сообщений:

     1) SUCCESS, обозначается кодом S в сообщении;

     2) INFORMATIONAL, обозначается кодом I в сообщении;

     3) WARNING, обозначается кодом W в сообщении;

     4) ERROR, обозначается кодом E в сообщении;

     5) SEVERE, обозначается кодом F в сообщении;

     6) FATAL, обозначается кодом F в сообщении.

     Тип SEVERE эквивалентен типу FATAL и может  быть  ис-

пользован вместо него. Их коды одинаковы - F.


                          - 37 -

                      00152-01 92 10


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

файле сообщений помещается директива типа  сообщения.  Ди-

ректива типа сообщения включается в тех случаях, когда  не

задан тип сообщения в каждом описании сообщения с  помощью

квалификатора типа сообщения. Если  пользователь  пытается

описать сообщение без указания типа сообщения, то выдается

код ошибки.

     Новая директива .FACILITY отменяет старый тип сообще-

ния.

     Пример.

     .TITLE     SAMPLE ERROR AND WARNING MESSAGES

     .IDENT     'VERSION 4.00'

     .FACILITY  SAMPLE,1/PREFIX=ABC_

     .SEVERITY  ERROR

     UNRECOG    <UNRECOGNIZED KEYWORD !AS>/FAO_COUNT=1

     AMBIG      <AMBIGUOUS KEYWORD>

     .SEVERITY  WARNING

     .BASE      10

     SYNTAX     <INVALID SYNTAX IN KEYWORD>

     .END

     Две директивы типа сообщения, включенные  в  исходный

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

ний. Первые два сообщения имеют код  E;  третье  сообщение

имеет код W.




                          - 38 -

                      00152-01 92 10


     2.6.2.9. Директива заголовка .TIILE



     Директива .TITLE указывает  имя  модуля  и  заголовок

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

выводного файла листинга.

     Формат директивы:

     .TITLE имя_модуля [заголовок_листинга]

где  имя_модуля - набор символов (до 31 символа),  который

появляется в об'ектном модуле в качестве имени модуля;

     Заголовок_листинга - текст, используемый в  заголовке

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

после имени модуля, максимальная длина текста - 28  симво-

лов. Восклицательный знак в этих  28  символах  трактуется

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

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

     Пример.

    .TITLE      SAMPLE ERROR AND WARNING MESSAGES

    .IDENT      'VERSION 4.00'

    .FACILITY   SAMPLE,1/PREFIX=ABC_

    .SEVERITY   ERROR

    UNRECOG     <UNRECOGNIZED KEYWORD !AS>/FAO_COUNT=1

    AMBIG       <AMBIGUOUS KEYWORD>

    .SEVERITY   WARNING

    .BASE       10

    SYNTAX      <INVALID SYNTAX IN KEYWORD>

    .END

     Имя об'ектного модуля, полученного из исходного файла

сообщений, будет "SAMPLE", и заголовок выводного  листинга

будет определен как "еRROR AND WARNING MESSAGES".




                          - 39 -

                      00152-01 92 10




     2.6.3. Примеры использования команды MESSAGE





     2.6.3.1. Создание выполняемого образа, содержащего

данные сообщения



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

держащего сообщения из исходного файла сообщений.

     Исходный  файл   сообщений   TESTMSG.MSG,   созданный

текстовым редактором, содержит строки:

     .FACILITY  TEST,1/PREFIX=MSG_

     .SEVERITY  ERROR

     SYNTAX     <SYNTAX ERROR IN STRING '!AS'>/FAO=1

     ERROR      <ERRORS ENCOUNTERED DURING PROCESSING>

     .END

     Исходный файл сообщений компилируется по команде:

     $MESSAGE TESTMSG

     Исходный файл TEST.FOR компилируется по команде:

     $FORTRAN TEST

     Об'ектный модуль сообщений  TESTMSG.OBJ   компонуется

вместе с об'ектным модулем  TEST.OBJ по команде:

     $LINK/NOTRACE TEST+TESTMSG

     Образ к выполнeнию вызывается по команде:

     $RUN TEST

     Если при выполнении программы обнаружены ошибки,  вы-

водятся сообщения:

     %TEST-E-SYNTAX, SYNTAX ERROR IN STRING ABC

     %TEST-E-ERRORS, ERRORS ENCOUNTERED DURING PROCESSING


                          - 40 -

                      00152-01 92 10




     2.6.3.2. Создание выполняемого образа, содержащего

указатель



     Пример создания выполняемого образа, содержащего ука-

затель на невыполняемый файл сообщений.

     Исходный файл  сообщений  COBOLMSG  компилируется  по

команде:

     $МESSAGE/NOSYMBOLS COBOLMSG

     Об'ектный модуль COBOLMSG.OBJ для создания невыполня-

емого файла сообщений COBOLMF.EXE компонуется по команде:

     $LINK/SNAREABLE=SYS$MESSAGE:COBOLMF COBOLMSG.OBJ

     Об'ектный модуль указателя MESPNTR.OBJ,  который  со-

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

COBOLMF.EXE, создается по команде:

     $MESSAGE/FILE_NAME=COBOLMF /OBJECT=MESPNTR COBOLMSG

     Об'ектный модуль указателя MESPNTR.OBJ компонуется  с

об'ектным модулем COBOLCODE.OBJ  по команде:

     $LINK COBOLCODE,MESPNTR

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

     $RUN GOBOLCODE

     Если при выполнении программы обнаружены ошибки,  вы-

водятся сообщения, определенные в исходном файле сообщений

COBOLMSG.MSG.


                          - 41 -

                      00152-01 92 10


               3. Сообщения программы MESSAGE



     Сообщения, выдаваемые программой  MESSAGE,  выводятся

на  терминал.  Сообщения  сопровождаются   пояснениями   и

действиями по восстановлению. В ответ на сообщения необхо-

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

сообщения об ошибках и действия по восстановлению приведе-

ны в [1], [2], [3].


                          - 42 -

                      00152-01 92 10


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



     1. Операционная система МОС ВП.  Подсистема  управле-

ния. Сообщения системы и действия по восстановлению. Спра-

вочный материал 00152-01 97 02-1

     2. Операционная система МОС ВП.  Подсистема  управле-

ния. Сообщения системы и действия по восстановлению. Спра-

вочный материал 00152-01 97 02-2

     3. Операционная система МОС ВП.  Подсистема  управле-

ния. Сообщения системы и действия по восстановлению. Спра-

вочный материал 00152-01 97 02-3


                          - 43K -

                      00152-01 92 10

   ------------------------------------------------------------
   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
              
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!