1. если имеет место переполнение частного и указана фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ), значение остат­ка не определено. При этом значения данных, определяемых идентификатором-3 и идентификатором-4, остаются неизмен­ными;

  2. если имеет место переполнение остатка и указана фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ), значение данно­го, представленного идентификатором-4, не меняется. При на­личии нескольких результатов пользователь должен сам опре­делить, какая именно ситуация встретилась.

  1. Дополнительные правила и объяснения, относящиеся к это­му оператору, приводятся в соответствующих параграфах (см. ч. 4, п. 6.4.3 , а также ч. 6, пп. 6.4.1, 6.4.2, 6.4.4—6.4.6)|.

  1. Оператор ENTER (ВОЙТИ)

    1. Назначение

Оператор ENTER (ВОЙТИ) обеспечивает возможность исполь­зования в одной и той же программе нескольких языков програм­мирования.

Оператор ENTER (ВОЙТИ) является устаревшим элементом в этом стандарте и будет удален из следующей редакции стандарта.

  1. Общий формат

ENTER имя-языка-1 [имя-программного-модуля-1].

ВОЙТИ В имя-языка-1 [имя-программного-модуля-1].

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

  1. Имя-языка может относиться к любому из языков програм­мирования, определенных реализацией как языки, в которые мож­но войти через Кобол. Имя-языка-1 определяется реализацией.

  2. Имя-программного-модуля-1 является словом Кобола, к ко­торому можно обращаться только в операторе ENTER (ВОЙТИ).

  3. После последнего оператора другого языка должно следо­вать предложение ENTER COBOL (ВОЙТИ В КОБОЛ), указыва­ющее компилятору точку возврата в исходную Кобол-программу.

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

  1. Операторы другого языка выполняются в объектной прог­рамме так, как если бы они компилировались в объектную прог­рамму вслед за оператором ENTER (ВОЙТИ).

  2. Все детали записи в других языках определяются реализа­цией.

  3. Если операторы языка, указанного именем-языка, не могут быть записаны непосредственно вслед за оператором ENTER (ВОЙТИ), то имя-программного-модуля указывает порцию прог­раммы в этом языке, выполняемую в данном месте программы. Ес­ли указанные операторы могут быть приведены непосредственно, имя-программного-модуля-1 не указывается.

  1. Оператор EVALUATE (ОЦЕНИТЬ)

    1. Н а з н а ч е н и е

Оператор 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]

