Первый элемент арифметического выражения |
Второй элемент ариф.мегическог© выражения |
||||
Иденти^ ика- тор или литерал |
+ — * / ** |
Унарный плюс или минус |
( |
) |
|
Идентификатор или литерал |
|
р |
|
|
р |
*/ »» |
р |
— |
р |
р |
|
Унарный плюс или минус |
р |
— |
— |
р |
— |
( |
р |
— |
р |
р |
— |
) |
__ |
р |
— |
— |
р |
Примечание. Буква Р представляет допустимую пару элементов, знак «—» — недопустимую;
арифметическое выражение может начинаться только с идентификатора, литерала или символов (, +> — и может заканчиваться только ), идентификатором или литералом. Между открывающими и закрывающими скобками в арифметическом выражении должно быть взаимно однозначное соответствие, так что каждая открывающая скобка должна быть слева от соответствующей ей закрывающей скобки. Если первая операция в арифметическом выражении унарная и это арифметическое выражение непосредственно следует за идентификатором или другим арифметическим выражением, ей должна непосредственно предшествовать левая скобка;
вычисление экспоненты в арифметическом выражении производится по следующим правилам:
если значение выражения, которое должно быть возведено в степень, равно нулю, степень должна иметь значение большее нуля. В противном случае возникает условие переполнения (п. 6.4.2 настоящей части);
если в результате вычисления может получиться и положительное, и отрицательное число, в качестве результата возвращается положительное;
если не существует действительного числа, которое может быть результатом вычисления, возникает условие переполнения;
арифметические выражения позволяют пользователю комбинировать арифметические операции без ограничений на совокупность операндов и (или) получаемых данных. В каждой реализации указываются способы, которые используются в обработке арифметических выражений.Условные выражения
Условные выражения задают условия, которые проверяются в объектной программе для выбора альтернативных путей управления в зависимости от значения истинности условия. Условное выражение имеет значение истинности «истина» или «ложь». Условные выражения задаются в операторах I EVALUATE (ОЦЕ-| |НИТЬ), /IF (ЕСЛИ), PERFORM (ВЫПОЛНИТЬ) / и SEARCH| [ (ИСКАТЬ) . Есть две категории условий, связанных с условными выражениями: простые условия | и сложные условия | . Каждое из них может заключаться в любое число парных скобок, в результате чего категория условия не меняется.
П
класса, . Прос
р о с т ы е условияП
I имени-условия,
ростыми условиями являются условия отношения, состояния-переключателя | и знака тое условие может иметь значение истинности «истина» или «ложь». Заключение в скобки простых условий не меняет их значения истинности.Условия отношения
Условие отношения вызывает сравнение двух операндов, каждый из которых может быть либо данным, представленным иден- тификатором, либо литералом, | либо значением арифметического' [выражения, I либо именем индекса. Условие отношения имеет значение истинности «истина», если между операндами имеет место указанное отношение. Допускается сравнение двух числовых операндов независимо от формата, определяемого индивидуальными фразами об использовании. Однако для всех других случаев сравнения описания операндов должны задавать одинаковое использование. Если хоть один из операндов является групповым данным, сравнение выполняется по правилам сравнения нечисловых операндов.
Общий формат для условия отношения следующий:
I идентификатор-2
I литерал-2
І арифметическое- выражение-2
I имя-индекса-2
идентификатор-1 литерал-1
арифметическое- выражение-1
имя-индекса-1
IS [NOT] GREATER THAN
IS [NOT]>
IS [NOT] LESS THAN
IS [NOT] <
IS [NOT] EQUAL TO
IS [NOT] =
IS GREATER THAN OR EQUAL TO
IS > =
IS LESS THAN OR EQUAL TO
IS < =
66S
арифметическое- выражение-1
имя-индекса-1
[НЕ] БОЛЬШЕ
[НЕ] >
[НЕ] МЕНЬШЕ
[НЕ] <
[НЕ] РАВНО
[НЕ] =
БОЛЬШЕ ИЛИ РАВНО
МЕНЬШЕ ИЛИ РАВНО
I идентификатор-2 I литерал-2 ] арифметическое-
I выражение-2
( имя-индекса-2
ГОСТ 22558—89
П
, арифметиче-!
ервый операнд (идентификатор-1, литерал-1Iское-выражение-1 или имя-индекса-1) называется субъектом условия; второй операнд (идентификатор-2, литерал-2 арифме- тическое-выражение-21 или имя-индекса-2) называется объектом условия. Условие отношения должно содержать по крайней мере один идентификатор.
З
слово или литера отношения представляют один знак операции отношения, определяющий тип сравнения для определения значения истинности. Следующие знаки операций отношения эквивалентны: IS NOT GREATER THAN (HE БОЛЬШЕ) эквивалентно IS LESS THAN OR EQUAL TO (МЕНЬШЕ ИЛИ РАВНО); IS NOT LESS THAN (HE МЕНЬШЕ) эквивалентно IS GREATER THAN OR EQUAL TO (БОЛЬШЕ ИЛИ РАВНО). Смысл знаков операций
нак операции отношения задает тип сравнения, которое должно быть произведено в условии отношения. Знаки операций отношения и зарезервированные слова должны обрамляться пробелами. NOT (НЕ) (если оно используется) и последующее ключевое
Значение |
Знак операции отношения |
|
Больше или не больше |
IS [NOT] GREATER THAN IS [NOT] > |
[HE] БОЛЬШЕ |
[HE] > |
||
Меньше или не меньше |
IS [NOT] LESS THAN IS [NOT] < |
[HE] МЕНЬШЕ [HE] < |
Равно или не равно |
IS [NOT] EQUAL TO IS [NOT] = |
[HE] РАВНО [HE] = |
Больше или равно |
IS GREATER THAN OR EQUAL TO IS > = |
БОЛЬШЕ ИЛИ РАВНО |
Меньше или равно |
IS LESS THAN OR EQUAL TO IS < = |
МЕНЬШЕ ИЛИ РАВНО |
отношения показан ниже.
Ср а в н е н и е числовых операндов
Для операндов числовой категории производится сравнение алгебраических значений операндов. Длина литерала или операндов 300арифметического выражения в терминах числа цифр не существенна. Нуль рассматривается как единственное значение, не зависящее от знака.
Сравнение числовых операндов допускается независимо от способа описания их использования. Числовые операнды, не имеющие знака, рассматриваются при сравнении как положительные.
Сравнение нечисловых операндов
Для нечисловых операндов или для случая, когда один операнд числовой, а второй — нечисловой, производится сравнение в соответствии с указанной основной последовательностью литер. В последнем случае числовой операнд должен быть целым литералом или данным, описанным как целое и:
если нечисловой операнд является элементарным данным или нечисловым литералом, числовой операнд рассматривается так, как будто выполнено его перемещение в элементарное буквенно-цифровое данное того же размера, что и числовое данное (в терминах литер стандартного формата данных); значение этого буквенно-цифрового данного затем сравнивается с нечисловым операндом (см. п. 5.9.4, правило (8), п. 6.19 настоящей части);
если нечисловой операнд является групповым данным, числовой операнд рассматривается так, как будто выполнено его перемещение в групповое данное того же размера, что и числовое данное (в терминах литер стандартного формата данных), и значение этого группового данного затем сравнивается с нечисловым операндом (см. п. 5.9.4, правило (8), п. 6.19 настоящей части);
числовой операнд, не представляющий целое число, не может сравниваться с нечисловым операндом.
Размер операнда равен числу литер стандартного формата данных в операнде. Числовые и нечисловые операнды могут сравниваться только тогда, когда их использование явно или неявно является одинаковым.
Правила сравнения для операндов равного размера и операн-; дов неравного размера различны.
Если операнды имеют равный размер, то литеры операндов в соответствующих позициях сравниваются попарно, начиная от самой левой позиции, пока не встретятся неравные литеры или не будет достигнут правый конец.
Если все пары литер совпадают вплоть до последней пары, операнды считаются равными.
Для первой появившейся пары несовпадающих литер определяется их относительная позиция в основной последовательности. Считается, что операнд, содержащий литеру, занимающую более высокую позицию в основной последовательности, является большим.
Если операнды имеют разный размер, сравнение литер производится так, как будто операнд, содержащий меньшее число литер, дополнен справа пробелами до получения операндов одинаковой длины.
С р а в н е н и я, содержащие имена индексов и (или) индексные данные
Проверка отношения может быть выполнена только между:
двумя именами индексов. Результат такой же, как если бы сравнивались номера вхождений;
именем индекса и данным (отличным от индексного данного) или литералом. Номер вхождения, который соответствует имени индекса, сравнивается с данным или литералом;
индексным данным и именем индекса или другим индексным данным. Значения сравниваются без преобразования.
Условие класса
Условие класса определяет, является ли операнд числовым, буквенным, буквенным прописным, буквенным строчным или содержит лишь литеры из множества литер, заданного фразой CLASS (КЛАСС) параграфа SPECIAL-NAMES (СПЕЦИАЛЬ- НЫЕ-ИМЕНА) раздела оборудования. Класс операнда определяется следующим образом:
операнд числовой, если он состоит из литер 1, 2, 3 . . . , 9,0 со знаком или без;
операнд буквенный, если он состоит полностью из прописных букв, пробелов, из строчных букв и пробела, или любой КОМ-) бинации прописных и строчных букв или любой комбинации прописных, строчных букв и пробела;
операнд буквенный строчный, если он полностью состоит из строчных букв и пробела;
операнд буквенный прописной, если он полностью состоит из прописных букв и пробелов;
операнд соответствует имени-класса, если он состоит лишь из литер, перечисленных в определении имени-класса в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА).
Общий формат для условия класса следующий:
NUMERIC
A
идентификатор-1 IS [NOT]
LPHABETIC ALPHABETIC-LOWER jALPHABETIC-UPPER имя-класса-1
Ч
идентификатор-1 [НЕ]
ИСЛОВОЕ БУКВЕННОЕ СТРОЧНЫЕ )ПРОПИСНЫЕ J
имя-класса-1 '
Проверяемый операнд должен быть описан с использованием DISPLAY (ДЛЯ ВЫДАЧИ).
NOT (НЕ) (если оно используется) и следующее за ним ключевое слово задает одно условие класса, которое определяет выполняемую для установления истинности проверку. NOT NUMERIC (НЕ ЧИСЛОВОЕ) указывает проверку истинности для установления того, является ли операнд нечисловым.
Проверка на NUMERIC (ЧИСЛОВОЕ) не может применяться к данному, описанному как буквенное или как групповое данное, составленное из элементарных данных, описания которых указывают на наличие знака числа. Если описание проверяемого данного не содержит указания на знак числа, то проверяемое данное будет определено как числовое только в том случае, когда оно является числовым без знака. Если описание данного содержит указание на знак числа, проверяемое данное будет определено как числовое только в том случае, если его значение является числовой величиной и имеет правильный знак. Правильным знаком числового данного, описанного с фразой SIGN IS SEPARATE (ЗНАК ОТДЕЛЬНО), является одна из литер + или — в стандартном формате данных; представление правильного знака данных, описание которых не содержит фразу SIGN IS SEPARATE (ЗНАК ОТДЕЛЬНО), определяется реализацией.
Проверка на ALPHABETIC (БУКВЕННОЕ) не может применяться для данных, описанных как числовые. Результат проверки «истина», если содержимое данного, представленного идентификатором-1, состоит только из буквенных литер.
Проверка на ALPHABETIC-LOWER (СТРОЧНЫЕ) не может применяться для данных, описанных как числовые. Результат проверки «истина», если содержимое данного, представленного идентификатором-1, состоит только из строчных букв и пробелов.
Проверка на ALPHABETIC-UPPER (ПРОПИСНЫЕ) не может применяться для данных, описанных как числовые. Результат проверки «истина», если содержимое данного, представленного идентификатором-1, состоит только из прописных букв и пробелов.
Проверка с использованием имени-класса-1 не может применяться для данных, описанных как числовые.Условие имени-условия (условная переменная)