Перейти до вмісту
ГОСТ 22558-89
/ 116

Сам оператор USE (ИСПОЛЬЗОВАТЬ) никогда не выпол­няется; он только определяет условия, вызывающие выполнение указанных после него процедур.

Появление имени-файла-1 в операторе LISE (ИСПОЛЬЗО­ВАТЬ) не может требовать одновременного выполнения более чем одной процедуры USE (ИСПОЛЬЗОВАТЬ).

Слова ERROR и EXCEPTION являются синонимами.

Файлы, на которые имеются явные или неявные ссылки в операторе USE (ИСПОЛЬЗОВАТЬ), могут иметь различную ор­ганизацию или доступ.

Каждый из вариантов OUTPUT (ВЫХОДНЫХ) или EXTEND (ДОПОЛНЯЕМЫХ) может указываться только один раз в декларативной части раздела процедур.

Общие правила

Декларативные процедуры могут быть включены в любую исходную Кобол-программу, независимо от того, содержит ли эта программа другую программу или сама содержится в другой про­грамме. Декларатива вызывается тогда, когда во время выполне­ния программы выполняются условия, описанные в операторе USE (ИСПОЛЬЗОВАТЬ), предшествующем декларативе. Только одна декларатива внутри отдельно скомпилированной программы, со­держащей оператор, который вызвал уточняющее условие, вызы­вается тогда, когда во время выполнения программы возникает какое-либо из условий, описанных в операторе USE (ИСПОЛЬЗО­ВАТЬ), предшествующем декларативе. Если не существует уточ­няющей декларативы в отдельно скомпилированной программе, то декларатива нс выполняется.

J2) Внутри декларативной процедуры не должно быть обраще­ний к каким-либо процедурам в недекларативной части раздела процедур.

К именам процедур, связанным с оператором USE (ИС­ПОЛЬЗОВАТЬ), могут быть обращения в другой декларативной секции или в недекларативной процедуре только посредством опе­ратора PERFORM (ВЫПОЛНИТЬ).

Когда имя-файла-1 указано явно, то к имени-файла-1 не применяется никакой другой оператор USE (ИСПОЛЬЗОВАТЬ).

Процедуры, связанные с оператором USE (ИСПОЛЬЗО­ВАТЬ), выполняются системой управления вводом-выводом после завершения стандартной программы обработки ошибки ввода-вы­вода при неуспешном выполнении операции ввода-вывода, за ис­ключением того, что вариант AT END (В КОНЦЕ) имеет стар­шинство. При выполнении процедур соблюдаются следующие пра­вила:

если указано имя-файла-1, то выполняется соответствующая процедура при возникновении условия, описанного в операторе USE (ИСПОЛЬЗОВАТЬ);

если указано OUTPUT (ВЫХОДНЫХ) то соответствующая процедура выполняется при возникновении условия, описанного в операторе USE (ИСПОЛЬЗОВАТЬ) для любого файла, открыто­го как OUTPUT (ВЫХОДНОЙ) или же находящегося в процессе открытия в режиме вывода, за исключением файлов, ссылка на которые посредством имени-файла-1 имеется в другом операторе USE (ИСПОЛЬЗОВАТЬ), описывающем такое же условие;

если указано EXTEND (ДОПОЛНЯЕМЫХ), то соответству­ющая процедура выполняется при возникновении условия, описан­ного в операторе USE (ИСПОЛЬЗОВАТЬ), для любого файла, от­крытого как EXTEND (ДОПОЛНЯЕМЫЙ) или находящегося в процессе открытия в режиме дополнения, за исключением файлов, ссылки на которые посредством пмени-файла-1 имеются в другом ■672

операторе USE (ИСПОЛЬЗОВАТЬ), описывающем такое же ус­ловие.

После выполнения процедуры, связанной с оператором USE (ИСПОЛЬЗОВАТЬ), управление передается вызывающей программе в системе управления вводом-выводом.

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

Внутри процедуры, связанной с оператором USE (ИС­ПОЛЬЗОВАТЬ), не должны выполняться никакие операторы, ко­торые могут потребовать выполнение процедуры, связанной с дру­гим оператором USE (ИСПОЛЬЗОВАТЬ), вызванной ранее и еще не вернувшей управление вызвавшей ее программе.

