Для условной переменной в условии имени-условия проверя­ется равенство ее значения одному из значений, связанных с именем-условия.

Общий формат для условия имени-условия:

имя-условия-1

Если имя-условия связано с диапазоном или с несколькими диапазонами значений, то для условной переменной проверяет­ся, попадает ли ее значение в диапазоны, включая концы диапа­зонов.

Правила для сравнения условной переменной со значением имени-условия те же, что и для условий отношения.

Результатом проверки является значение «истина», если од­но из значений, соответствующих имени-условия-1, равно значе­нию соответствующей условной переменной.

  1. Условие состояния переключателя

Условие состояния-переключателя определяет, является ли сос­тояние определяемого реализацией переключателя состоянием «включено» или «выключено». Имя-реализации и связанное с ним состояние «включено» или «выключено» должны быть названы в параграфе SPECIAL-NAMES (СПЕЦИАЛЬНЫЕ-ИМЕНА) разде­ла оборудования. Общий формат для условия состояния-переклю­чателя:

имя-условия-1

Результат проверки есть «истина», если переключатель уста­новлен в позицию, соответствующую имени-условия-1.

  1. Условие знака

Условие знака определяет, является ли алгебраическое зна­чение арифметического выражения меньшим нуля, большим ну­ля или равным нулю. Общий формат для условия знака:

POSITIVE

арифметическое-выражение-1 IS [NOT] NEGATIVE ZERQ

ПОЛОЖИТЕЛЬНО і

О

арифметическое-выражение-1 [НЕ]

ТРИЦАТЕЛЬНО j

НУЛЬ

NOT (НЕ) (если оно используется) и следующее за ним клю­чевое слово определяют одно условие знака, которое задает ал­гебраическую проверку для определения значения истинности; например, NOT ZERO (НЕ НУЛЬ) является проверкой истин­ности на ненулевое (положительное или отрицательное) значе­ние.

Операнд положителен, если его значение больше нуля, отри­цателен, если его значение меньше нуля, и равен нулю, если его значение равно нулю. Арифметическое выражение должно со­держать по крайней мере один идентификатор.

  1. С л о ж н ы е условия

Сложные условия образуются комбинацией простых условий и (или) сложных условий с помощью логических связок (логи­ческих операций AND (И) и OR (ИЛИ)) или отрицания этих условий с помощью логического отрицания (логическая опера­ция NOT (НЕ)). Значением истинности сложного условия, зак­люченного или незаключенного в скобки, является то значение, которое следует в результате выполнения установленных логи­ческих операций над отдельными значениями истинности прос­тых условий.

Знаки логических операций и их значения следующие:

AND (И) — логическая конъюнкция; значение истинности будет «истина», если оба соединенных ею условия истинны; «ложь», если одно или оба соединенных условия ложны;

OR (ИЛИ) — логическая дизъюнкция; значение истинности есть «истина», если одно или оба соединенных этой связкой ус­ловий истинны; «ложь», если оба эти условия ложны;

NOT (НЕ) — логическое отрицание или инверсия значения истинности; значение истинности есть «истина», если соответст­вующее условие ложно; «ложь», если это условие истинно. До и после знаков логических операций должен стоять пробел.

  1. Отрицание условий

Отрицание условия производится с помощью логической опе­рации NOT (НЕ), которая отрицает значение истинности усло­вия, к которому применяется. Таким образом, значением истин­ности отрицания условия будет «истина» тогда и только тогда, когда значение истинности исходного условия «ложь»; значени­ем истинности отрицания условия будет «ложь» тогда и только тогда, когда значение истинности исходного условия «истина»; заключение отрицания условия в скобки не меняет его значение истинности.

Общий формат отрицания условия:

NOT условие-1

НЕ условие-1

  1. Комбинированные условия

Комбинированные условия получаются посредством связыва­ния условий одним из знаков логических операций AND (И) или OR (ИЛИ). Общий формат комбинированных условий:

условие-2


> I I AND условие-1


I ( И 1 о )

условие-1 11 "ЙДИ J ^словие'2 J ' ’ ’

  1. Старшинство логических операций и использование скобок

При отсутствии парных скобок в сложном условии старшин­ство (т. е. степень связывания) логических операций задает ус­ловия, к которым применяются заданные логические операции, и предполагает эквивалентное связывание скобками. Порядок старшинства следующий: 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 (НЕ НЕ) недопустима.

  1. Сокращенные комбинированные усло­вия отношений

Если простые условия отношения или их отрицания комби­нируются с помощью логических связок в последовательности, при которой условия отношения содержат совпадающие с пре­дыдущим субъект или субъект и знак операции отношения и при этом не используются скобки, то любое условие отношения, за исключением первого, может быть сокращено следующим обра­зом:

  1. может быть опущен субъект условия отношения;

  2. могут быть опущены субъект и знак операции отноше­ния в условии отношения.

Т

[NOT] [знак-операции-


условие-отношения


аблица 1

Элемент

Может распо­лагаться в условном выражении

Последовательность элементов слева направо

первым

пос­ледним

Элементу, если он не пер­вый, может непосредствен­но предшествовать только

За элементом, если он не последний, может непосред­ственно следовать только

Простое- условие

OR (ИЛИ)

AND (И)

Да

Да

OR (ИЛИ), NOT (НЕ) AND (И), (

OR (ИЛИ), AND (И), )

Нет

Нет

Прэстое-услэвие, )

