ГОСТ 22558-89 сторінка 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 REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ), не должна изменять значений ни одного из управляющих данных.
Оператор USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ) сам не выполняется, он только определяет условия, которые вызывают выполнение связанной с ним процедуры.
Общие правила
Декларативные процедуры могут быть включены в любую исходную Кобол-программу, независимо от того, содержит ли она другую программу или сама содержится в другой программе. Дек- ларатива вызывается непосредственно перед представлением названной группы отчета во время выполнения программы. Группа отчета указывается идентификатором-1 в операторе USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ), предшествующем процедуре.
Внутри декларативной процедуры не должно быть обращений к каким-либо недекларативным процедурам.
К именам-процедур, связанным с оператором USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ), могут быть обращения в другой декларативной секции или в недекларативной процедуре только посредством оператора PERFORM (ВЫПОЛНИТЬ).
В операторе USE BEFORE REPORTING (ИСПОЛЬЗОВАТЬ ДО ВЫДАЧИ) указанные процедуры выполняются системой управления генератором отчетов непосредственно перед представлением названной группы отчета (см. п. 3.20 настоящей части).
Внутри процедуры, связанной с оператором USE (ИСПОЛЬЗОВАТЬ), не должны выполняться никакие операторы, которые могут потребовать выполнение процедуры, связанной с другим оператором USE (ИСПОЛЬЗОВАТЬ), вызванной ранее и еще не вернувшей управление вызвавшей ее программе.
Часть 14. МОДУЛЬ КОММУНИКАЦИЙ
ВВЕДЕНИЕ В МОДУЛЬ КОММУНИКАЦИИ
Назначение
Модуль коммуникаций обеспечивает возможность получения, обработки и создания сообщений или их частей. Он позволяет с помощью системы управления сообщениями связываться с коммуникационными устройствами.
Характеристика уровней
Уровень 1 коммуникаций обеспечивает ограниченные возможности для статьи описания коммуникации. В разделе процедур уровень 1 обеспечивает ограниченные возможности операторов RECEIVE (ПОЛУЧИТЬ) и 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).
Побачили розбіжність з офіційним текстом?