4.9. Оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ)

Назначение

Оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ) указывает операторы раздела процедур, которые вы­полняются непосредственно перед представлением группы отчета, описанной в секции отчетов раздела процедур.

Общий формат

USE BEFORE REPORTING идентификатор-1

ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ идентификатор-1

Синтаксические правила

Оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ), если он указан, должен непосредственно следо­вать за заголовком секции в декларативной части раздела проце­дур и должен быть единственным в предложении. Остальная часть секции должна состоять из нуля, одного или нескольких парагра­фов, определяющих подлежащие использованию процедуры.

Идентификатор-1 должен относиться к группе отчета. Иден* тификатор-1 не должен появляться более чем в одном операторе USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ).

Операторы GENERATE (ГЕНЕРИРОВАТЬ), INITIATE (НАЧАТЬ) или TERMINATE (ЗАКОНЧИТЬ) не должны появ­ляться в процедуре USE BEFORE REPORTING (ИСПОЛЬЗО­ВАТЬ ДО ВЫДАЧИ).

Оператор PERFORM (ВЫПОЛНИТЬ) в процедуре, относя­щейся к оператору USE BEFORE REPORTING (ИСПОЛЬЗО­ВАТЬ ДО ВЫДАЧИ), не должен иметь в своей области действия операторы GENERATE (ГЕНЕРИРОВАТЬ), INITIATE (НА­ЧАТЬ) или TERMINATE (ЗАКОНЧИТЬ).

Процедура, связанная с оператором USE BEFORE REPOR­TING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ), не должна изменять значений ни одного из управляющих данных.

Оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ) сам не выполняется, он только определяет условия, которые вызывают выполнение связанной с ним процедуры.

Общие правила

Декларативные процедуры могут быть включены в любую исходную Кобол-программу, независимо от того, содержит ли она другую программу или сама содержится в другой программе. Дек- ларатива вызывается непосредственно перед представлением наз­ванной группы отчета во время выполнения программы. Группа отчета указывается идентификатором-1 в операторе USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ), предшествую­щем процедуре.

Внутри декларативной процедуры не должно быть обра­щений к каким-либо недекларативным процедурам.

К именам-процедур, связанным с оператором USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ), могут быть об­ращения в другой декларативной секции или в недекларативной процедуре только посредством оператора PERFORM (ВЫПОЛ­НИТЬ).

В операторе USE BEFORE REPORTING (ИСПОЛЬЗО­ВАТЬ ДО ВЫДАЧИ) указанные процедуры выполняются систе­мой управления генератором отчетов непосредственно перед пред­ставлением названной группы отчета (см. п. 3.20 настоящей части).

Внутри процедуры, связанной с оператором USE (ИС­ПОЛЬЗОВАТЬ), не должны выполняться никакие операторы, ко­торые могут потребовать выполнение процедуры, связанной с дру­гим оператором USE (ИСПОЛЬЗОВАТЬ), вызванной ранее и еще не вернувшей управление вызвавшей ее программе.

Часть 14. МОДУЛЬ КОММУНИКАЦИЙ

ВВЕДЕНИЕ В МОДУЛЬ КОММУНИКАЦИИ

Назначение

Модуль коммуникаций обеспечивает возможность получения, обработки и создания сообщений или их частей. Он позволяет с помощью системы управления сообщениями связываться с комму­никационными устройствами.

Характеристика уровней

Уровень 1 коммуникаций обеспечивает ограниченные возмож­ности для статьи описания коммуникации. В разделе процедур уро­вень 1 обеспечивает ограниченные возможности операторов RECE­IVE (ПОЛУЧИТЬ) и SEND (ПОСЛАТЬ) и полные возможности

оператора ACCEPT MESSAGE COUNT (ПРИНЯТЬ ЧИСЛО СО­ОБЩЕНИЙ).

Уровень 2 коммуникаций обеспечивает полные возможности для статьи описания коммуникации. В разделе процедур уро­вень 2 обеспечивает полные возможности операторов ACCEPT MESSAGE COUNT (ПРИНЯТЬ ЧИСЛО СООБЩЕНИЙ), DISABLE (ЗАПРЕТИТЬ), ENABLE (РАЗРЕШИТЬ), PURGE (ОЧИСТИТЬ), RECEIVE (ПОЛУЧИТЬ), SEND (ПОСЛАТЬ).

