Subtracts a value from an ABL data element. Provides a shorter syntax for applying numeric and date-based subtraction.

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 from which you want to subtract 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, DECIMAL, DATE, DATETIME, and DATETIME-TZ. 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 subtraction using the -= assignment operator.

VAR INT i1 = 100.
VAR INT i2 = 25.

i1 -= i2.  // 75

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

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

VAR INT64 i1 = 1000.
VAR INT i2 = 100.
VAR DECIMAL d1 = 20.5.

i1 -= i2 + d1.  //  880

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

The following example uses the -= assignment operator to subtract 7 days from a DATE variable.

VAR DATE date1 = 07/14/2020.

date1 -= 7. // 07/07/2020

/* Equivalent statement
date1 = date1 - 7.   */

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

VAR DECIMAL limitDecrease = 5000.

FIND FIRST Customer.
Customer.CreditLimit -= limitDecrease.

/* Equivalent statement
Customer.CreditLimit = Customer.CreditLimit - limitDecrease. */

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.  // 240

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

See also

Assignment (=) statement, ASSIGN statement, - Subtraction operator, - Date subtraction operator, - Datetime subtraction operator