Операнды оператора должны быть совместимы с типом (типами) данных, необходимых оператору. Типы данных обоих операндов некоторых операторов также должны быть совместимы друг с другом, что было определено выше в данном разделе. Типы данных могут быть совместимыми, не будучи идентичными. Типы данных являются совместимыми при выполнении одно из следующих условий:
- типы данных совпадают;
- один тип данных является подтипом или конкретизацией другого (включая определенные типы данных, использующие определенный тип данных в качестве базисного типа данных, и конструкционные типы данных, основанные на наращиваемых типах данных);
- оба типа данных являются типами данных ARRAY с совместимыми базисными типами данных и одинаковыми границами;
- оба типа данных являются типами данных LIST с совместимыми базисными типами данных;
- оба типа данных являются типами данных BAG или SET с совместимыми базисными типами данных.
Пример - Заданы следующие определения:
TYPE natural = REAL;
WHERE SELF >= 0.0;
END_TYPE;
TYPE positive = natural;
WHERE SELF > 0.0;
END_TYPE;
TYPE bag_of_natural = BAG OF natural;
END_TYPE;
TYPE set_of_up_to_five_positive = SET [ 0 : 5 ] OF positive;
END_TYPE;
При этом совместимыми являются следующие типы данных:
Тип данных | Совместим с типами данных |
REAL | INTEGER, REAL, NUMBER, natural, positive |
natural | REAL, NUMBER, natural, positive |
positive | REAL, NUMBER, natural, positive |
bag_of_natural | BAG OF REAL, BAG OF NUMBER, BAG OF natural, |
set_of_up_to_five_positive | BAG OF REAL, BAG OF NUMBER, BAG OF natural, |