El pasado nos alcanza …

printer-out-of-order-01… y estamos cual conejo deslumbrado por los faros de un coche: perplejos.

Tenía que haberlo contado antes pero se me pasó por completo. A finales del año pasado estaba poniendo a punto varios programas de gestión en mi trabajo, demasiados al mismo tiempo, que debían empezar a funcionar el 4 de enero. Tantos y tan relacionados entre sí que ni podía optimizarlos ni mucho menos verificarlos.

Y fue entonces cuando me llamaron para preguntarme si podían facturar ya con la fecha del siguiente año, el 2016. Respondí que sí, que desde hacía varios periodos el sistema reiniciaba las numeraciones automáticamente, y me olvidé por completo de ello.

Muy poco después vuelven para decirme que no, que da error cuando quieren crear una factura (o un albarán, no estoy muy seguro) y que lo mirase porque si no el mundo iba a implosionar o algo así de feo.

Lo miro y descubro confuso que el error es valor fuera de rango en el año. ¿ Fuera de rango ? Pero qué coño.

Y sí, fuera de rango totalmente. Cuando comencé a escribir el programa de gestión, veinticinco años atrás, incluí una claúsula de validación de las columnas año en la base de datos tal como así:

$ between 1990 and 2015

Pensaba, iluso, que mucho antes de esa fecha habría jubilado las aplicaciones, la base de datos, el servidor Linux anclado en el tiempo. Jo.

La base de datos era, y es, Multibase, de la que ya me he quejado otras veces, y en la versión que tengo no dispone de un diccionario de datos como tal. Sí, se puede copiar la definición de una columna: su tipo y longitud, los atributos de entrada y presentación, su validación y el valor predeterminado, pero no existe un registro central que me permita propagar cualquier cambio en el resto de las tablas.

Por supuesto en el código fuente de las aplicaciones, en lenguaje CTL, tampoco. Así que me tocó detener todos los procesos (más gritos y protestas pero paso de trabajar por la noche con algo tan delicado) y realizar los cambios manualmente en decenas de tablas de ambas bases de datos, la de desarrollo contra la que compilo y la de explotación, y recompilar el casi centenar de fuentes en los que podía utilizarse el tipo. No me fiaba de que en algún punto no estuviese pasando un año a una función y ésta se hubiese quedado con la validación antigua.

Un verdadero asco que me tuvo un par de días apagando fuegos y calmando ánimos, dada la propensión de entrar en pánico que se gastan por aquí.

Pero lo que de verdad me causo impresión fue darme cuenta de que llevo un cuarto de siglo con este entorno. Un puto cuarto de siglo sorteando sus limitaciones y observando cómo se degrada día a día. Debería estar muerto ya, ¿ verdad ? Pues nada.

Este año parece que sí, que por fin me van a dar vía libre para librarme de él, pero no termino de creérmelo …