Tecnologia mexicana
programacion

Método de las Décadas ABC

Fundamentos del Método

La solución propuesta se basa en la antigua práctica de complementar secuencias numéricas con caracteres alfabéticos, frecuentemente utilizada por los desarrolladores de software de 3º generación, y que probablemente muchos han considerado y descartado al instante como alternativa del porno casero a la solución a la problemática Año 2000 ( muchos otros tal vez ya la estén utilizando). La proposición consiste en prolongar la secuencia del año almacenado en dos caracteres, utilizando el alfabeto para representar las décadas posteriores al año 1999, es decir, del mismo modo en que se usa ‘8x’ para representar la década de 1980 a 1989, y ‘9x’ para la de 1990 a 1999, se propone utilizar ‘Ax’ para la década desde el año 2000 al 2009, ‘Bx’ para la del 2010 al 2019 y así sucesivamente (cálculos y operaciones con fechas se describen más abajo en Aplicando el Método de las Décadas ABC ).

Por tanto, con las 26 letras del alfabeto utilizables en perfecta secuencia (se excluyen ch, ñ, ll y rr del español), es posible representar también 26 décadas, lo que aunque podría parecer de rango limitado, es en realidad prácticamente eterno si se considera que éstas otorgan cobertura hasta el año 2259.

La solución descrita, no libera de la intervención técnica necesaria en el código fuente de cada programa que realice operaciones con fechas. Sin embargo, proporciona la extraordinaria ventaja sobre otras alternativas, en lo que respecta a la compatibilidad con la información histórica, ya sea almacenada en archivos en línea o en medios de respaldo, los que como es sabido, no en pocas ocasiones se deben recuperar. Se plantea lo anterior debido a que, por permitir el almacenamiento en los mismos dos caracteres para representar el año, no requiere cambio en la longitud de los campos definidos para almacenar fechas, ni tampoco necesita recalcular los datos ya grabados, ni modificar procedimientos de comandos que incluyan utilitarios ‘sort’ o ‘merge’ externos basados en posiciones relativas de registro, y por último, tampoco se debe definir un mismo instante para la puesta en marcha de los programas y sistemas que sean modificados, puesto que el método proporciona compatibilidad con los datos tanto hacia adelante en el tiempo, como hacia atrás.

Algunas consideraciones.

El Método Décadas ABC, propone utilizar sólo letras mayúsculas en el almacenamiento de fechas, prescindiendo de la posibilidad de ampliar la cobertura de tiempo, que otorgaría el prolongar la secuencia propuesta con el alfabeto en letras minúsculas y con caracteres especiales de un mayor valor ASCII, no obstante lo anterior, en la operación del método se aceptan indistintamente letras mayúsculas y minúsculas, pero, sólo representando a una misma década.

Esta aparente autorrestricción, tiene por finalidad obtener la compensación de la sencillez, puesto que resulta muy fácil asimilar la asociación de cada letra con determinada década. En ese mismo sentido es que se definen las décadas como unidad de referencia, respetando el segundo carácter del año en su formato numérico, pudiendo haberse optado por utilizar también caracteres alfanuméricos en esa segunda posición, para aumentar los años de cobertura de la proposición.

Categorías de solución al problema del año 2000

Las alternativas de solución más recurrentes se clasifican en tres categorías, las que además cuentan con una serie de variantes, estas categorías son, entre las principales, los videos caseros:

Ampliación del formato de fecha a 8 caracteres (alternativa ideal respecto de la lógica computacional, pero también la de más alto costo, pues requiere conversión tanto de programas como de archivos).
Desplazamiento del rango de fechas (30, 40 ó 50 años, de acuerdo a la naturaleza de la información del sistema) o bien 28, debido a que los días de la semana del año 2000 coinciden con los del año 1972 (Compruébelo en el test del método)
Compresión o codificación de fechas, de modo de almacenar los 8 caracteres que se requiere representar, en el espacio disponible de 6 bytes.
El método Décadas ABC se sitúa en la categoría de ‘Codificación de Fechas’ utilizando caracteres alfanuméricos para representar el año, por lo que no es aplicable en aquellos casos en que fechas representadas en 6 caracteres se almacenen ya comprimidas o empaquetadas (Picture Computational-x de Cobol). Para estos casos, como una solución temporal se recomienda utilizar el Método de los 99 Meses, que manteniendo el formato numérico otorga poco más de 7 años de gracia. Su proposición consiste en fijar el año 99 como el año máximo, representando el mes de Enero del año 2000 como el mes 13 del año 99, hasta llegar al mes 99 del año 99 correspondiente al mes de Marzo de 2007. Una variante de este método, es la correspondiente a los 9999 Días, con 24 años de sobrevida para 6 caracteres numéricos, en este caso se utiliza el formato de fecha AADDDD, fijándose el día 1232 como el primer día del año 2000 (para mantener secuencialidad respecto del último día este siglo: ‘991231’), y luego se incrementa de uno en uno hasta llegar al día 9999 del año 99, fecha situada en el mes Abril del año 2024. La implementación de ambas variantes debe ser apoyada por subprogramas de conversión de fechas, tal como lo requiere el Método de las Décadas ABC.

