EOF()
 Determina se o final do arquivo foi atingido
------------------------------------------------------------------------------

 Sintaxe

     EOF() --> lLimite

 Retorno

     EOF() retorna verdadeiro (.T.) quando é feita uma tentativa de mover o
     ponteiro de registros para além do último registro lógico em um arquivo
     de banco de dados; do contrário, ela retorna falso (.F.).  Caso nao
     haja nenhum arquivo de banco de dados aberto na área de trabalho
     corrente, EOF() retorna falso (.F.).  Se o arquivo de banco de dados
     corrente nao possui registros, EOF() retorna verdadeiro (.T.).

 Descriçao

     EOF() é uma funçao de tratamento de banco de dados utilizada para
     testar uma condiçao de limite de final de arquivo quando o ponteiro de
     registros está se movendo para frente em um arquivo de banco de dados.
     Qualquer comando que possa mover o ponteiro de registros pode
     configurar EOF().

     A aplicaçao mais típica é como parte do argumento <lCondicao> de uma
     construçao DO WHILE que processa registros sequencialmente em um
     arquivo de banco de dados.  Neste caso <lCondicao> incluiria um teste
     para .NOT. EOF(), forçando o laço DO WHILE a terminar quando EOF()
     retornar verdadeiro (.T.).

     Tanto EOF() quanto FOUND() sao frequentemente utilizados para verificar
     se um comando SEEK, FIND, ou LOCATE falhou.  Com estes comandos, porém,
     é preferível usar FOUND().

     Quando EOF() retorna verdadeiro (.T.), o ponteiro de registros é
     posicionado em LASTREC() + 1 sem importar se há um SET FILTER ativo ou
     se SET DELETED está ON.  Caso haja tentativas de mover o ponteiro de
     registros para frente, o mesmo resultado será retornado sem erro.  Uma
     vez que a funçao EOF() retorna verdadeiro (.T.), ela retém seu valor
     até que haja outra tentativa de mover o ponteiro de registros.

     O padrao é que EOF() opere na área de trabalho correntemente
     selecionada.  Pode-se fazer esta funçao operar em uma área de trabalho
     nao selecionada desde que esta seja especificada em uma expressao alias
     (veja o exemplo abaixo).

 Exemplos

       O exemplo a seguir demonstra o resultado da funçao EOF()
        quando se tenta deliberadamente mover o ponteiro de registros para
        além do último registro:

        USE Sales
        GO BOTTOM
        ? EOF()                          // Resulta: .F.
        SKIP
        ? EOF()                          // Resulta: .T.

       Este exemplo utiliza expressoes alias para questionar o valor
        de EOF() em áreas de trabalho nao selecionadas:

        USE Sales NEW
        USE Customer NEW
        ? Sales->(EOF())
        ? Customer->(EOF())

       Este exemplo ilustra como EOF() pode ser utilizada como parte
        de uma condiçao para operaçoes sequenciais em bancos de dados:

        USE Sales INDEX CustNum NEW
        WHILE !EOF()
           nOldCust := Sales->CustNum
           nTotalAmount := 0
           WHILE nOldCust = Sales->CustNum .AND. (!EOF())
              ? Sales->CustNum, Sales->Description, Sales->SaleAmount
              nTotalAmount += Sales->SaleAmount
              SKIP
           ENDDO
           ? "Quantia total: ", nTotalAmount
        ENDDO

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

See Also: BOF() FOUND() LASTREC() GO LOCATE SEEK SKIP