ГОСТ 22558-89 сторінка 43 з 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 (ИСТИНА), 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, ..., и, то управление передается следующему оператору.
Оператор 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 игнорируется, а управление передается на следующее выполнимое предложение.
Побачили розбіжність з офіційним текстом?