Перейти к основному содержимому
Версия: 5.x

Оператор CHANGE

Оператор CHANGE - создание действия, которое изменяет свойство.

Синтаксис

[CHANGE] propertyId(expr1, ..., exprN) <- valueExpr [WHERE whereExpr]

Описание

Оператор CHANGE создает действие, которое изменяет свойство при выполнении условия. Этот оператор может добавлять свои локальные параметры при задании свойства, значение которого будет изменяться. Эти параметры соответствуют перебираемым объектам и не являются параметрами создаваемого действия.

Условие определяется блоком WHERE. Если этот блок не задан, то считается, что условие всегда выполняется.

Ключевое слово CHANGE, определяющее оператор, можно не указывать.

Параметры

  • propertyId

    Идентификатор свойства, значение которого изменяется. Свойство должно быть создано определенными операторами, чтобы возможно было изменить его значение. Разрешается изменять значения свойств, созданных с помощью операторов DATA, ABSTRACT, LOCAL.

  • expr1, ..., exprN

    Список выражений или типизированных параметров, задающих аргументы изменяемого свойства. При использовании типизированных параметров можно обращаться как к уже объявленным параметрам, так и объявлять новые локальные параметры. При использовании выражений добавлять новые локальные параметры нельзя. Количество выражений в этом списке должно совпадать с количеством параметров изменяемого свойства.

  • valueExpr

    Выражение, на значение которого необходимо изменить значение свойства.

  • whereExpr

    Выражение, значение которого является условием создаваемого изменения. Если не задано, считается равным TRUE.

Примеры

// установить всем клиентам у кого сумма заказа больше 100 скидку в размере 15 процентов
CLASS Customer;
discount = DATA NUMERIC[5,2] (Customer);
totalOrders = DATA NUMERIC[14,2] (Customer);
setDiscount {
discount(Customer c) <- 15 WHERE totalOrders(c) > 100;
}

discount = DATA NUMERIC[5,2] (Customer, Item);
in = DATA BOOLEAN (Item);
// изменить скидку для выбранных товаров для клиента
setDiscount (Customer c) {
discount(c, Item i) <- 15 WHERE in(i);
}

// скопировать свойство g в свойство f
f = DATA INTEGER (INTEGER);
g = DATA INTEGER (INTEGER);
copyFG {
f(a) <- g(a);
}