= (asignación compuesta)
 Asignación compuesta-binario                    (Asignación)
------------------------------------------------------------------------------
 Sintaxis

     <idVar>  += <cCadena>        (concatenación)
     <idVar>  += <nNúmero>        (suma)
     <idVar>  -= <cCadena>        (concatenación)
     <idVar>  -= <nNúmero>        (resta)
     <idVar>  -= <dFecha>         (resta)
     <idVar>  *= <nNúmero>        (multiplicación)
     <idVar>  /= <nNúmero>        (división)
     <idVar>  %= <nNúmero>        (resto)
     <idVar> **= <nNúmero>        (exponenciación)

 Tipo

     Carácter, fecha, memo, numérico

 Operandos

     <idVar> es cualquier identificador de variable válido de cualquier
     tipo de almacenamiento, incluidas las variables de campo. La variable
     debe inicializarse antes de reallizar la operación.

     Si la referencia a <idVar> es ambigua (es decir, no está declarada en
     el momento de la compilación y no se ha identificado explícitamente con
     un alias) se considerará que <idVar> es una variable de memoria
     (MEMVAR). Puede asignar variables de campo declarando el nombre de la
     variable de campo en una sentencia FIELD o haciendo referencia al
     nombre de campo precedido por FIELD->alias o el nombre del área de
     trabajo.

     <cCadena> es la cadena de caracteres utilizada en la operación con
     <idVar>.

     <nNúmero> es la expresión numérica utilizada en la operación con
     <idVar>.

     <dFecha> es la fecha utilizada en la operación con <idVar>.

 Descripción

     Además del operador de asignación sencilla y de asignación en línea (=
     y :=), existen una serie de operadores de asignación compuesta que
     realizan una operación y luego asignan un valor. Tienen la forma:

     <idVar> <operador>= <exp>

     Cada expresión de asignación compuesta es equivalente a la expresión:

     <idVar> := ( <idVar> <operador> <exp> )

     Para cada tipo de datos utilizado por un operador, el operador de
     asignación compuesta realiza la misma operación antes de llevar a cabo
     la parte de asignación. La tabla siguiente detalla todos los operadores
     compuestos:

     Operadores compuestos
     ------------------------------------------------------------------------
     Operador       Definido como      Operaciones
     ------------------------------------------------------------------------
     a += b         a := (a + b)       concatenación, suma
     a -= b         a := (a - b)       concatenación, resta
     a *= b         a := (a * b)       multiplicación
     a /= b         a := (a / b)       división
     a %= b         a := (a % b)       resto
     a = b         a := (a  b)       exponenciación
     ------------------------------------------------------------------------

     Nota:  El operador exponenciación (**) no tiene un operador de
     asignación compuesta correspondiente. El operador de asignación
     compuesta de exponenciación es =.

     Como los operadores de asignación compuesta están basados en el
     operador de asignación en línea (:=), la operación devuelve el
     resultado de la operación como valor de la expresión. Esto significa
     que puede utilizar estos operadores dentro de expresiones, exactamente
     igual que el operador de asignación en línea (:=).

 Ejemplos

      Estos ejemplos utilizan el operador de asignación compuesta de
        suma y concatenación:

        // Carácter (concatenación)
        LOCAL cCadena := "Hola"
        ? cCadena += " Manuel"       // Resultado: "Hola Manuel"

        // Fecha (suma)
        LOCAL dFecha := CTOD("12/12/90")
        ? dFecha += 12               // Resultado: 24/12/90

        // Numérico (suma)
        LOCAL nValor := 10
        ? SQRT(nValor += 15)         // Resultado:  5.00
        ? nValor                     // Resultado: 25.00

      Estos ejemplos utilizan el operador de asignación compuesta de
        resta y concatenación:

        // Carácter (concatenación)
        LOCAL cCadena := "Hola   "
        ? cCadena -= "Manuel"        // Resultado: Hola Manuel

        // Fecha (resta)
        LOCAL dFecha := CTOD("24/12/90")
        ? dFecha -= 12               // Resultado: 12/12/90

        // Numérico (resta)
        LOCAL nValor := 10
        ? ValorNuevo := (nValor -= 5) ** 2     // Resultado: 25
        ? nValor                               // Resultado:  5

      Este ejemplo utiliza el operador de asignación compuesta de
        multiplicación y asignación:

        LOCAL nValor := 10
        ? ValorNuevo := (nValor *= 5) + 100    // Resultado: 150
        ? nValor                               // Resultado:  50

      Este ejemplo utiliza el operador de asignación compuesta de
        división y asignación:

        LOCAL nValor := 10
        ? ValorNuevo := (nValor /= 5) + 100    // Resultado: 102.00
        ? nValor                               // Resultado:   2.00

      Este ejemplo utiliza el operador de asignación compuesta de
        resto y asignación:

        LOCAL nValor := 10
        ? ValorNuevo := (nValor %= 4) * 100    // Resultado: 200.00
        ? nValor                               // Resultado:   2.00

      Este ejemplo utiliza el operador de asignación compuesta de
        exponenciación y asignación:

        LOCAL nValor := 10
        ? ValorNuevo := (nValor = 3) + 50     // Resultado: 1050.00
        ? nValor                               // Resultado: 1000.00

 To download this example - click here.

See Also: % * ** + ++ - -- / :=