La desventaja de estas alternativas frente al Método Décadas ABC, además de la escasa cobertura de tiempo, radica en la dependencia de los mecanismos de conversión automáticos, pues su interpretación visual es prácticamente imposible, mientras que el principio de décadas permite la representación de los meses y los días sin interpretación alguna, además de una sencilla codificación para el año, que es de muy fácil asimilación visual.

Aplicando del Método de las Décadas ABC

Operaciones con fechas.
La aplicación del método, consiste en la intervención de los programas que realizan operaciones con fechas, de modo de incorporar una ‘descompresión’ de la fecha inmediatamente después de cada lectura de registros, y una ‘compresión’ inmediatamente antes de cada grabación, con el fin de que las operaciones de aritmética de fechas se efectúen en el programa con el año de cuatro caracteres numéricos y así no afectar la lógica especificada en el código fuente. En aquellos numerosos programas en que sólo se realizan operaciones de comparación de fechas (igual, mayor, menor, mayor o igual, etc), no se requiere de la descompresión, pues la codificación utilizada para representar el año corresponde a la prolongación de la secuencia ascendente de los años almacenados en dos caracteres (Ej. A0 > 99).

Las operaciones de ‘compresión’ y ‘descompresión’ de fechas son realizadas mediante una llamada (instrucción call) a un subprograma, cuyo código fuente está disponible en este sitio web (ver código fuente TestABC.COB), lo que significa que la adaptación de cada programa se reduce a la incorporación de un mínimo de líneas de código estándar, después de cada lectura y antes de cada grabación de registros.

Salidas y presentación de fechas
El tema de las salidas, que en ocasiones se ha utilizado para alarmar a usuarios por la supuesta inutilidad que el cambio se siglo les provoca, es en realidad el problema menor, puesto que si en fechas cercanas al año 2000, en sus reportes, boletas de pago o estados de cuenta, comienzan a aparecer fechas como 12-feb-00, para todos quedará absolutamente claro que se trata del año 2000 y no de 1900.

Ahora bien, si todos los usuarios idealmente adhirieran al Método de las Décadas ABC, sería aceptado que las fechas se imprimieran como 15-Jul-A0 ó 16-Nov-A2. Como esto no es esperable, antes de imprimir se debe recurrir al mismo subprograma citado anteriormente.

Entrada de Datos
Para los programas de entrada de datos que aceptan fechas numéricas de largo 6, el método de las Décadas ABC, ofrece la posibilidad mantener la misma interfaz con el usuario, al permitir que años ingresados como ‘00’, ‘01’ ó ‘12’, etc., sean interpretados como 2000(A0), 2001(A1) ó 2012(B2) respectivamente, en base a un valor de referencia denominado Año Inferior utilizado para determinar el siglo (ver test del método en este mismo sitio web).

En el caso de programas de entrada de datos de uso poco frecuente, o cuyos usuarios tengan la inusual virtud de ser comprensivos con el personal informático, es posible dejarlos operativos con una mínima intervención al código fuente, cual es la de aceptar caracteres alfanuméricos en la posición del año, conjuntamente con instruir al usuario para que ingrese directamente el año en su equivalencia del formato de décadas, es decir, A0, A1, B3, etc.

Una Reflexión

Si existiera una versión especial de compilador Cobol, compatible con el Método Décadas ABC u otro método similar, simplemente no existiría el problema del año 2000 para los sistemas de información construidos en Cobol , puesto que se reduciría sólo a un detalle asociado a la recompilación de programas, prácticamente sin intervención alguna en el código fuente y absolutamente ninguna modificación en los archivos de mexico porno. Este pensamiento no es tan alejado de las posibilidades reales, si se considera que el requerimiento para esta versión extra del compilador Cobol radica en aceptar e interpretar en forma especial dentro del picture 9(02), o para este caso algo como ‘Y(02)’ asociado al año en dos caracteres, los valores 00, 01, …, 98, 99, A0, A1, …, Z9 con su correspondiente equivalencia, además de aceptarlos y permitir su operación en los verbos de Cobol (ADD, SUBTRACT, MULTIPLY y DIVIDE) y en la instrucción COMPUTE. En otras palabras, que dada la magnitud de carácter mundial del problema del año 2000, esta muy especial versión del compilador Cobol, ad-hoc a dicha problemática, hubiese estado provista de una aritmética tal, que permitiera operaciones como:
99 + 1 = A0
A1 – 3 = 98
A3 – A0 = 3
etc.

Aún cuando esta virtual versión de Cobol habría estado fuera de las normas internacionales y de las convenciones que regulan su contenido, hubiera sido muy bien recibida por todas las empresas que han gastado enormes recursos en aspectos humanos, monetarios y de tiempo para solucionar este grave problema. ¿Se imagina el lector cuanto dinero, y recursos en general, se hubieran ahorrado en el mundo con una solución de este estilo?.