ГОСТ Р ИСО 10303-14—2015
Синтаксис:
89 tor expr = FOR ( foreach expr i forioop expr
85 foreach expr = EACH variable id IN expression
) .
(where clause J RETURN
expression .
86 tor^oop expr =
171 repeat control
repeat control RETURN
= [ increment control
expression .
) l while control ) 1
until control J .
113 increment control = variable id ’:=* bound 1 TO bound 2
[
BY increment
) ■
2
32 while control = WHILE logical_expression .
222 until control = UNTIL logical expression .
Правила и ограничения
a) Вычисленное значение объекта
expression
из выражения
loreach expr
должно быть
агрегированной структурой языка EXPRESS, пространством или пространством образа.
b
) Объявление образа не должно содержать выражение
f o r
.
Элемент языка
foreach expr
неявно объявляет переменную итератора
variable id
(см.
синтаксическое правило 85) типа
GENERIC,
видимую в области действия элементов
where clause
и
expression.
Элемент
expression,
расположенный после элемента языка
IN,
должен быть агре
гированной структурой языка EXPRESS, над которой выполняются операции. На каждом цикле итера
ции элемент данной агрегированной структуры связан со своей переменной итератора, начиная с ее
значения
LOINDEX
и до значения
HIINDEX
(см. подразделы 15.17 и 15.11 ИСО 10303-11).
Элемент языка
re tu rn из
синтаксического правила 85 определяет выражение, вычисляемое для
каждого элемента на данной итерации. В свою очередь данное выражение вычисляется в среде, свя
зывающей переменную итератора с каждым значением исходной агрегированной структуры. Результат
каждого вычисления добавляется к агрегированной структуре целевого атрибута так. как если бы был
применен оператор объединения (см. пункт 12.6.3 ИСО 10303-11) с агрегированной структурой целево го
атрибута в качестве его левого операнда и результатом вычисления выражения в качестве правого
операнда.
Необязательный элемент
where_clause
из синтаксического правила 85 определяет выраже
ние. которое должно возвращать значение типа
LOGICAL
или неопределенное значение. Выражение,
следующее за элементом языка
r e t u r n
,
только
вычисляется, а его результат включается в агрегиро
ванную структуру результата только в том случае, если рассчитанным значением элемента
where
clause
является
TRUE.
Примеры
1 В данном примере целевой объект
component
является отображением исходного объекта
product_definitiontа
все экземпляры объекта
product_definition_name.
ссылающиеся на один
экземпляр объекта
product_definition.
сгруппированы в целевом атрибуте
component.names:
{* Исходная схема *)
SCHEMA source_schema;
ENTITY product_definition;
product_name : STRING;
description : STRING;
END_ENTITY;
ENTITY product_definition_name;
name: STRING;
of_product_definition : product_definition;
END_ENTITY; ~
END_SCHEMA;
(* Целевая схема *)
SCHEMA target_schema;
ENTITY component;
names : SET (0:?J OF STRING;
product_name : STRING;
description : STRING;
END_ENTITY;
END SCHEMA;
38