Multiplies an ABL data element by a numeric expression. Provides a shorter syntax for applying multiplication.

Syntax

field *= expression [ NO-ERROR ]

field *= expression is equivalent to field = field * (expression).

Note: Spaces are required around the assignment operator. You cannot write field*=expression.
Note: This syntax can also be used in the ASSIGN, BUFFER-COPY, SET, and UPDATE statements.
field
The name of an ABL data element by which you want to multiply the value of expression, and that is defined with a data type that is compatible with the data type of expression. Valid data types are INTEGER, INT64, and DECIMAL. The data element can include:
  • A database or temp-table field
  • A variable scoped to the current procedure, user-defined function, or method of a class, or an accessible class-based variable data member, including a subscripted array variable
  • A parameter defined for the current procedure, user-defined function, or method of a class, including a subscripted array parameter
  • A writable class-based or COM property, including a subscripted array property
  • A writable handle attribute or system handle attribute
  • ABL syntax that specifies the CURRENT-VALUE statement, DYNAMIC-CURRENT-VALUE statement, DYNAMIC-PROPERTY statement, EXTENT statement, or LENGTH statement
expression
An expression with a data type that is consistent with the data type of field.
NO-ERROR
The NO-ERROR option is used to prevent the statement from raising ERROR and displaying error messages. With the NO-ERROR option, if ERROR is raised, then the ABL element on the left-hand side of the assignment is unchanged.
Note: For more information on the rules related to assignment, see the notes section in the Assignment (=) statement reference entry.

Examples

The following example shows how to do integer multiplication using the *= assignment operator.

VAR INT i1 = 100.
VAR INT i2 = 50.

i1 *= i2.  // 5000

/* Equivalent statement
i1 = i1 * i2.        */

The following example uses the *= assignment operator on variables with mixed numeric data types.

VAR INT i1 = 10.
VAR INT64 i2 = 1000.
VAR DECIMAL d1 = 20.55.

i1 *= i2 + d1.  // 10206

/* Equivalent statement
i1 = i1 * (i2 + d1). */

The following example uses the *= assignment operator to update a database field.

VAR DECIMAL limitIncrease = 1.10.

FIND FIRST customer.
Customer.CreditLimit *= limitIncrease.

/* Equivalent statement
Customer.CreditLimit = Customer.CreditLimit * limitIncrease. */

The following example uses the *= assignment operator to update a class property:

VAR ClassA myObj.
VAR INT myValue = 10.

myObj = NEW ClassA().
myObj:MyIntProp  = 250.
myObj:MyIntProp *= myValue.  // 2500

/* Equivalent statement
myObj:MyIntProp = myObj:MyIntProp * myValue. */

See also

Assignment (=) statement, ASSIGN statement, * Multiplication operator