/*
 * $Id: memvar2.txt 9312 2008-09-05 00:08:34Z vszakats $
 */

/*
 * Las siguientes partes son derechos adquiridos de sus autores individuales.
 * www - http://www.harbour-project.org
 *
 * Copyright 2003 Alejandro de Grate <alex_degarate@hotmail.com>
 * Documentacin en Espaol de:
 *   FIELD, LOCAL, MEMVAR
 *
 * Vea doc/license.txt por los trminos de la licencia.
 *
 */

/*  $DOC$
 *  $COMMANDNAME$
 *      FIELD
 *  $CATEGORY$
 *      Comando
 *  $ONELINER$
 *      Declara una lista de nombres de campo de una base de datos
 *  $SYNTAX$
 *      FIELD <xField> [,<xFieldn...>  [in <cDatabase>]
 *  $ARGUMENTS$
 *      <xField>    Un nombre de campo vlido
 *
 *      <xFieldn>   Nombres de campo adicionales
 *
 *      <cDatabase> Un nombre de alias vlido
 *  $RETURNS$
 *      Nada
 *  $DESCRIPTION$
 *      Este comando declara los nombres de los campos <xField> y siguientes
 *      <xFieldn> con una identificador opcional de alias <cDatabase> para
 *      cada uno.
 *      Este comando le permite a Harbour resolver cualquier referencia a un
 *      campo especificado en la lista de campos, vindolo como un campo
 *      cuando no es referenciado por un alias.
 *      Si un campo no est mencionado en la lista y no est explicitamente
 *      marcado con el identificador de alias, ste puede ser visto como una
 *      variable de memoria, lo cual puede causar errores de ejecucin.
 *
 *      Este comando no tiene efecto sobre variables de memoria  sobre
 *      referencias a campos metidos dentro de una macro-expresin.
 *  $EXAMPLES$
 *      FUNCTION MAIN
 *        FIELD iD
 *        FIELD Name
 *        USE TESTS NEW
 *        name := "Sales"
 *        Id := 5
 *        USE
 *      RETURN NIL
 *  $TESTS$
 *      Ver ../tests/testwarn.prg
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      Este comando trabaja exactamente como en CA-Cl*pper.
 *  $PLATFORMS$
 *      Todas
 *  $FILES$
 *      Ninguno
 *  $SEEALSO$
 *      MEMVAR,PRIVATE,PUBLIC,STATIC
 *  $END$
 */


/*  $DOC$
 *  $COMMANDNAME$
 *      LOCAL
 *  $CATEGORY$
 *      Comando
 *  $ONELINER$
 *      Crea e inicializa una variable de memoria  un array LOCAL
 *  $SYNTAX$
 *      LOCAL <xVar> [:= <xInit> ]
 *      LOCAL <xVar1>[:= <xInit1>], ..., <xVarN>[:= <xInitN>]
 *  $ARGUMENTS$
 *      <xVar>    Nombre de variable de Memoria  array.
 *
 *      <xInit>   Valor a ser asignado a la variable  array
 *  $RETURNS$
 *      Nada
 *  $DESCRIPTION$
 *      Este comando Crea una variable de memoria  un array LOCAL
 *      El nombre de cualquiera es especificado en <xVar>.
 *      Si ms de una variable est siendo inicializada con la sentencia
 *      LOCAL, separe cada una de ellas con una coma.
 *      Si una variable  un array le va a ser asignado un valor de inicio
 *      esa expresin puede ser especificada en <xInit>, usando el operador
 *      de asignacin en lnea <:=>
 *
 *      Nota:
 *      Si el modo de compilacin "Fuertemente Tipeado" (Strong type) es
 *      usado, el compilador chequear si el valor recibido coincide con el
 *      tipo especificado en <xType>.
 *
 *      Las Variables LOCALes son smbolos generados en tiempo de ejecucin
 *      y son resueltos en tiempo de compilacin (???).
 *      La visibilidad y tiempo de vida de una variable  array LOCAL est
 *      limitada a la funcin  procedimiento en la cual sta es definida.
 *
 *      Ninguna macro-expansin es permitida de una sentencia de declaracin
 *      LOCAL.
 *
 *      Ningn comando de Harbour distinto a FUNCTION, PROCEDURE, PUBLIC,
 *      PRIVATE, PARAMETERS, MEMVAR, STATIC y FIELD, pueden preceder a la
 *      sentencia LOCAL (esto esta mal)
 *
 *      Las referencias a un array LOCAL pueden no ser inicializadas (por
 *      ej. asignarle un valor) en la misma lnea de comando junto con la
 *      sentencia LOCAL. Esto puede ser hecho luego en el programa.
 *
 *      Variables y arrays de tipo LOCAL no son afectadas por el comando
 *      RELEASE.
 *  $EXAMPLES$
 *      Function Main2()
 *      Local n , lVar
 *
 *      n := IIF( lVar, 'A', 3 )
 *      n := 2
 *      n := 'a'
 *      n := seconds() + 2
 *      n := int( seconds() + 2 )
 *      Return( NIL )
 *  $TESTS$
 *      Ver ../tests/testwarn.prg por ms ejemplos
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      Este comando trabaja exactamente como en CA-Cl*pper.
 *  $PLATFORMS$
 *      Todas
 *  $FILES$
 *      Ninguno
 *  $SEEALSO$
 *      FIELD,PRIVATE,PUBLIC,STATIC,MEMVAR
 *  $END$
 */

/*  $DOC$
 *  $COMMANDNAME$
 *      MEMVAR
 *  $CATEGORY$
 *      Comando
 *  $ONELINER$
 *      Declara variables PRIVATE, PUBLIC y arrays.
 *  $SYNTAX$
 *      MEMVAR <xVar>
 *  $ARGUMENTS$
 *      <xVar> Nombre de variable de Memoria
 *  $RETURNS$
 *      Nada
 *  $DESCRIPTION$
 *      Este comando le dice al compilador como resolver alguna referencia
 *      a una variable de memoria designada dentro de esta lista  si posee
 *      un alias explcito con el prefijo "M->"  bien "MEMVAR->"
 *      Solamente aquellas variables de memoria que no contengan ese prefijo
 *      son afectadas por este comando. Aquellas variables de memoria dentro
 *      de expansiones macro, no son afectadas por este comando.
 *
 *      La declaracin MEMVAR debe aparecer antes que cualquier comando
 *      ejecutable; esta es similar a las sentencias LOCAL, STATIC, FIELD,
 *      PARAMETERS, FUNCTION y PROCEDURE
 *  $EXAMPLES$
 *      MEMVAR y As Numeric
 *      Function Main2()
 *      LOCAL n , lVar
 *
 *      n := IIF( lVar, 'A', 3 )
 *      n := 2
 *      n := 'a'
 *      n := seconds() + 2
 *      n := int( seconds() + 2 )
 *      y := n
 *      ? y
 *      Return( NIL )
 *  $TESTS$
 *      Ver ../tests/testwarn.prg por ms ejemplos
 *  $STATUS$
 *      R
 *  $COMPLIANCE$
 *      Este comando trabaja exactamente como en CA-Cl*pper.
 *  $PLATFORMS$
 *      Todas
 *  $FILES$
 *      Ninguno
 *  $SEEALSO$
 *      LOCAL,STATIC,FIELD,PRIVATE,PUBLIC
 *  $END$
 */


