Для условной переменной в условии имени-условия проверяется равенство ее значения одному из значений, связанных с именем-условия.
Общий формат для условия имени-условия:
имя-условия-1
Если имя-условия связано с диапазоном или с несколькими диапазонами значений, то для условной переменной проверяется, попадает ли ее значение в диапазоны, включая концы диапазонов.
Правила для сравнения условной переменной со значением имени-условия те же, что и для условий отношения.
Результатом проверки является значение «истина», если одно из значений, соответствующих имени-условия-1, равно значению соответствующей условной переменной.
Условие состояния переключателя
Условие состояния-переключателя определяет, является ли состояние определяемого реализацией переключателя состоянием «включено» или «выключено». Имя-реализации и связанное с ним состояние «включено» или «выключено» должны быть названы в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА) раздела оборудования. Общий формат для условия состояния-переключателя:
имя-условия-1
Результат проверки есть «истина», если переключатель установлен в позицию, соответствующую имени-условия-1.
Условие знака
Условие знака определяет, является ли алгебраическое значение арифметического выражения меньшим нуля, большим нуля или равным нулю. Общий формат для условия знака:
POSITIVE
арифметическое-выражение-1 IS [NOT] NEGATIVE ZERQ
ПОЛОЖИТЕЛЬНО і
О
арифметическое-выражение-1 [НЕ]
ТРИЦАТЕЛЬНО jНУЛЬ
NOT (НЕ) (если оно используется) и следующее за ним ключевое слово определяют одно условие знака, которое задает алгебраическую проверку для определения значения истинности; например, NOT ZERO (НЕ НУЛЬ) является проверкой истинности на ненулевое (положительное или отрицательное) значение.
Операнд положителен, если его значение больше нуля, отрицателен, если его значение меньше нуля, и равен нулю, если его значение равно нулю. Арифметическое выражение должно содержать по крайней мере один идентификатор.
С л о ж н ы е условия
Сложные условия образуются комбинацией простых условий и (или) сложных условий с помощью логических связок (логических операций AND (И) и OR (ИЛИ)) или отрицания этих условий с помощью логического отрицания (логическая операция NOT (НЕ)). Значением истинности сложного условия, заключенного или незаключенного в скобки, является то значение, которое следует в результате выполнения установленных логических операций над отдельными значениями истинности простых условий.
Знаки логических операций и их значения следующие:
AND (И) — логическая конъюнкция; значение истинности будет «истина», если оба соединенных ею условия истинны; «ложь», если одно или оба соединенных условия ложны;
OR (ИЛИ) — логическая дизъюнкция; значение истинности есть «истина», если одно или оба соединенных этой связкой условий истинны; «ложь», если оба эти условия ложны;
NOT (НЕ) — логическое отрицание или инверсия значения истинности; значение истинности есть «истина», если соответствующее условие ложно; «ложь», если это условие истинно. До и после знаков логических операций должен стоять пробел.
Отрицание условий
Отрицание условия производится с помощью логической операции NOT (НЕ), которая отрицает значение истинности условия, к которому применяется. Таким образом, значением истинности отрицания условия будет «истина» тогда и только тогда, когда значение истинности исходного условия «ложь»; значением истинности отрицания условия будет «ложь» тогда и только тогда, когда значение истинности исходного условия «истина»; заключение отрицания условия в скобки не меняет его значение истинности.
Общий формат отрицания условия:
NOT условие-1
НЕ условие-1
Комбинированные условия
Комбинированные условия получаются посредством связывания условий одним из знаков логических операций AND (И) или OR (ИЛИ). Общий формат комбинированных условий:
условие-2
> I I AND условие-1
I ( И 1 о )
условие-1 11 "ЙДИ J ^словие'2 J ' ’ ’
Старшинство логических операций и использование скобок
При отсутствии парных скобок в сложном условии старшинство (т. е. степень связывания) логических операций задает условия, к которым применяются заданные логические операции, и предполагает эквивалентное связывание скобками. Порядок старшинства следующий: NOT (НЕ), AND (И), OR (ИЛИ). Таким образом условие вида «условие-1 OR NOT условие-2 AND условие-3» («условие-1 ИЛИ НЕ условие-2 И условие-3») эквивалентно условию «условие-1 OR ((NOT условие-2) AND условие-3)» («условие-1 ИЛИ ((НЕ условие-2) И условие-3)»).
Когда в сложном условии используются скобки, они определяют связывание условий со знаками логических операций. Таким образом, скобки могут использоваться для изменения обычного старшинства операций, как указано выше. Например, приведенное выше сложное условие будет иметь другой смысл, если его задать в виде (условие-1 OR (NOT условие-2)) AND условие-3 ((условие-1 ИЛИ (НЕ условие-2)) И условие-3) (п. 6.3.4 настоящей части).
В табл. 1 приведены способы комбинирования условий и логических операций и правила употребления скобок. Между открывающими и закрывающими скобками должно быть соответствие.
Как видно из табл. 1, пара элементов OR NOT (ИЛИ НЕ) является допустимой, в то время как пара NOT OR (НЕ ИЛИ) недопустима; пара NOT ( (НЕ ( ) допустима, a NOT NOT (НЕ НЕ) недопустима.
Сокращенные комбинированные условия отношений
Если простые условия отношения или их отрицания комбинируются с помощью логических связок в последовательности, при которой условия отношения содержат совпадающие с предыдущим субъект или субъект и знак операции отношения и при этом не используются скобки, то любое условие отношения, за исключением первого, может быть сокращено следующим образом:
может быть опущен субъект условия отношения;
могут быть опущены субъект и знак операции отношения в условии отношения.
Т
[NOT] [знак-операции-
условие-отношения
Элемент |
Может располагаться в условном выражении |
Последовательность элементов слева направо |
||
первым |
последним |
Элементу, если он не первый, может непосредственно предшествовать только |
За элементом, если он не последний, может непосредственно следовать только |
|
Простое- условие OR (ИЛИ) AND (И) |
Да |
Да |
OR (ИЛИ), NOT (НЕ) AND (И), ( |
OR (ИЛИ), AND (И), ) |
Нет |
Нет |
Прэстое-услэвие, ) |
Прэстое-условие, NOT (НЕ), ( |
|
NOT (НЕ) |
Да |
Нет |
OR (ИЛИ), AND (И), ( |
Простое-условие, ( Прэстое-услэвие, NOT (НЕ), ( |
( |
Да |
Нет |
OR (ИЛИ), NOT (НЕ) AND (И), ( |
|
) |
Нет |
Да |
Простое-условие, ) |
OR (ИЛИ), AND (И), ) |
Формат для сокращенного условия
отношения] объект}.. .
условие-отцошения |
I pQjpJ [НЕ] [знак-операции-отношения] |
объект}...
Внутри последовательности условий отношения могут использоваться оба вида приведенных выше сокращений. Действие такого сокращенного условия такое же, как если бы опущенные части были взяты из ближайшего предшествующего полного условия отношения внутри того же предложения. Соответствия сокращенных и полных условий приведены ниже.
Вставка опущенного субъекта и (или) операции отношения завершается, как только в сложном условии встречается полное простое условие.
Интерпретация, применяемая к слову NOT (НЕ) в сокращенном комбинированном условии отношения, следующая:
если за словом NOT (НЕ) непосредственно следует знак операции GREATER (БОЛЬШЕ) (>), LESS (МЕНЬШЕ) (<), EQUAL (РАВНО) ( = ), тогда NOT (НЕ) является частью знака операции отношения;
в остальных случаях NOT (НЕ) интерпретируется как знак логической операции и, следовательно, подразумеваемая вставка субъекта или операции отношения приводит к отрицанию условия отношения.
Ниже приводятся примеры сокращений для комбинированных условий отношения и их отрицаний с соответствующими эквивалентами.
Сокращенное комбинированное условие ^отношения |
Эквивалент |
a>b AND NOT <с OR d А>Б И НЕ<Г ИЛИ Д |
((a>b) AND (a NOT<c)) OR (a NOT<d) ((А>Б) И (А НЕ<Г)) ИЛИ (А НЕ<Д) |
a NOT EQUAL b OR с A HE РАВНО Б ИЛИ Г |
(a NOT EQUAL b) OR (a NOT EQUAL c) (A HE РАВНО Б) ИЛИ (A HE РАВНО Г) |
NOT a = b OR с HE А = Б ИЛИ Г |
(NOT (a = b)) OR (a=c) (HE (А = Б)) ИЛИ (А = Г) |
NOT (a GREATER b OR <c) HE (А БОЛЬШЕ Б ИЛИ <Г) |
NOT ((a GREATER b) OR (a<c)) HE ((А БОЛЬШЕ Б) ИЛИ (А<Г)) |
NOT (a NOT>b AND с AND NOT d) HE (А НЕ>Б И Г И HE Д) |
NOT ((((a NOT>b) AND (a NOT>c)) AND (NOT (a NOT>d)))) HE ((((А НЕ>Б) И (А НЕ>Г)) И (HE (А НЕ>Д)))) |
П о р я д о к вычисления условий
Скобки явные и неявные задают уровень вложенности в сложном условии. Два или более условий, связанных только знаком логической операции AND (И) или только знаком логической операции OR (ИЛИ) на одном и том же уровне вложенности, устанавливают один уровень иерархии в сложном условии. Таким образом, полное сложное условие может рассматриваться как вложенная структура уровней иерархии. При этом само сложное условие соответствует самому внешнему уровню иерархии. В этом контексте вычисление условий в полном сложном условии начинается слева и продолжается по следующим правилам, рекурсивно применимым, когда необходимо.
На одном уровне иерархии связанные составляющие условия вычисляются в порядке слева направо. Вычисление на данном иерархическом уровне завершается сразу, как только значение истинности для него становится определенным независимо от того, все ли связанные в рамках этого уровня составляющие условия вычислены.
Значения арифметических выражений вычисляются тогда и только тогда, когда вычисляются содержащие их условия. Аналогично, отрицания условий вычисляются тогда и только тогда, когда необходимо вычислить сложное условие, которое они задают (см. п. 6.2.3 настоящей части).
Применение вышеперечисленных правил показано на рис.
1—4. Эти схемы не определяют требования к реализации.
Общие фразы и правила для форматов операторов
Ниже приводится описание общих фраз и условий, которые относятся к нескольким различным операторам.
Фраза ROUNDED (ОКРУГЛЯЯ)
Если после выравнивания по десятичной точке число позиций в дробной части результата арифметической операции оказывается большим, чем число позиций, заданных для дробной части идентификатора результата, производится усечение цифр в соответствии с размером, заданным для идентификатора результата. Если при этом старшая усекаемая цифра больше или равна 5, то абсолютное значение идентификатора результата при наличии фразы ROUNDED (ОКРУГЛЯЯ) увеличивается на единицу в самом младшем разряде.
Если младшие позиции целого в значении идентификатора результата представляются в его шаблоне литерой Р(М), то производится округление или отбрасывание цифр относительно самой правой из позиций цифр, для которых отведена память.
Фр аза ON S IZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ)
Условие переполнения возникает в следующих случаях:
нарушение правил вычисления степени всегда приводит к завершению выполнения арифметической операции и всегда вызывает условие переполнения (см. п. 6.2.3 настоящей части);
деление на нуль всегда вызывает условие переполнения;
если после выравнивания позиции десятичной точки абсолютное значение результата превышает наибольшее значение, которое может содержаться в соответствующем идентификаторе результата, возникает ошибка переполнения.
В случае, если для результирующего идентификатора задана фраза USAGE IS BINARY (ДВОИЧНОЕ), наибольшее значение, которое может в нем содержаться, определяется на основании строки-литер фразы PICTURE (ШАБЛОН) для соответствующего десятичного числа. Если задана фраза ROUNDED (ОКРУГЛЯЯ), округление выполняется перед проверкой условия переполнения.
Если задана фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) и после выполнения арифметических операций, заданных в арифметическом операторе, возникает условие переполнения, значения соответствующих результирующих идентификаторов оста
ются такими же, какими они были до начала вычисления арифметического выражения. Значения результирующих идентификаторов, для которых не возникало условие переполнения, будут такими же, как если бы условие переполнения не влияло бы ни на какой результирующий идентификатор. После завершения арифметической операции управление передается повелительному оператору, заданному во фразе ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ), и выполнение продолжается в соответствии с правилами для каждого оператора, указанного в этом повелительном операторе. Если им является оператор ветвления процедур или условный оператор, который сам вызывает явную передачу управления, управление передается в соответствии с правилами для данного оператора, иначе после завершения выполнения повелительного оператора, заданного во фразе ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕНИИ) управление передается на конец арифметического оператора, а фраза NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ), если она и задана, игнорируется.