EVAL()
 Avalia um bloco de código
------------------------------------------------------------------------------

 Sintaxe

     EVAL(<bBloco>, [<ListaArgBloco>]) --> UltValorBloco

 Argumentos

     <bBloco> é o bloco de código a ser avaliado.

     <ListaArgBloco> é uma lista de argumentos a ser enviada ao bloco de
     código antes que ele seja avaliado.

 Retorno

     EVAL() retorna o valor da última expressao dentro do bloco.  Um bloco
     de código pode retornar um valor de qualquer tipo.

 Descriçao

     EVAL() é uma funçao de tratamento de blocos de código.  Ela é o
     dispositivo mais básico no sistema Clipper para avaliar blocos de
     código.  Um bloco de código é um valor de dados especiais que se refere
     a uma parte do código de programa compilado.  Para maiores informaçoes
     sobre blocos de código, consulte o capítulo Conceitos Básicos neste
     livro.

     Para executar ou avaliar um bloco de código, você pode chamar EVAL()
     com o valor de bloco e quaisquer parâmetros.  Os parâmetros sao
     fornecidos ao bloco quando ele é executado.  Blocos de código podem ser
     uma série de expressoes separadas por vírgulas.  Quando um bloco de
     código é avaliado, o valor retornado é o valor da última expressao no
     bloco.

     Um bloco de código geralmente é compilado em tempo de compilaçao pelo
     compilador do Clipper.  Existem, porém, ocasioes em tempo de execuçao
     quando pode ser necessário que você compile um bloco de código a partir
     de uma cadeia de caracteres.  Isto pode ser feito utilizando-se o
     operador macro (&).

     EVAL() é frequentemente utilizado para criar funçoes iterator.  Estas
     funçoes aplicam um bloco para cada membro de uma estrutura de dados.
     AEVAL(), ASORT(), ASCAN(), e DBEVAL() sao funçoes iterator.  AEVAL(),
     por exemplo, aplica um bloco para cada elemento dentro de um vetor.

 Exemplos

       Este exemplo cria um bloco de código que incrementa um número
        de depois o avalia:

        bBloco := { |nArg| nArg + 1 }
        ? EVAL(bBloco, 1)                               // Resulta: 2

       Este exemplo demonstra como um bloco de código pode ser
        compilado em tempo de execuçao utilizando-se o operador macro (&):

        bBloco := &("{ |nArg| nArg + 1 }")
        ? EVAL(bBlock, 1)                               // Avalia o bloco

 Arquivos:  Biblioteca CLIPPER.LIB.
 To download this example - click here.

See Also: AEVAL() ASORT() ASCAN() DBEVAL()