Прэстое-условие, NOT (НЕ), (

NOT (НЕ)

Да

Нет

OR (ИЛИ), AND (И), (

Простое-условие, (

Прэстое-услэвие, NOT (НЕ), (

(

Да

Нет

OR (ИЛИ), NOT (НЕ) AND (И), (

)

Нет

Да

Простое-условие, )

OR (ИЛИ), AND (И), )

Формат для сокращенного условия


отношения] объект}.. .

условие-отцошения

I pQjpJ [НЕ] [знак-операции-отношения]



объект}...

Внутри последовательности условий отношения могут ис­пользоваться оба вида приведенных выше сокращений. Действие такого сокращенного условия такое же, как если бы опущенные части были взяты из ближайшего предшествующего полного ус­ловия отношения внутри того же предложения. Соответствия сокращенных и полных условий приведены ниже.

Вставка опущенного субъекта и (или) операции отношения завершается, как только в сложном условии встречается полное простое условие.

Интерпретация, применяемая к слову NOT (НЕ) в сокра­щенном комбинированном условии отношения, следующая:

  1. если за словом 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 (А НЕ>Д))))



  1. П о р я д о к вычисления условий

Скобки явные и неявные задают уровень вложенности в слож­ном условии. Два или более условий, связанных только знаком логической операции AND (И) или только знаком логической операции OR (ИЛИ) на одном и том же уровне вложенности, устанавливают один уровень иерархии в сложном условии. Та­ким образом, полное сложное условие может рассматриваться как вложенная структура уровней иерархии. При этом само сложное условие соответствует самому внешнему уровню иерар­хии. В этом контексте вычисление условий в полном сложном условии начинается слева и продолжается по следующим пра­вилам, рекурсивно применимым, когда необходимо.

  1. На одном уровне иерархии связанные составляющие ус­ловия вычисляются в порядке слева направо. Вычисление на данном иерархическом уровне завершается сразу, как только значение истинности для него становится определенным незави­симо от того, все ли связанные в рамках этого уровня составля­ющие условия вычислены.

Значения арифметических выражений вычисляются тогда и только тогда, когда вычисляются содержащие их условия. Ана­логично, отрицания условий вычисляются тогда и только тогда, когда необходимо вычислить сложное условие, которое они за­дают (см. п. 6.2.3 настоящей части).

Применение вышеперечисленных правил показано на рис.

1—4. Эти схемы не определяют требования к реализации.

  1. Общие фразы и правила для форматов операторов

Ниже приводится описание общих фраз и условий, которые от­носятся к нескольким различным операторам.

  1. Фраза ROUNDED (ОКРУГЛЯЯ)

Если после выравнивания по десятичной точке число позиций в дробной части результата арифметической операции оказывает­ся большим, чем число позиций, заданных для дробной части иден­тификатора результата, производится усечение цифр в соответствии с размером, заданным для идентификатора результата. Если при этом старшая усекаемая цифра больше или равна 5, то абсолют­ное значение идентификатора результата при наличии фразы ROUNDED (ОКРУГЛЯЯ) увеличивается на единицу в самом млад­шем разряде.

Если младшие позиции целого в значении идентификатора ре­зультата представляются в его шаблоне литерой Р(М), то произ­водится округление или отбрасывание цифр относительно самой правой из позиций цифр, для которых отведена память.

  1. Фр аза ON S IZE ERROR (ПРИ ПЕРЕПОЛ­НЕНИИ)

Условие переполнения возникает в следующих случаях:

  1. нарушение правил вычисления степени всегда приводит к завершению выполнения арифметической операции и всегда вы­зывает условие переполнения (см. п. 6.2.3 настоящей части);

  2. деление на нуль всегда вызывает условие переполнения;

  3. если после выравнивания позиции десятичной точки абсо­лютное значение результата превышает наибольшее значение, ко­торое может содержаться в соответствующем идентификаторе ре­зультата, возникает ошибка переполнения.

В случае, если для результирующего идентификатора задана фраза USAGE IS BINARY (ДВОИЧНОЕ), наибольшее значение, которое может в нем содержаться, определяется на основании строки-литер фразы PICTURE (ШАБЛОН) для соответствующего десятичного числа. Если задана фраза ROUNDED (ОКРУГЛЯЯ), округление выполняется перед проверкой условия переполнения.

Если задана фраза ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕ­НИИ) и после выполнения арифметических операций, заданных в арифметическом операторе, возникает условие переполнения, зна­чения соответствующих результирующих идентификаторов оста

­

ются такими же, какими они были до начала вычисления арифме­тического выражения. Значения результирующих идентификаторов, для которых не возникало условие переполнения, будут такими же, как если бы условие переполнения не влияло бы ни на какой результирующий идентификатор. После завершения арифмети­ческой операции управление передается повелительному операто­ру, заданному во фразе ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕ­НИИ), и выполнение продолжается в соответствии с правилами для каждого оператора, указанного в этом повелительном опера­торе. Если им является оператор ветвления процедур или условный оператор, который сам вызывает явную передачу управления, уп­равление передается в соответствии с правилами для данного опе­ратора, иначе после завершения выполнения повелительного опе­ратора, заданного во фразе ON SIZE ERROR (ПРИ ПЕРЕПОЛНЕ­НИИ) управление передается на конец арифметического операто­ра, а фраза NOT ON SIZE ERROR (БЕЗ ПЕРЕПОЛНЕНИЯ), ес­ли она и задана, игнорируется.