Acabo de ver um problema inusitado (pelo menos pra mim) e embora já tenha resolvido, resolvi compartilhar.
Usando o "DBU32" (e depois o DBUALL, ambos oferecidos por nosso amigo Jairo Maia), ao alterar o nome de um campo caracter, houve corrupção de dados e aumento do número de registros. Com imagens ficará mais fácil visualizar:
Estava assim...
... e ficou assim!
Notem que nos 2 casos o posicionamento é no primeiro registro e no mesmo campo. Notem também o total de registros. Só o que fiz foi alterar o nome do campo, de CLIE_CPF para CLIE_DOC1. Como sempre, o DBU confirma a intenção de alterar o nome do campo, executa sem apresentar erros, mas o resultado final fica comprometido. Repeti 3 vezes, restaurando o DBF original, e aconteceu a mesma coisa em todas as tentativas.
Ainda pior, alguns registros abaixo:
Não me lembro de ter visto algo assim. Por outro lado, não me lembro quando foi a última vez que alterei o nome de um campo.
Surpreso com o ocorrido, a primeira solução em que pensei foi escrever uma pequena rotina que criaria um novo campo (CLIE_DOC1), copiaria as informações do antigo campo (CLIE_CPF) e depois excluiria esse antigo campo (CLIE_CPF). Mas antes resolvi usar o excelente STRU, oferecido por nosso amigo Pablo César, e funcionou perfeitamente!
Estou curioso... alguém já viu este problema com o DBU, mesmo que compilado pelo Clipper?