РАЗДЕЛ ДАННЫХ В МОДУЛЕ КОММУНИКАЦИЙ

Секция коммуникаций

Секция коммуникаций находится в разделе данных исходной программы. Секция коммуникаций описывает элементы данных ис­ходной программы, которые будут использованы для интерфейса между системой управления сообщениями и программой. Эта об­ласть интерфейса определяется статьей описания коммуникации. За статьей описания коммуникации может следовать одна или не­сколько статей описания записей или не следовать ни одной.

Общий формат секции коммуникаций показан ниже:

COMMUNICATION SECTION.

[статья-описания-коммуникации [статья-описания-записи] . .. ] ... СЕКЦИЯ КОММУНИКАЦИЙ.

[статья-описания-коммуникации

[статья-описания-записи] . . . ] ...

Статья описания коммуникации

В программе на Коболе статья описания коммуникации пред­ставляет собой высший уровень организации в секции коммуника­ций. За заголовком секции коммуникаций следует статья описания коммуникации, содержащая индикатор уровня CD (ОК), имя-дан- ного и последовательность независимых фраз. Статья заканчива­ется точкой.

Для статьи описания коммуникации для ввода фразы указыва­ют очереди [ и подочереди , дату и время сообщения, символи­ческий источник, длину текста, ключи состояния и конца, число со­общений. Для статьи описания коммуникации для вывода фразы указывают число адресатов, длину текста, ключи состояния и ошиб­ки, символические адресаты.

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

Структура описания записи

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

Описание записи состоит из набора статей описания данных, которые описывают характеристики отдельной записи. Каждая статья описания данного состоит из номера уровня, имени данного или фразы FILLER (ЗАПОЛНИТЕЛЬ), и следующей за ними пос­ледовательности независимых фраз. Описание записи может иметь иерархическую структуру, поэтому используемые в статье фразы зависят от наличия подчиненных статей. Структура описания запи­си и допустимые элементы в статье описания записи приводятся в ч. 4, пп. 4.3.1.3 и 5.3. Употребление отдельных фраз в статье описа­ния данного зависит от уровня модуля ядра, поддерживаемого реа­лизацией.

. Статья описания коммуникации

Назначение

Описание коммуникации определяет область связи между сис­темой управления сообщениями и программой Кобола.

Общий формат

Формат 1

СР имя-коммуникации-1 FOR [INITIAL] INPUT

[[SYMBOLIC QUEUE IS имя-данного-1]

[SYMBOLIC SUB-QUEUE-1 IS имя-данного-2]

[SYMBOLIC SUB-QUEUE-2 IS имя-данного-3]

[SYMBOLIC SUB-QUEUE-3 IS имя-данного-4]

[MESSAGE DATE IS имя-данного-5]

[MESSAGE TIME IS имя-данного-6]

[SYMBOLIC SOURCE IS имя-данного-7]

[TEXT LENGTH IS имя-данного-8](

[END KEY IS имя-данного-9]

[STATUS KEY IS имя-данного-10]

[MESSAGE COUNT IS имя-данного-11] ]

[имя-данного-1, имя-данного-2, имя-данного-3, имя-данного-4 имя-данного-5, имя-данного-6, имя-данного-7, имя-данного-8, имя-данного-9, имя-данного-10, имя-данного-11]

ОК имя-коммуникации-1 ДЛЯ [НАЧАЛЬНОГО] ВВОДА

[ [СИМВОЛИЧЕСКАЯ ОЧЕРЕДЬ имя-данного-1]

[СИМВОЛИЧЕСКАЯ ПОДОЧЕРЕДЬ-1 имя-данного-2] [СИМВОЛИЧЕСКАЯ ПОДОЧЕРЕДЬ-2 имя-данного-3] [СИМВОЛИЧЕСКАЯ ПОДОЧЕРЕДЬ-3 имя-данного-4] г

[ДАТА СООБЩЕНИЯ имя-данного-5]

[ВРЕМЯ СООБЩЕНИЯ имя-данного-6]

[СИМВОЛИЧЕСКИЙ ИСТОЧНИК имя-данного-7]

[ДЛИНА ТЕКСТА имя-данного-8]

[КЛЮЧ КОНЦА имя-данного-9]

[КЛЮЧ СОСТОЯНИЯ имя-данного-10]

[ЧИСЛО СООБЩЕНИЙ имя-данного-11] ]:

[имя-данного-i, имя-данного-2, имя-данного-3, имя-данного-4, имя-данного-5, имя-данного-6, имя-данного-7, имя-данного-8, имя-данного-9, имя-данного-10, имя-данного-11]

Формат 2

CD имя-коммуникации-1 FOR OUTPUT

[DESTINATION COUNT IS имя-данного-1]

[TEXT LENGTH IS имя-данного-2]

[STATUS KEY IS имя-данного-3]:

[DESTINATION TABLE OCCURS целое-1 TIMES

[INDEXED BY {имя-индекса-1}... ] ]

[ERROR KEY IS имя-данного-4]

[SYMBOLIC DESTINATION IS имя-данного-5].

ОК имя-коммуникации-1 ДЛЯ ВЫВОДА

[ЧИСЛО АДРЕСАТОВ имя-да иного-1]

[ДЛИНА ТЕКСТА имя-данного-2]

[КЛЮЧ СОСТОЯНИЯ имя-данного-3]

[ТАБЛИЦА АДРЕСАТОВ ПОВТОРЯЕТСЯ целое-1 РАЗ

[ИНДЕКСИРУЕТСЯ {имя-индекса-1}... ] ] і

ф с

[КЛЮЧ ОШИБКИ имя-данного-4]

[СИМВОЛИЧЕСКИЙ АДРЕСАТ имя-данного-5].

ормат 3

D имя-коммуникации-1 FOR [INITIAL] 1-0

[[MESSAGE DATE IS имя-данного-І]

[MESSAGE TIME IS имя-данного-2]

[SYMBOLIC TERMINAL IS имя-данного-3]

[TEXT LENGTH IS имя-данного-4]

[END KEY IS имя-данного-5]

[STATUS KEY IS имя-данного-6]]

[имя-данного-1, имя-данного-2, имя-данного-3, имя-данного-4, имя-данного-5, имя-данного-6]

01

< имя-коммуникации-1 ДЛЯ НАЧАЛЬНОГО ВВОДА-ВЫВОДА

" [ [ДАТА СООБЩЕНИЯ имя-данного-1 ]

[ВРЕМЯ СООБЩЕНИЯ имя-данного-2]

[СИМВОЛИЧЕСКИЙ ТЕРМИНАЛ имя-данного-3]

[ДЛИНА ТЕКСТА имя-данного-4]

[КЛЮЧ КОНЦА имя-данного-5]

[КЛЮЧ СОСТОЯНИЯ имя-данного-6] ]

[имя-данного-1 имя-данного-2, имя-данного-3, имя-данного-4, имя-данного-5, имя-данного-6]

Синтаксические правила

Все форматы

Статья CD (ОК) может появиться только в секции комму­никаций.

Форматы 1 и 3

В пределах одной программы фраза INITIAL (НА­ЧАЛЬНОГО) может быть указана только в одной статье описа­ния коммуникации. Эта фраза не может использоваться в про­грамме, для которой в заголовке раздела процедур указан ва­риант USING (ИСПОЛЬЗУЯ).

Кроме фразы INITIAL (НАЧАЛЬНОГО), все фразы могут быть написаны в любом порядке.

Если ни одна из фраз в формате не указана, за статьей описания коммуникации CD (ОК) должна следовать статья уров­ня 01 описания данного. В любом случае за статьей CD (ОК) мо­жет следовать статья уровня 01 описания данного.

Формат 1

Статьи описания записей, следующие за CD (ОК) для вво­да, неявно переопределяют эту запись и должны описывать запись из 87 литер. Допускается неоднократное переопределение этой записи. Однако фразу VALUE (ЗНАЧЕНИЕ) может содержать только первое переопределение. Система управления сообщениями будет всегда обращаться к записи в соответствии с описаниями данных, определенными в общем правиле 2 (см. ч. 6, п. 5.15).

Побачили розбіжність з офіційним текстом?

Повідомити про неточність

Напишіть, що саме розходиться з офіційною публікацією. Код документа вкажіть у повідомленні — так ми швидше знайдемо потрібне місце.

Перейти до форми зворотного зв'язку

Дивіться також

Весь розділ →