если имеет место переполнение частного и указана фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ), значение остатка не определено. При этом значения данных, определяемых идентификатором-3 и идентификатором-4, остаются неизменными;
если имеет место переполнение остатка и указана фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ), значение данного, представленного идентификатором-4, не меняется. При наличии нескольких результатов пользователь должен сам определить, какая именно ситуация встретилась.
Дополнительные правила и объяснения, относящиеся к этому оператору, приводятся в соответствующих параграфах (см. ч. 4, п. 6.4.3 , а также ч. 6, пп. 6.4.1, 6.4.2, 6.4.4—6.4.6)|.
Оператор ENTER (ВОЙТИ)
Назначение
Оператор ENTER (ВОЙТИ) обеспечивает возможность использования в одной и той же программе нескольких языков программирования.
Оператор ENTER (ВОЙТИ) является устаревшим элементом в этом стандарте и будет удален из следующей редакции стандарта.
Общий формат
ENTER имя-языка-1 [имя-программного-модуля-1].
ВОЙТИ В имя-языка-1 [имя-программного-модуля-1].
С и н т а к с и ч е с к и е правила
Имя-языка может относиться к любому из языков программирования, определенных реализацией как языки, в которые можно войти через Кобол. Имя-языка-1 определяется реализацией.
Имя-программного-модуля-1 является словом Кобола, к которому можно обращаться только в операторе ENTER (ВОЙТИ).
После последнего оператора другого языка должно следовать предложение ENTER COBOL (ВОЙТИ В КОБОЛ), указывающее компилятору точку возврата в исходную Кобол-программу.
Общие правила
Операторы другого языка выполняются в объектной программе так, как если бы они компилировались в объектную программу вслед за оператором ENTER (ВОЙТИ).
Все детали записи в других языках определяются реализацией.
Если операторы языка, указанного именем-языка, не могут быть записаны непосредственно вслед за оператором ENTER (ВОЙТИ), то имя-программного-модуля указывает порцию программы в этом языке, выполняемую в данном месте программы. Если указанные операторы могут быть приведены непосредственно, имя-программного-модуля-1 не указывается.
Оператор EVALUATE (ОЦЕНИТЬ)
Н а з н а ч е н и е
Оператор EVALUATE (ОЦЕНИТЬ) описывает структуры со многими ветвлениями и соединениями. Он может вызывать оценку нескольких условий. Соответствующие действия объектной программы зависят от результатов этих оценок
.
6.13.2. Общи й формат идентификатор-1 литерал-1
EVALUATE / выражение-1 1 TRUE
FALSE
{{WHEN
ANY условие-1 TRUE FALSE
идентификатор-3 ' литерал-3 арифметическое- выражение-1
ALSO
идентификатор-2
литерал-2 выражение-2 TRUE
FALSE
[NOT]
идентификатор-4 литерал-4 арифметическое- выражение-2
[ALSO
ANY условие-2 TRUE FALSE
[NOT]
идентификатор-5 литерал-5 арифметическое- выражение-3
идентификатор-6 литерал-6 арифметическое- выражение^
(THROUGH
I THRU
(THROUGH [THRU
повелительный-оператор-1}...
[WHEN OTHER повелительный-оператор-2] [END-EVALUATE]
и
ТАКЖЕ
ОЦЕНИТЬ
дентификатор-1 литерал-1 выражение-1 ИСТИНА ЛОЖЬидентификатор-2 литерал-2 выражение-2 ИСТИНА ЛОЖЬ
{{КОГДА
ЛЮБОЕ условие-1 ИСТИНА ЛОЖЬ
идентификатор-4 литерал-4 арифметическое- выражение-2
идентификатор-3 литерал-3 арифметическое- выражение-1
[HEJ
[ТАКЖЕ
ЛЮБОЕ
условие-2
ИСТИНА
ЛОЖЬ
[НЕ]
идентификатор-5 литерал-5 арифметическое- выражение-3
ПО
идентификатор-6 литерал-6 арифметическое- выражение-4
повелительный-оператор-1} . . .
[ИНАЧЕ повелительный-оператор-2]
[КОНЕЦ-ОЦЕНИТЬ]
С и н т а к с и ч е с к и е правила
Каждый из операндов или слов TRUE (ИСТИНА) и FALSE (ЛОЖЬ), заданных перед первой фразой WHEN КОГДА) оператора EVALUATE (ОЦЕНИТЬ), является субъектом выбора, а все вместе — множеством субъектов выбора.
Каждый из операндов или слов TRUE (ИСТИНА), FALSE (ЛОЖЬ), и ANY (ЛЮБОЕ), заданные во фразе WHEN (КОГДА) оператора EVALUATE (ОЦЕНИТЬ), рассматриваются от отдельности как объект выбора, а указанные вместе в одной фразе WHEN (КОГДА)—как множество объектов выбора.
Слова THROUGH и THRU эквивалентны.
Оба операнда одной фразы THROUGH (ПО) должны быть одного и того же класса. Связанные таким образом два операнда составляют один объект выбора.
Количество объектов выбора в каждом множестве объектов выбора должно быть равно количеству субъектов выбора.
Каждый объект выбора в множестве объектов выбора должен соответствовать субъекту выбора, имеющему ту же порядковую позицию во множестве субъектов выбора, согласно следующим правилам:
идентификаторы, литералы или арифметические выражения, встречающиеся в объектах выбора, должны быть правильными операндами для сравнения с соответствующими операндами во множестве субъектов выбора (см. п. 6.3.11 настоящей части);
условие-1, условие-2 или слова TRUE (ИСТИНА) или FALSE (ЛОЖЬ), заданные как объекты выбора, должны соответствовать условным выражениям или словам TRUE (ИСТИНА) или FALSE (ЛОЖЬ) во множестве субъектов выбора;
слово ANY (ЛЮБОЕ) может соответствовать субъекту выбора любого типа.
Общие правила
Оператор EVALUATE (ОЦЕНИТЬ) действует так, как если бы все объекты и субъекты выбора были вычислены и получили бы числовые или нечисловые значения, или значения диапазонов числовых или нечисловых значений, или значений истинности. Эти значения определяются следующим образом:
любому субъекту выбора, заданному идентификатором-1, идентификатором-2, и любому объекту выбора, заданному идентификатором-3, идентификатором-5, не содержащему фраз NOT (НЕ) или THRU (ПО), присваивается значение и класс данного, на который ссылается идентификатор;
любому субъекту выбора, заданному литералом-1, литералом-2, и любому объекту выбора, заданному литералом-3, литералом-5 и не содержащему фраз NOT (НЕ) или THRU (ПО), присваивается значение и класс соответствующего литерала. Если литерал-2, литерал-5 является стандартной константой ZERO (НУЛЬ), ему присваивается класс соответствующего субъекта выбора;
любому субъекту выбора, заданному арифметическим выражением выражение-1, выражение-2, и любому объекту выбора без фраз NOT (НЕ) и THRU (ПО), представленному ариф- метическим-выражением-1, арифметическим-выражением-3, присваивается числовое значение в соответствии с правилами вычисления арифметических выражений (см. п. 6.2 настоящей части);
любому субъекту выбора, в котором выражение-1, выражение-2 являются условными выражениями, и любому объекту выбора, в котором заданы условие-1, условие-2, присваивается значение истинности в соответствии с правилами вычисления условных выражений (см. п. 6.3 настоящей части);
любому субъекту выбора и любому объекту выбора, заданному словами TRUE (ИСТИНА) или FALSE (ЛОЖЬ), присваивается значение истинности. Значение истинности «истина» присваивается элементам, для которых задано слово TRUE (ИСТИНА) и значение истинности «ложь» присваивается элементам, для которых задано слово FALSE (ЛОЖЬ);
любой объект выбора, заданный словом ANY (ЛЮБОЕ), далее не вычисляется;
если фраза THRU (ПО) задана для объекта выбора без фразы NOT (НЕ), диапазон значений включает все допустимые значения субъекта выбора, которые больше или равны первому операнду и меньше или равны второму в соответствии с правилами сравнения (см. п. 6.3.1.1 настоящей части);
если для объекта выбора задана фраза NOT (НЕ), значениями, соответствующими этому элементу, являются все допустимые значения субъекта выбора, не равные значению или не содержащиеся в диапазоне значений, которые соответствовали бы элементу, если бы не была задана фраза NOT (НЕ).
(2) Далее выполнение оператора EVALUATE (ОЦЕНИТЬ) производится так, как если бы значения, присвоенные субъектам и объектам выбора, сравнивались, чтобы определить, удовлетворяют ли значения субъектов условиям, указанным соответствующими фразами WHEN (КОГДА). Это сравнение производится следующим образом:
а) каждый объект выбора из множества объектов выбора первой фразы WHEN (КОГДА) сравнивается с субъектом выбора, имеющим тот же порядковый номер во множестве субъектов выбора. Чтобы сравнение было удовлетворено, должно выполняться одно из следующих условий:
если сравниваемым элементам присваиваются числовые или нечисловые значения или диапазоны числовых или нечисловых значений, сравнение удовлетворяется, если в соответствии с правилами сравнения значение или одно из значений из диапазона, присвоенного объекту выбора, равно значению, присвоенному субъекту выбора (см. п. 6.3.1.1 настоящей части);
если сравниваемым элементам присваиваются значения истинности, сравнение удовлетворяется, если сравниваемым элементам соответствуют одинаковые значения истинности;
если сравниваемый объект выбора задан словом ANY (ЛЮБОЕ), сравнение удовлетворяется всегда, независимо от значения субъекта выбора;
если выше указанное сравнение удовлетворяется для каждого объекта выбора в сравниваемом множестве объектов выбора, фраза WHEN (КОГДА), содержащая это множество, считается удовлетворяющей множеству субъектов выбора;
если вышеуказанное сравнение не удовлетворяется для одного или более объектов выбора из сравниваемого множества объектов, это множество не удовлетворяет множеству субъектов выбора;
эти действия повторяются для множеств объектов выбора в том порядке, в котором эти множества задаются в исходной программе, до тех пор, пока либо встретится фраза WHEN (КОГДА), удовлетворяющая множеству субъектов выбора, либо будут исчерпаны все множества объектов выбора.
(3) После завершения операции сравнения, выполнение оператора EVALUATE (ОЦЕНИТЬ) продолжается следующим образом:
если выбрана некоторая фраза WHEN (КОГДА), начинается выполнение повелительного-оператора-1, следующего за этой фразой;
если ни одна фраза WHEN (КОГДА) не выбрана и задана фраза WHEN OTHER (ИНАЧЕ), выполнение продолжается с повелительного-оператора-2;
выполнение оператора EVALUATE (ОЦЕНИТЬ) завершается, когда выполнение достигает или конца повелительного- оператора-1 выбранной фразы WHEN (КОГДА), или конца повелительного-оператора-2, или если нет выбранной фразы WHEN (КОГДА), а фраза WHEN OTHER (ИНАЧЕ) не указана (см. ч. 4, п. 6.4.3)
.
Оператор EXIT (ВЫЙТИ)
Назначение
Оператор EXIT (ВЫЙТИ) обеспечивает общую точку выхода для ряда процедур.
Общий формат
EXIT.
ВЫЙТИ.
С и н т а к с и ч е с к о е правило
Оператор EXIT (ВЫЙТИ) должен составлять предложение, не содержащее других операторов, и быть единственным в параграфе.
Общее правило
Оператор EXIT (ВЫЙТИ) служит для того, чтобы поставить в соответствие данной точке программы имя-процедуры. Оператор EXIT (ВЫЙТИ) не оказывает другого действия на компиляцию или выполнение программы.
Оператор GO ТО (ПЕРЕЙТИ)
Назначение
Оператор GO ТО (ПЕРЕЙТИ) приводит к передаче управления от одной точки раздела процедур к другой. Необязательность имени-процедуры-1 в формате 1 оператора GO ТО (ПЕРЕЙТИ) в данном стандарте является устаревшей и поэтому будет устранена в следующей редакции стандарта.
О
имя-процедуры-1
ПЕРЕЙТИ К
1 _
имя-процедуры-1 ]
Формат _GO ТО Y
бщий форматФормат 2
GO ТО {имя-процедуры-1}... DEPENDING ON идентификатор-1
ПЕРЕЙТИ К {имя-процедуры-1}... В ЗАВИСИМОСТИ
ОТ идентификатор-1
С и н т а к с и ч е с к и е правила
Идентификатор-1 представляет числовое элементарное данное, описанное как целое.
Если к параграфу, содержащему оператор GO ТО (ПЕРЕЙТИ), имеется обращение в операторе ALTER (ИЗМЕНИТЬ), то параграф может состоять только из заголовка параграфа, за которым следует единственный оператор GO ТО (ПЕРЕЙТИ) в формате-1.С. 334 ГОСТ 22558—89
Формат 1 оператора GO ТО (ПЕРЕЙТИ) без имени-про- цедуры-1 разрешен только в параграфе, содержащем этот единственный оператор.
Если оператор GO ТО (ПЕРЕЙТИ), представленный форматом 1, появляется в последовательности повелительных операторов внутри предложения, он должен быть последним оператором в этой последовательности.
Общие правила
При выполнении оператора GO ТО (ПЕРЕЙТИ), представленного форматом 1, управление передается указанному имени- процедуры-1.
Если имя-процедуры в формате 1 не определено, то оператор ALTER (ИЗМЕНИТЬ), ссылающийся на оператор GO ТО (ПЕРЕЙТИ), должен быть выполнен до выполнения оператора GO ТО (ПЕРЕЙТИ).
При выполнении оператора GO ТО (ПЕРЕЙТИ), представленного форматом 2, управление передается той из указанных в списке процедур, названных именем-процедуры-1, порядковый номер которой совпадает со значением идентификатора. Если значение идентификатора не равно одному из целых положительных (или без знака) 1,2, ..., и, то управление передается следующему оператору.