EVAL( )

 Evalúa un bloque de código

Sintaxis

     EVAL(<bBloque>, [<ListaArgBloque>]) –> UltimoValorBloque

Argumentos

<bBloque> es el bloque de código que se debe evaluar.

<ListaArgBloque> es una lista de argumentos para enviar al bloque de código antes de que se evalúe.

Devuelve

EVAL() devuelve el valor de la última expresión dentro del bloque. Un bloque de código puede devolver un valor de cualquier tipo.

Descripción

EVAL() es una función de bloque de código. Es la función más básica de evaluación de bloque de código del sistema DPXBASE. Un bloque de código es un valor de datos especial que hace referencia a un fragmento de código de programa compilado. Para obtener más información sobre bloques de código, consulte el capítulo Conceptos Básicos de la guía Programación y Utilidades.

Para ejecutar o evaluar un bloque de código, llame a EVAL() con el valor de bloque y cualquier parámetro. Cuando se ejecuta el bloque se le suministran los parámetros. Los bloques de código pueden ser una serie de expresiones separadas por comas. Cuando se evalúa un bloque de código, el valor de retorno es el valor de la última expresión del bloque.

Normalmente, el compilador de DPXBASE compila un bloque de código en el tiempo de compilación. Sin embargo, existen ocasiones en las que es necesario compilar un bloque de código desde una cadena de caracteres en tiempo de ejecución. Este proceso puede realizarse utilizando el operador de macroexpresiones (&).

EVAL() se utiliza, con frecuencia, para crear funciones de iteración. Estas son funciones que aplican un bloque a cada miembro de una estructura de datos. AEVAL(), ASORT(), ASCAN() y DBEVAL() son funciones de iteración (por ejemplo, AEVAL() evalúa un bloque para cada elemento de una matriz).

Ejemplos

     ¦  En este ejemplo se crea un bloque de código que incrementa un

        número y después lo evalúa:

 

        bBloque := { nArg nArg + 1 }

        ? EVAL(bBloque, 1)                     // Resultado: 2

 

     ¦  En este ejemplo se muestra la compilación de un bloque de

        código en el tiempo de ejecución utilizando el operador de

        macroexpresiones (&):

 

        // Compilar una cadena en un bloque

        bBloque := &(“{ nArg nArg + 1 }”)

 

        // Evaluar el bloque

        ? EVAL(bBloque, 1)

 Ficheros:  La biblioteca asociada es DPXBASE.CH.