ГОСТ Р И С 0 10303-11 — 2009
подтипов и супертипов сравниваемых экземпляров. Для экземпляров сгруппированных объектов должны
сравниваться только атрибуты, объявленные какатрибуты вобъявлении объектного типаданных, указанно го
в квалификаторе группы (это не относится кунаследованным атрибутам, которые повторно объявлены в
указанном объектном типеданных).
12.2.2 Операторы сравнения экземпляров
Операторами сравнения экземпляров являются:
- равенство экземпляров (:=:):
- неравенство экземпляров (:<>:).
Данные операторы могут применяться коперандам числового, логического, строкового, двоичного,
перечисляемого, агрегированного и объектного типовданных. Оба операнда оператора сравнения экземп
ляров должны быть совместимы по типу данных (см. 12.11).
Для двух заданных операндов а и Ь. выражение (а:<> :Ь) эквивалентно выражению NOT (а:=:Ь)
для всех типовданных.
Применение операторов сравнения экземпляров к числовым, логическим, строковым, двоичным и
перечисляемым типам данных эквивалентно применению соответствующих операторов сравнения значе
ний. То есть (а :=: Ь) эквивалентно (а=Ь), а (а :<>: Ь) эквивалентно (а <>Ь) для указанных типов данных.
12.2.2.1 Сравнение экземпляров агрегированных структур
Операторами сравнения экземпляров, определенными для значений агрегированных структур, явля
ются операторы равенства (:=:) и неравенства (:<>:). Два значения агрегированныхструктур могут сравни
ваться только в том случае, если совместимы их типы данных (см. 12.11).
Все сравнения агрегированных структурдолжны проверять число элементов вкаждом из операндов:
если SIZEOF(a)<>SlZEOF(b). то агрегированныеструктуры неравны. При сравнении агрегированных структур
проводится сравнение элементов значений агрегированных структур посредством сравнения экземпля
ров. Если результатом сравнения каких-либо элементов является значение FALSE, то результат сравнения
агрегированных структур также будет иметь значение FALSE. Если результатом одного или нескольких
сравнений элементов для данного сравнения агрегированных структур является значение UNKNOWN, а
результатом всех остальных сравнений является значение TRUE, то результатом сравнения агрегирован
ных структур будет значение UNKNOWN. В противном случае результат сравнения агрегированных струк
тур будет иметь значение TRUE.
Определение равенства экземпляров агрегированных структур зависит от сравниваемых агрегиро
ванных типов данных:
- два массива а и b равны тогда и только тогда, когда каждый элемент массива а представлен тем же
экземпляром, что и элемент массива Ь. расположенный на той же позиции, то есть a[i] :=: b[i] (см. 12.6.1);
- два списка а и b равны тогда и только тогда, когда каждый элемент списка а представлен тем же
экземпляром, что и элемент списка Ь. расположенный на той же позиции;
- экземпляры двух пакетов а и b равны тогда и только тогда, когда каждый элемент из пакета а
присутствует такое же число раз в пакете Ь. а каждый элемент из пакета b также присутствует такое же
число раз в пакете а:
- экземпляры двух наборов а и Ь равны тогда и только тогда, когда каждый элемент из набора а
присутствует в наборе Ь. а каждый элемент из набора b присутствует в наборе а.
- экземпляр пакета равен экземпляру набора тогда и только тогда, когда каждый элемент из набора
присутствует в пакете только один раз. а пакет не содержит элементов, которых нет в наборе.
Пример— Сравнение экземпляров двух массивов:
LOCAL
а1.а2 : ARRAY [1:10] OFb:
END LOCAL:
IF(a1 :=: a2) THEN ...
12.2.2.2 Сравнение экземпляров объектного типа данных
Операторы равенства (:=:) и неравенства (:<>:) экземпляров объектного типа данных сравнивают
два совместимых экземпляра объектного типаданных и выдают результат типа LOGICAL.
Результатом сравнения а:=:Ь является значение TRUE, если а представлен тем же экземпляром
объектного типа данных, что и Ь. то есть их зависящие от реализации идентификаторы одинаковы. Резуль
тат сравнения будет иметь значение FALSE, если а представлен другим экземпляром объектного типа
данных, чем Ь. Результат сравнения будет иметь значение UNKNOWN, если хотя бы один из операндов
имеет неопределенное (?) значение.
74