= (compound assign) Compound assignment--binary (Assignment) ------------------------------------------------------------------------------ Syntax <idVar> += <cString> (concatenation) <idVar> += <nNumber> (addition) <idVar> -= <cString> (concatenation) <idVar> -= <nNumber> (subtraction) <idVar> -= <dDate> (subtraction) <idVar> *= <nNumber> (multiplication) <idVar> /= <nNumber> (division) <idVar> %= <nNumber> (modulus) <idVar> ^= <nNumber> (exponentiation) Type Character, date, memo, numeric Operands <idVar> is a variable identifier of any storage class, including a field variable. The variable must be initialized to a value before performing the operation. If the reference to <idVar> is ambiguous (i.e., not declared at compile time and not explicitly qualified with an alias), <idVar> is assumed to be MEMVAR. You can assign field variables by declaring the field variable name in a FIELD statement or referring to the field name prefaced by the FIELD-> alias or the name of the work area. <cString> is the character string used in the operation with <idVar>. <nNumber> is the numeric expression used in the operation with <idVar>. <dDate> is the date value used in the operation with <idVar>. Description In addition to the simple and inline assignment operators (= and :=), there are a series of compound assignment operators that perform an operation then assign a value. They have the form: <idVar> <operator>= <exp> Each compound assignment expression is equivalent to the assignment expression: <idVar> := ( <idVar> <operator> <exp> ) For each data type that supports an operator, the compound assignment operator performs the same operation before performing the assignment operation. The following table details all of the compound operators: Compound Operators ------------------------------------------------------------------------ Operator Defined as Operations ------------------------------------------------------------------------ a += b a := (a + b) concatenation, addition a -= b a := (a - b) concatenation, subtraction a *= b a := (a * b) multiplication a /= b a := (a / b) division a %= b a := (a % b) modulus a ^= b a := (a ^ b) exponentiation ------------------------------------------------------------------------ Note: The exponentiation operator (**) does not have a corresponding compound assignment operator. The exponentiation compound assignment operator is ^=. Since the compound assignment operators are based on the inline assignment operator (:=), the operation returns the result of its operation as the value of the expression. This means you can use these operators within expressions just like the inline assignment operator (:=). Examples . These examples use the compound addition and concatenation assignment operator: // Character (concatenation) LOCAL cString := "Hello" ? cString += " there" // Result: "Hello there" // Date (addition) LOCAL dDate := CTOD("12/12/90") dDate += 12 // Result: 12/24/90 // Numeric (addition) LOCAL nValue := 10 ? SQRT(nValue += 15) // Result: 5.00 ? nValue // Result: 25.00 . These examples use the compound subtraction and concatenation assignment operator: // Character (concatenation) LOCAL cString := "Hello " ? cString -= "There" // Result: HelloThere // Date (subtraction) LOCAL dDate := CTOD("12/24/90") dDate -= 12 // Result: 12/12/90 // Numeric (subtraction) LOCAL nValue := 10 ? newValue := (nValue -= 5) ** 2 // Result: 25 ? nValue // Result: 5 . This example uses the compound multiplication assignment operator: LOCAL nValue := 10 ? newValue := (nValue *= 5) + 100 // Result: 150 ? nValue // Result: 50 . This example uses the compound division assignment operator: LOCAL nValue := 10 ? newValue := (nValue /= 5) + 100 // Result: 102.00 ? nValue // Result: 2.00 . This example uses the compound modulus assignment operator: LOCAL nValue := 10 ? newValue := (nValue %= 4) * 100 // Result: 200.00 ? nValue // Result: 2.00 . This example uses the compound exponentiation assignment operator: LOCAL nValue := 10 ? newValue := (nValue ^= 3) + 50 // Result: 1050.00 ? nValue // Result: 1000.00
See Also: % * ** + ++ – — / :=