Histórico da Página
Sintaxe
EOF()
Propósito
Determina se o final do arquivo de dados foi atingido.
Argumentos
Nenhum.
Utilização
A função EOF(), que significa end of file, é utilizada para verificar se o final de um arquivo de dados foi atingido através da movimentação progressiva (do início para o fim) pelos seus registros. Desta forma, evita-se executar a função dbSkip() quando já se está no final do arquivo. Qualquer função que mova o apontador de registros pode alterar ou definir o resultado da função EOF().
Quando o apontador de registros está posicionado após o último registro do arquivo de dados, a função EOF() retorna verdadeiro (.T.). Qualquer tentativa de deslocar o apontador, ultrapassando o último registro, fornece o mesmo resultado, sem causar uma condição de erro.
Caso o arquivo de dados não contenha registros, a função EOF() também retornará verdadeiro (.T.). Contudo, se não houver nenhum arquivo de dados aberto na área de trabalho selecionada, a função retornará falso (.F.).
A função EOF() mantém o seu valor até que uma nova movimentação do apontador de registros seja efetuada.
Dicas
Caso o arquivo de dados tenha um índice, a função EOF() detectará o fim do arquivo de acordo com a ordem estabelecida por este índice.
A função BOF() é o inverso da função EOF(), pois detecta o início de um arquivo de dados.
A mais típica utilização da função EOF() é como parte da condição de um comando WHILE. Neste caso, a condição deverá ser verdadeira enquanto não for atingido o final do arquivo.
Para verificar se um registro foi encontrado, caso se utilize a pesquisa exata nas funções dbSeek() ou MsSeek(), deve-se utilizar a função FOUND(), e não a função EOF(). Apenas nos casos de pesquisa aproximada é que se deve utilizar a função EOF() em conjunto com a função FOUND() para verificar se foi encontrado um registro que atenda a chave de pesquisa.
Normalmente, a função EOF() opera sobre a área de trabalho selecionada. Contudo, pode-se operar sobre outra área de trabalho através da especificação de um alias. Por exemplo: <alias>->EOF() verifica se foi atingido o final do arquivo aberto na área de trabalho especificada pelo alias.
Exemplos
dbSelectArea(“SD2”)
// De acordo com o arquivo SIX, a chave de pesquisa é D2_FILIAL + D2_CLIENTE + D2_LOJA
dbSetOrder(8)
dbSeek(“01” + “000001” + “02”) // Filial: 01 / Código: 000001 / Loja: 02
WHILE !EOF() .AND. xFilial(“SA1”) == SA1->A1_FILIAL .AND. SA1->A1_COD == “000001” .AND. SA1->A1_LOJA == “02”
nVlrTot += SD2->D2_VALOR
dbSkip()
ENDDO