La ventana de la centuria (o el posible problema del 2020)

Image result for Y2K



Hace más de 20 años, el mundo enfrentaba un galimatías: El Y2K o también conocido como "El problema del año 2000". El problema se refería a una situación particular de algunos programas y computadoras, donde las fechas (por limitaciones de espacio) se escribían como una secuencia de 6 números: 000000 (que podía significar: mmddaa, ddmmaa o aammdd, eso lo establecía el programador). Como puede verse, 2 números para referirse al año requería de que la computadora sumara 1900 para poder hacer una fecha válida. Así, 190998 podía significar 19 de septiembre de 1998 (una vez que la computadora sumara 1900).

El problema con esta suma constante, es que las máquinas estaban llegando al borde del siglo, que terminaría en el año 2000, y que a la hora de tener una fecha como 190900, el sistema lo interpretaría como 19 de septiembre de 1900, y no de 2000 como debía de esperarse. Hay distintos problemas relacionados con esto y, en general, se relacionaban con problemas de cálculo en los programas que hacían cálculos automatizados de acuerdo con la fecha:
  • Un programa de nómina semanal podría no calcular la nómina del día 1 de enero de 2000, que fue sábado, pues si tenía el problema del año 2000, el 1 de enero de 1900 era lunes. Así, no tendría nada que calcular.
  • Un programa de pago de servicios que se calculara al del 1 al 1 de cada mes, calcularía un monto negativo pues el servicio se habría utilizado -99 años.
  • Programas de pago a proveedores podrían sufrir los mismos desperfectos en los cálculos relacionados con fechas.
  • Computadoras, al encender, no podrían establecer la fecha en 1 de enero de 1900 y automáticamente la restablecerían en 1 de agosto de 1980 (viernes) (la fecha, en general, predeterminada de las PC).
Como podemos ver, este problema podía afectar a las computadoras incluso a nivel de hardware. Aunque las computadoras disponibles a partir de 1996 ya no tenían este problema, todavía había un sinnúmero de computadoras y mainframes antiguos que podrían cargar con este problema y traer consigo consecuencias que, en su momento, se llevaron a un caso dramático y hasta al absurdo (como lo dicho por Jourdon & Jourdon en el libro "La bomba de tiempo del 2000").

Con la miríada de líneas de código que tenían que revisarse al respecto, en esos tiempos se instauró un paliativo que se conoció como "Ventana de la centuria", donde, en general, se estableció como pivote el 20. Eso significa que cualquier cifra de año en las fechas igual o mayor a 20 la computadora lo interpretaría como 1900 y menor a 20 lo interpretaría como 2000. Así, si la computadora encontraba una fecha 190900, al 00 la computadora le sumaría 2000 y, con eso, ya se tendría la fecha correcta. En muchos casos, se codificó este paliativo de manera fija en los programas, en otros (ignoro si los menos) se permitió variar el pivote. La "convención" de poner a 20 como pivote se estableció para tener un tiempo de gracia lo suficientemente amplio para revisar detenidamente las líneas de código y, entonces, hacer los cambios definitivos en él. Sin embargo, no estoy seguro de que esto haya sucedido. ¿Cuántos programas por allí tienen codificado de manera fija este pivote en ventana de la centuria y que, por ende, el año 20 (el año próximo) los programas podrían creer que están en 1920? Suspenso...

En mi experiencia, soy testigo de un sinnúmero de empresas que aún propugnan por contar con computadoras con Windows XP debido a que no han podido actualizar sus programas para que funcionen en Windows 10 (algunas de esas empresas son víctimas de códigos elaborados por programadores que abandonaron a la empresa y se llevaron o destruyeron el código fuente del programa, con lo que la empresa no tiene forma de hacer modificaciones, sino que tendría que invertir en codificar todo un nuevo programa o sistema). Ignoro cuántas empresas sufran problemas similares (espero que ninguna) con los programas que estaban "en la tablita" por el problema del año 2000 (Y2K) y que hoy tengan de manera fija este pivote en la ventana de la centuria, y, sin duda, será alguna situación interesante por ver y analizar.

Como comentario al margen, cuando se ve el calendario de Windows 10, hoy no puedo ir a ninguna fecha inferior a 1919, por lo que Windows 10, asumo, está integrando una ventana de 100 años para su calendario interno (no utiliza, por lo que se ve, un calendario perpetuo en su sistema).

Usted, ¿ya revisó su anciano código? (en muchas ocasiones, este anciano y venerable código provendría de mainframes que utilizan COBOL o RPG, o, en PC, quizá programas hechos en dBASE, Clipper, FoxPro, Visual Basic, QuickBASIC, Pascal, y otros lenguajes de entonces). Sería recomendable revisar si no tiene establecido el paliativo de la ventana de la centuria con el pivote indicado de manera fija... Y si lo tiene, lo mejor será que lo ajuste para, al menos, otros 10 años (es decir, poner el pivote en 30), de manera que, ahora sí, utilice ese tiempo de gracia para concentrarse en actualizar sus códigos con un tiempo lo suficientemente amplio para ello.

Sin duda, un cambio como éste en sistemas gubernamentales podría afectar a mi abuelita que este año cumplió 100 años (nació en 1919). Si se aplica una ventana de la centuria con el pivote en 30, resultará que ella cumpliría un año el próximo año... Vicisitudes de la computación, de las ventanas interpretativas de 100 años y de la maravillosa longevidad de mi abuelita. ¡Nos seguimos leyendo!

Ref: https://en.wikipedia.org/wiki/Date_windowing
Ref: https://en.wikipedia.org/wiki/Year_2000_problem 

Comentarios

Entradas más populares de este blog

Toshiba Satellite T215-SP1004M

Consecuencias de la falta de mantenimiento en el equipo de cómputo

Normalización de bases de datos (Parte 6 y última): Quinta y sexta formas de normalización (5NF) (6NF)