[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [escepticos] Cambios en el FAQ



Mar wrote:

> No, me refiero a que para "solucionar" el problema del año 2000 lo que han hecho muchos programadores de herramientas de programación o de bases de datos es que si las dos últimas cifras son menores de 50 se asumirá que nos referimos al 2000 y cuando sea mayor de 50 al 1900. Así si pones 01 el ordenador entenderá 2001 y si pones 99 entenderá 1999, pero qué pasará en el 2050? o 2051? Volverá a haber problemas.
> 
> Confío , por otra parte, que dentro de 50 anyos habrá evolucionado tanto todo que ya habremos reciclado todo este tipo de programas con "parches" y no habrá ningún problema, pero a saber...
> 
> Saludos!
> 
>    Mar Fontana Torroba

[Mig] 
El problema mayor surge cuando se deben ordenar registros por fecha
(algo muy comun en procesos contables), asi que imagina que lo que puede
suceder con un japones colocando sus certificados de ahorro a vencer en
el 2051 (es que son muy optimitas y ahorrativos). Resulta que para la
maquina los certificados venceran en 1951, o peor aun, una persona
nacida en 2003 aparecera en los relatorios de polizas de seguro
ordenadas por fecha antes que su padre que nacio en 1970 por que los
numeros absolutos se mantienen (03/mm/dd contra 70/mm/dd).
Las empresas que operan a corto plazo estan adoptando muchas de ellas
esta solucion, por que no deja de ser interesante practica y sobre todo
BARATA (no se necesitan recompilar los programas ni reformular los
lay-outs de ficheros).

Sobre este punto, una pregunta: recuerdo que en lenguaje COBOL (muy
importante por la cantidad de aplicativos ejecutando en este lenguaje)
se usan dos bytes enteros para guardar los digitos del año (puede que
este equivocado, hace tanto tiempo..), por ejemplo 91 queda como 0901
(heaxadecimal) internamente, un verdadero desperdicio sabiendo que los
cuatro bits a la izquierda de cada byte nunca son usados por que nunca
es guardado un numero mayor que 9 en cada byte. Sabe alguien si las
empresas que fabrican los compiladores COBOL estan haciendo adaptaciones
para permitir el uso de los cuatro primeros bits (que nunca se
utilizan?)
Paso a explicar mi idea: los numeros se graban internamente en COBOL en
formato binario, por ejemplo 91 se graba usando 2 bytes como 0901
(hexadecimal).
SI los compiladores detectasen que el primer bit a la izquierda NO es
cero, entonces asumiria que estamos hablando del año 2000, y
automaticamente sumaria 2000 a lo que venga atras. Esta solucion
inclusive mantendria la ordenacion de fechas correctas en todos los
casos, y mantendria el tamaño de 2 bytes para los años (no necesitando
ser alterado el formato de los ficheros, una verdadera pesadilla) y aun
las empresas no tendrian que hacer NINGUNA reconversion de fechas, pues
las fechas antiguas estan grabadas originalemnte con los cuatro bits mas
a la izquierda sin uso (a no ser el signo, si ese es el caso, entonces
se tendria que escojer otro bit entre los cuatro para decir que estamos
hablando del 2000).
Asi el año 99 estaria internamente formatado como 09 09 (hexa), y el año
2000 estaria formatado como F0 00 (hexa), el año 2001 estaria como F0 01
..., logico que F0 00 seria mayor que 09 09 

Mig