TYPE()
 Determina el tipo de una expresión
------------------------------------------------------------------------------
 Sintaxis

     TYPE(<cExp>) --> cTipo

 Argumentos

     <cExp> es la expresión de caracteres cuyo tipo se va a determinar.
     <cExp> puede ser un campo, con o sin alias, una variable pública o
     privada, o una expresión de cualquier tipo.

 Devuelve

     TYPE() devuelve uno de los siguientes caracteres:

     Valores devueltos por TYPE()
     ------------------------------------------------------------------------
     Devuelve          Significado
     ------------------------------------------------------------------------
     A                 Matriz
     B                 Bloque de código
     C                 Carácter
     D                 Fecha
     L                 Lógico
     M                 Memo
     N                 Numérico
     O                 Objeto
     U                 NIL, local o estática
     UE                Error de sintaxis
     UI                Error indeterminado
     ------------------------------------------------------------------------

 Descripción

     TYPE() es una función de sistema que devuelve el tipo de la expresión
     especificada. Puede comprobar la validez de la expresión mientras ésta
     utilice funciones CLIPPER.LIB y no haga referencia a variables locales
     o estáticas, funciones definidas por el usuario o funciones
     predefinidas contenidas en EXTEND.LIB.

     TYPE() es similar a VALTYPE(), pero utiliza el operador de macro (&)
     para determinar el tipo del argumento. Esto impide a TYPE() determinar
     el tipo de variables locales o estáticas. VALTYPE(), por contra,
     permite evaluar una expresión y determina el tipo de datos del valor
     devuelto. VALTYPE() determina el tipo de funciones definidas por el
     usuario y de variables locales y estáticas.

 Notas

     ■ Referencias a matrices: Las referencias a matrices públicas y
        privadas devuelven "A". Las referencias a elementos de matrices
        devuelven el tipo del elemento.

     ■ IF(): Para devolver el tipo de datos de una expresión IF(),
        TYPE() evalúa la condición y luego devuelve el tipo de la expresión
        seleccionada. Si la expresión IF() o la opción evaluada no son
        válidas, TYPE() devuelve "UE".

     ■ Comprobación de parámetros: TYPE() sólo puede comprobar la
        validez de los parámetros recibidos con la sentencia PARAMETERS. Al
        verificar un parámetro declarado como parte de una declaración
        FUNCTION o PROCEDURE, devuelve siempre "U", porque los parámetros
        locales no tienen un símbolo en la tabla de símbolos. Para
        determinar si se ha saltado un argumento o dejado al final de la
        lista de argumentos, compare el parámetro con NIL o utilice la
        función VALTYPE().

     ■ Funciones definidas por el usuario y contenidas en EXTEND.LIB:
        Si en una expresión se hace una referencia a una función que no se
        encuentra en CLIPPER.LIB (una función definida por el usuario o de
        EXTEND.LIB), TYPE() devuelve "UI". Si la función definida por el
        usuario no ha sido enlazada al programa actual, TYPE() devuelve
        "U".

 Ejemplos

      Estos ejemplos muestran diversos resultados de la utilización
        de TYPE():

        ? TYPE('SUBSTR("Hola, ¿qué tal?", 4, 5)')        // Resultado: C
        ? TYPE("UDF()")                                  // Resultado: UI
        ? TYPE('IF(.T., "verdadero", 12)')               // Resultado: C

      Este ejemplo muestra dos métodos de comprobar la existencia y
        tipo de los parámetros declarados:

        FUNCTION ParamPrueba
           PARAMETERS cParam1, nParam2
           IF cParam1 = NIL
              ? "No se ha pasado el primer parámetro"
              cParam1 := "Valor por defecto"
           ENDIF
           //
           IF TYPE('nParam2') == "U"
              ? "No se ha pasado el segundo parámetro"
           ENDIF
           .
           . <sentencias>
           .
           RETURN NIL

 Ficheros   La biblioteca asociada es CLIPPER.LIB.
 To download this example - click here.

See Also: VALTYPE()