Bug do Milênio

O ano 2000 chegou!!! Você está preparado???

 
 
 
 

ATENÇÃO: Todas as datas com ano 00 gravadas antes do SET EPOCH serão tratadas como 1900! Ou seja, após a implantação deste comando, você poderá ter datas com ano 00 que signifiquem 1900 e 2000 no mesmo DBF!!! Descobri isto a duas semanas no meu trabalho, sem embargo, só tive tempo p/ publicar isto agora devido à atribulação de tempo com provas finais na universidade. Não obstante, elaborei uma função de uso genérico que lê todos os DBFs do diretório corrente e lê todos os campos do tipo data de cada DBF e então transforma as datas interpretadas como 1900 para 2000!!! Quer mais moleza que essa??? Batizei a função de FIXDATE, ela está em anexo. Inclui o fonte p/ você testar c/ o debug se quiser comprovar!!! Qualquer dúvida ou comentário poste-a no fórum, ok?!

Muito bem, então você tem campos tipo caracter para armazenar informações de datas, como por exemplo apenas o ano e o mês da data <AAMM> ou <MMAA>. Bem, você deu azar... Calma! Apenas terá um pouco mais de trabalho... far-se-á necessário acrescentar mais 2 (dois) digitos ao tamanho destes campos na base de dados e no programa para receber o século, mudando todo o código para manipular estes dados no seu sistema para isso. Não se desespere! Primeiramente, copie seu sistema para outro diretório para este trabalho, pois pode demorar e você precisar dar algum tipo de manutenção urgente. Para ajudar-lhe, colocarei a disposição o programa Y2K.PRG que também está em anexo, ele detectará todas as bases de dados que contiverem este campo, altere estas bases de dados acrescentando mais 2 caracteres ao seu tamanho e depois rode o programa de novo, ele irá acrescentar os dígitos "19" na frente no ano. Esta minha função ajudará apenas na preparação dos bancos de dados, no programa é com você!!! Este trabalho merece muita atenciosidade, então: Boa concentração e mãos à obra!!!

Se seu sistema possui apenas campos do tipo date para armazenar dados do tipo data será muito simples. O clipper possui um comando chamado Set Epoch to <YYYY>, onde YYYY é o ano base. Por exemplo, Set Epoch to 1980 trataria os campos date que tivesse um ano menor que 80 como do século seguinte e um ano maior que 80 como do mesmo século, i.e. de dd/mm/00 a dd/mm/79 seriam tratadas do século XXI (2000) e as datas de dd/mm/80 a dd/mm/99 do século XX (1980). Neste caso, sabendo que sua empresa está no mercado desde 1985 e não possui nenhum registro antes deste ano, você colocaria Set Epoch to 1985 no programa principal do seu sistema.
Publique seu know-how aqui também, registre-se e inclua uma subpágina ou acrescente seus comentários.hehehe!
AnexoTamanho
fixdate.zip1.38 KB
y2k.zip1.97 KB