LOCAL
 Declara e inicializa variables y matrices locales
------------------------------------------------------------------------------
 Sintaxis

     LOCAL <identificador> [[:= <inicializador>],...]

 Argumentos

     <identificador> es el nombre de una variable o matriz que se
     declara como local. Si el <identificador> va seguido de corchetes ([]),
     se crea una matriz. Si el <identificador> es una matriz, la sintaxis
     para especificar el número de elementos de cada dimensión puede ser
     matriz[<nElementos>, <nElementos2>,...] o
     matriz[<nElementos>][<nElementos2>]... El número máximo de elementos
     por dimensión es 4.096. El número máximo de dimensiones por matriz sólo
     está limitado por la memoria disponible.

     <inicializador> es la asignación opcional de un valor a una nueva
     variable local. Los identificadores de matrices, no obstante, no pueden
     recibir valores con un <inicializador>. Un <inicializador> para una
     variable local está formado por el operador de asignación en línea (:=)
     seguido por cualquier expresión válida de CA-Clipper incluida una
     matriz literal. Si no se especifica ningún <inicializador> explícito,
     se asigna a la variable un valor inicial NIL. En caso de una matriz,
     todos los elementos son NIL.

     Nota: El operador de macro (&) no puede utilizarse en una
     declaración LOCAL.

 Descripción

     LOCAL es una sentencia que declara locales una o más variables o
     matrices respecto al procedimiento o función actual definida por el
     usuario y debe especificarse antes que cualquier sentencia ejecutable,
     incluidas PRIVATE, PUBLIC y PARAMETERS. Las declaraciones de variables
     locales ocultan todas las variables privadas heredadas y públicas
     visibles que tengan el mismo nombre. No obstante, una sentencia LOCAL
     que declare una variable ya declarada causa un error grave de
     compilación y no se genera código objeto (.OBJ). Este error puede
     suceder por existir dos declaraciones de la misma variable en la misma
     rutina o como resultado de volver a declarar una variable con ámbito
     válido en todo el fichero. Las sentencias de declaración incluyen
     FIELD, MEMVAR y STATIC.

     Las variables locales son visibles sólo dentro del procedimiento o
     función actual definida por el usuario y, a diferencia de las variables
     privadas, no son visibles en las rutinas invocadas. Las variables
     locales se crean automáticamente cada vez que se ejecuta el
     procedimiento en el que están declaradas. Continúan existiendo y
     mantienen sus valores hasta que el procedimiento o función definida por
     el usuario en el que están declaradas devuelve el control al código que
     lo invocó. Si un procedimiento o función definida por el usuario se
     invoca recursivamente (se llama a sí mismo), cada activación crea un
     nuevo conjunto de variables locales.

     El valor inicial de las variables locales y elementos de matriz es NIL
     si no se inicializan explícitamente en la lista de inicializadores o
     con una asignación. La expresión del inicializador puede ser cualquier
     expresión válida de CA-Clipper, incluyendo llamadas a función. Recuerde
     que las declaraciones de matrices no pueden tener un inicializador.

     El número máximo de variables locales en un programa sólo está limitado
     por la memoria disponible. No obstante, las matrices asignadas a una
     variable local tienen un límite de 4.096 elementos por dimensión.

     Si desea más información sobre las declaraciones y ámbitos de
     variables, consulte el apartado Variables en el capítulo "Conceptos
     Básicos" de la Guía de Programación y Utilidades.

 Notas

     ■ Inspección de variables locales en el depurador: Para acceder
        a nombres de variables locales con el depurador de CA-Clipper a
        nivel del DOS, debe compilar los ficheros de programa (.prg)
        utilizando la opción /B para incluir la información de las
        variables locales en el fichero objeto.

     ■ Parámetros locales: Declare una lista de parámetros locales
        como parte de una declaración FUNCTION o PROCEDURE, encerrando la
        lista de parámetros entre paréntesis después de <idFunción>:

        FUNCTION <idFunción>(<lista idParám>)

        La declaración de parámetros locales tiene precedencia sobre la
        creación de parámetros privados con la sentencia PARAMETERS.

     ■ Expresiones de macro: No se puede hacer referencia a variables
        locales en variables y expresiones de macro. Si hace referencia a
        una variable local dentro de una variable que contiene una expresión
        de macro, se hace referencia en su lugar a alguna variable pública o
        privada que tenga el mismo nombre. Si no existe tal variable, se
        produce un error de ejecución.

     ■ Ficheros de memoria: Las variables locales no pueden guardarse
        o restablecerse (con SAVE o RESTORE) desde ficheros de memoria
         (.mem).

     ■ Tipo de una variable local: Dado que TYPE() utiliza el
        operador de macro (&) para evaluar su argumento, no puede utilizarse
        para determinar el tipo de una variable local o estática, o una
        expresión que contenga alguna referencia de variable local o
        estática. La función VALTYPE() sirve para averiguar este valor.
        VALTYPE() evalúa su argumento y devuelve su tipo.

 Ejemplos

      Este ejemplo declara dos matrices locales y dos variables
        locales:

        LOCAL aMatr1[20, 10], aMatr2[20][10], var1, var2

      Este ejemplo declara dos variables locales con
        inicializadores. La primera se inicializa con un valor de fecha y la
        segunda con una matriz literal:

        LOCAL dCuando := DATE()
        LOCAL aVegetales := {"Tomate", "Col", "Judía"}

 To download this example - click here.

See Also: FUNCTION PARAMETERS PRIVATE PROCEDURE PUBLIC STATIC