[КОНЕЦ-ОЦЕНИТЬ]

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

  1. Каждый из операндов или слов TRUE (ИСТИНА) и FALSE (ЛОЖЬ), заданных перед первой фразой WHEN КОГДА) оператора EVALUATE (ОЦЕНИТЬ), является субъ­ектом выбора, а все вместе — множеством субъектов выбора.

  2. Каждый из операндов или слов TRUE (ИСТИНА), FAL­SE (ЛОЖЬ), и ANY (ЛЮБОЕ), заданные во фразе WHEN (КОГДА) оператора EVALUATE (ОЦЕНИТЬ), рассматривают­ся от отдельности как объект выбора, а указанные вместе в од­ной фразе WHEN (КОГДА)—как множество объектов выбора.

  3. Слова THROUGH и THRU эквивалентны.

  4. Оба операнда одной фразы THROUGH (ПО) должны быть одного и того же класса. Связанные таким образом два операнда составляют один объект выбора.

  5. Количество объектов выбора в каждом множестве объ­ектов выбора должно быть равно количеству субъектов выбора.

  6. Каждый объект выбора в множестве объектов выбора должен соответствовать субъекту выбора, имеющему ту же по­рядковую позицию во множестве субъектов выбора, согласно следующим правилам:

  7. идентификаторы, литералы или арифметические выраже­ния, встречающиеся в объектах выбора, должны быть правиль­ными операндами для сравнения с соответствующими операнда­ми во множестве субъектов выбора (см. п. 6.3.11 настоящей части);

  8. условие-1, условие-2 или слова TRUE (ИСТИНА) или FALSE (ЛОЖЬ), заданные как объекты выбора, должны соот­ветствовать условным выражениям или словам TRUE (ИСТИ­НА) или FALSE (ЛОЖЬ) во множестве субъектов выбора;

  9. слово ANY (ЛЮБОЕ) может соответствовать субъекту выбора любого типа.

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

  1. Оператор EVALUATE (ОЦЕНИТЬ) действует так, как если бы все объекты и субъекты выбора были вычислены и по­лучили бы числовые или нечисловые значения, или значения диапазонов числовых или нечисловых значений, или значений истинности. Эти значения определяются следующим образом:

  1. любому субъекту выбора, заданному идентификатором-1, идентификатором-2, и любому объекту выбора, заданному иден­тификатором-3, идентификатором-5, не содержащему фраз NOT (НЕ) или THRU (ПО), присваивается значение и класс данно­го, на который ссылается идентификатор;

  2. любому субъекту выбора, заданному литералом-1, литера­лом-2, и любому объекту выбора, заданному литералом-3, ли­тералом-5 и не содержащему фраз NOT (НЕ) или THRU (ПО), присваивается значение и класс соответствующего литерала. Ес­ли литерал-2, литерал-5 является стандартной константой ZERO (НУЛЬ), ему присваивается класс соответствующего субъекта выбора;

  3. любому субъекту выбора, заданному арифметическим вы­ражением выражение-1, выражение-2, и любому объекту выбо­ра без фраз NOT (НЕ) и THRU (ПО), представленному ариф- метическим-выражением-1, арифметическим-выражением-3, при­сваивается числовое значение в соответствии с правилами вычисления арифметических выражений (см. п. 6.2 настоящей части);

  4. любому субъекту выбора, в котором выражение-1, выра­жение-2 являются условными выражениями, и любому объекту выбора, в котором заданы условие-1, условие-2, присваивается значение истинности в соответствии с правилами вычисления ус­ловных выражений (см. п. 6.3 настоящей части);

  5. любому субъекту выбора и любому объекту выбора, за­данному словами TRUE (ИСТИНА) или FALSE (ЛОЖЬ), при­сваивается значение истинности. Значение истинности «истина» присваивается элементам, для которых задано слово TRUE (ИС­ТИНА) и значение истинности «ложь» присваивается элементам, для которых задано слово FALSE (ЛОЖЬ);

  6. любой объект выбора, заданный словом ANY (ЛЮБОЕ), далее не вычисляется;

  7. если фраза THRU (ПО) задана для объекта выбора без фразы NOT (НЕ), диапазон значений включает все допустимые значения субъекта выбора, которые больше или равны первому операнду и меньше или равны второму в соответствии с прави­лами сравнения (см. п. 6.3.1.1 настоящей части);

  8. если для объекта выбора задана фраза NOT (НЕ), зна­чениями, соответствующими этому элементу, являются все до­пустимые значения субъекта выбора, не равные значению или не содержащиеся в диапазоне значений, которые соответствова­ли бы элементу, если бы не была задана фраза NOT (НЕ).

(2) Далее выполнение оператора EVALUATE (ОЦЕНИТЬ) производится так, как если бы значения, присвоенные субъектам и объектам выбора, сравнивались, чтобы определить, удовлетво­ряют ли значения субъектов условиям, указанным соответству­ющими фразами WHEN (КОГДА). Это сравнение производится следующим образом:

а) каждый объект выбора из множества объектов выбора первой фразы WHEN (КОГДА) сравнивается с субъектом вы­бора, имеющим тот же порядковый номер во множестве субъек­тов выбора. Чтобы сравнение было удовлетворено, должно вы­полняться одно из следующих условий:

  1. если сравниваемым элементам присваиваются числовые или нечисловые значения или диапазоны числовых или нечисло­вых значений, сравнение удовлетворяется, если в соответствии с правилами сравнения значение или одно из значений из диапа­зона, присвоенного объекту выбора, равно значению, присвоен­ному субъекту выбора (см. п. 6.3.1.1 настоящей части);

  2. если сравниваемым элементам присваиваются значения истинности, сравнение удовлетворяется, если сравниваемым эле­ментам соответствуют одинаковые значения истинности;

  3. если сравниваемый объект выбора задан словом ANY (ЛЮБОЕ), сравнение удовлетворяется всегда, независимо от значения субъекта выбора;

  1. если выше указанное сравнение удовлетворяется для каждого объекта выбора в сравниваемом множестве объектов выбора, фраза WHEN (КОГДА), содержащая это множество, считается удовлетворяющей множеству субъектов выбора;

  2. если вышеуказанное сравнение не удовлетворяется для одного или более объектов выбора из сравниваемого множества объектов, это множество не удовлетворяет множеству субъектов выбора;

  3. эти действия повторяются для множеств объектов выбора в том порядке, в котором эти множества задаются в исходной программе, до тех пор, пока либо встретится фраза WHEN (КОГДА), удовлетворяющая множеству субъектов выбора, ли­бо будут исчерпаны все множества объектов выбора.

