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 del sistema que devuelve el tipo de la expresión especificada. Puede comprobar la validez de la expresión mientras esta utilice funciones DPXBASE.CH 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 utilizar TYPE() para 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. Permite determinar 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 vía especificada. Si la expresión IF() o la vía evaluada no son válidos, 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 DPXBASE.CH (una función definida por el usuario o 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 DPXBASE.CH.