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

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 (ИСТИНА), FAL­SE (ЛОЖЬ), и 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, ..., и, то управление передается следующему оператору.

Оператор IF (ЕСЛИ)

Назначение

Оператор IF (ЕСЛИ) приводит к вычислению условия (см. п. 6.3 настоящей части).

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

Общий формат

IF vpnnnup 1 then / {оператор-1}... 1

IF условие-1 THEN I NEXT SENTENCE }

ELSE оператор-2 . . . [END-IF] ELSE NEXT SENTENCE END-IF

РГ ПМ 1 f {оператор-1}. ..

—условие-1 і СЛЕдуЮщЕЕ ПРЕДЛОЖЕНИЕ

ИНАЧЕ {оператор-2}... [КОНЕЦ-ЕСЛИ] ИНАЧЕ СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ КОНЕЦ-ЕСЛИ

С условные I

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

Оператор-1 и оператор-2 представляют собой

операторы или повелительные операторы, | за которыми, Без-

можно, следуют условные операторы . Дальнейшее описание пра­вил управления выполнением оператора-1 и оператора-2 дается в другом месте (см. ч. 4, п. 6.4.3).

Фраза ELSE NEXT SENTENCE (ИНАЧЕ СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ) может быть опущена, если она непосредствен­но предшествует точке, ограничивающей предложение.

Если задана фраза END-IF (К.ОНЕЦ-ЕСЛИ), фраза NEXT SENTENCE (СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ) не должна зада­ваться.

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

Область действия оператора IF (ЕСЛИ) может ограничи­ваться одним из следующих способов:

фразой END-IF (КОНЕЦ-ЕСЛИ) на том же уровне вло­женности;

разделителем точкой;

если оператор вложенный, то фразой ELSE (ИНАЧЕ) оператора IF (ЕСЛИ) на более высоком уровне вложенности (см. ч. 4, п. 6.4.3).

При выполнении оператора IF (ЕСЛИ) имеют место сле­дующие передачи управления:

если условие истинно и задан оператор-1, управление пере­дается первому оператору оператора-1 и выполнение продолжает­ся в соответствии с правилами для каждого оператора из операто- ра-1. Если выполняется оператор ветвления процедур или ус­ловный оператор J , который осуществляет явную передачу управ­ления, управление передается явно в соответствии с правилами для этого оператора. После завершения выполнения оператора-1 фра­за ELSE (ИНАЧЕ), даже если она указана, игнорируется и уп­равление передается на конец оператора IF (ЕСЛИ);

если условие истинно и вместо оператора-1 задана фраза NEXT SENTENCE (СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ), фраза ELSE (ИНАЧЕ), если она задана, игнорируется и управление пе­редается на следующее выполнимое предложение;

если условие ложно и задан оператор-2, оператор-1 или за­меняющая его фраза NEXT SENTENCE (СЛЕДУЮЩЕЕ ПРЕД­ЛОЖЕНИЕ) игнорируется, управление передается на первый опе­ратор оператора-2 и выполнение продолжается в соответствии с правилами для каждого оператора из оператора-2. Если выполня­ется оператор ветвления процедур или условный оператор, который осуществляет явную передачу управления, управление передается явно в соответствии с правилами для этого оператора. После за­вершения выполнения оператора-2 управление передается на ко­нец оператора IF (ЕСЛИ);

если условие ложно, а фраза ELSE (ИНАЧЕ) не указана, оператор-1 игнорируется и управление передается на конец опера­тора IF (ЕСЛИ);

если условие ложно и задана фраза ELSE NEXT SENTENCE (ИНАЧЕ СЛЕДУЮЩЕЕ ПРЕДЛОЖЕНИЕ), оператор-1 игнори­руется, а управление передается на следующее выполнимое пред­ложение.

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

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

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

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

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

Весь розділ →