Estrutura dos Arquivos DBF

Veja abaixo como um arquivo DBF armazena suas informações:

Cabeçalho
Byte Tamanho Conteúdo
01 01 Byte de Identificação
   003 = arquivo DBASE III sem campos memos
   131 = arquivo DBASE III com campos memos
   139 = arquivo DBASE IV com campos memos
   245 = arquivo FOXPRO com campos memos
0201 Ano da &uaculte;tima atualização do arquivo
0301 Mês da última atualização do arquivo
0401 Dia da última atualização do arquivo
0504 Número de registros no arquivo
0902 Posição do arquivo em que a seção de dados inicia
1102 Tamanho do registro
1320 Não utilizado
Após este cabeçalho, temos as definições dos campos. A descrição de cada campo ocupa 32 bytes, distribuídos da seguinte forma:
Byte Tamanho Conteúdo
0111 Nome do campo, seguido por um byte NULL, chr(0)
1201 Tipo
   C = Caractere
   D = Data
   L = Lógico
   N = Numérico
   M = Memo
   F = Floating Point (somente no DBASE IV e FOXPRO)
   P = Figura (Picture) (somente FOXPRO)
1304 Descolcamento de campo no registro
1701 Tamanho do campo, até 255 bytes
1801 Número de casas Decimais
1914 Não utilizado

Você deve estar se perguntando como o Clipper armazena o tamanho de campos maiores que 255 caracteres, visto que há apenas um byte reservado para esta informação. A explicação é simples: visto que para campos alfanuméricos não há casas decimais, o Clipper utiliza o byte reservado para as casas decimais para indicar o tamanho do campo. Se houver um valor diferente de zero nesta posição, ele é multiplicado por 256 e somado ao conteúdo da posição 17 (tamanho do campo). Com isso, se obtém o tamanho do campo.

Esta estrutura se repete para cada campo do arquivo. Se no arquivo houver 10 campos, teremos 320 (10 x 32) bytes usados para armazenar as definições dos campos.

Após estes dados temos os conteúdos dos campos, de acordo com a estrutura do arquivo.

Se desejarmos, poderemos calcular onde os dados se iniciam com a seguinte fórmula:

Posição Inicial dos Dados = 32 + (número de campos x 32)

Dica gentilmente cedida por Marcos Antonio Gambeta
voltar