(3) После завершения операции сравнения, выполнение опе­ратора EVALUATE (ОЦЕНИТЬ) продолжается следующим об­разом:

  1. если выбрана некоторая фраза WHEN (КОГДА), начина­ется выполнение повелительного-оператора-1, следующего за этой фразой;

  2. если ни одна фраза WHEN (КОГДА) не выбрана и зада­на фраза WHEN OTHER (ИНАЧЕ), выполнение продолжается с повелительного-оператора-2;

выполнение оператора EVALUATE (ОЦЕНИТЬ) завер­шается, когда выполнение достигает или конца повелительного- оператора-1 выбранной фразы WHEN (КОГДА), или конца по­велительного-оператора-2, или если нет выбранной фразы WHEN (КОГДА), а фраза WHEN OTHER (ИНАЧЕ) не указа­на (см. ч. 4, п. 6.4.3)

.

    1. Оператор EXIT (ВЫЙТИ)

      1. Назначение

    Оператор EXIT (ВЫЙТИ) обеспечивает общую точку выхода для ряда процедур.

    1. Общий формат

    EXIT.

    ВЫЙТИ.

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

    1. Оператор EXIT (ВЫЙТИ) должен составлять предложе­ние, не содержащее других операторов, и быть единственным в па­раграфе.

    1. Общее правило

    1. Оператор EXIT (ВЫЙТИ) служит для того, чтобы поста­вить в соответствие данной точке программы имя-процедуры. Опе­ратор EXIT (ВЫЙТИ) не оказывает другого действия на компиля­цию или выполнение программы.

    1. Оператор GO ТО (ПЕРЕЙТИ)

      1. Назначение

    Оператор GO ТО (ПЕРЕЙТИ) приводит к передаче управления от одной точки раздела процедур к другой. Необязательность име­ни-процедуры-1 в формате 1 оператора GO ТО (ПЕРЕЙТИ) в дан­ном стандарте является устаревшей и поэтому будет устранена в следующей редакции стандарта.

    1. О

      имя-процедуры-1


      ПЕРЕЙТИ К


      1 _

      имя-процедуры-1 ]

      Формат _GO ТО Y

      бщий формат

    Формат 2

    GO ТО {имя-процедуры-1}... DEPENDING ON идентификатор-1

    ПЕРЕЙТИ К {имя-процедуры-1}... В ЗАВИСИМОСТИ

    ОТ идентификатор-1

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

    1. Идентификатор-1 представляет числовое элементарное данное, описанное как целое.

    2. Если к параграфу, содержащему оператор GO ТО (ПЕ­РЕЙТИ), имеется обращение в операторе ALTER (ИЗМЕНИТЬ), то параграф может состоять только из заголовка параграфа, за ко­торым следует единственный оператор GO ТО (ПЕРЕЙТИ) в фор­мате-1.С. 334 ГОСТ 22558—89

    3. Формат 1 оператора GO ТО (ПЕРЕЙТИ) без имени-про- цедуры-1 разрешен только в параграфе, содержащем этот единст­венный оператор.

    4. Если оператор GO ТО (ПЕРЕЙТИ), представленный фор­матом 1, появляется в последовательности повелительных операто­ров внутри предложения, он должен быть последним оператором в этой последовательности.

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

    1. При выполнении оператора GO ТО (ПЕРЕЙТИ), представ­ленного форматом 1, управление передается указанному имени- процедуры-1.

    2. Если имя-процедуры в формате 1 не определено, то опера­тор ALTER (ИЗМЕНИТЬ), ссылающийся на оператор GO ТО (ПЕРЕЙТИ), должен быть выполнен до выполнения оператора GO ТО (ПЕРЕЙТИ).

    3. При выполнении оператора GO ТО (ПЕРЕЙТИ), представ­ленного форматом 2, управление передается той из указанных в списке процедур, названных именем-процедуры-1, порядковый но­мер которой совпадает со значением идентификатора. Если значе­ние идентификатора не равно одному из целых положительных (или без знака) 1,2, ..., и, то управление передается следующему оператору.