Abstract:
INTRODUCCIÓN. En los últimos años, el desarrollo de herramientas de
Cuarta Generación (4GL) para los mainframes y
minicomputadores IBM ha aumentado. Por ejemplo, se han
desarrollado lenguajes como Mantis, el cual facilita,
grandemente, la implementación de aplicaciones. Este
lenguaje cuenta con un amplio conjunto de instrucciones que
lo pone en ventaja ante otros lenguajes tradicionales que
operan en dichos computadores, como por ejemplo Cobol, RPG,
etc... Sin embargo, Mantis presenta dificultades para ser
utilizado en aplicaciones batch. Las aplicaciones batch
son frecuentes en los sistemas de información, ya que,
generalmente, es necesario contar con programas que efectúen
grandes cantidades de transacciones en una base de datos o
en un archivo. La duración de estos procesos puede ser de
minutos, horas, o hasta de días en algunos casos. Por
eso, es necesario que dichos programas sean eficientes en
tiempo. En la mayoría de los casos se utiliza un lenguaje
como Cobol para los procesos batch, el cual puede ser
compilado a lenguaje objeto y ser eficiente.
Programar en Cobol requiere un mayor esfuerzo para el
programador. La codificación es bastante larga y
complicada, Ya que el programador tiene a su cargo
implementar todas las funciones que necesita, definir todos
los datos, manejar los status de los archivos etc... Esto
redunda en un tiempo de implementación largo, con el riesgo
de producir un programa complejo (ya que Cobol no tiene
muchas facilidades de estructuración) y, posiblemente, con
errores. Además, se debe tomar en cuenta que los
programas en Cobol requieren largos tiempos de espera (en
sistemas multiusuarios) para compilación y pruebas.
Cuando se detecta un error, el programador debe modificar el
programa fuente y compilarlo de nuevo, ciclo que puede
requerir demasiado tiempo.
Debido a esto, se consideró que sería deseable contar
con una herramienta que tuviera las facilidades de
programación de Mantis y la rapidez de ejecución de Cobol.
Entonces se pensó en la posibilidad de desarrollar un
traductor que reciba como entrada un programa escrito en
Mantis y que produzca como salida un programa equivalente
escrito en Cobol.
Lo primero que se hizo fue analizar la factibilidad de
la traducción automática. Ya que el intéres principal es
su aplicación en los procesos batch, se analizó un
subconjunto de las instrucciones de Mantis que fuera lo
suficientemente completo para dichas aplicaciones. Luego
se pensó en la posible traducción de cada instrucción, en
3
Mantis a Cobol, determinando las equivalencias. Se trató
de que los esquemas de traducción utilizados fueran lo más
eficientes posible para que el programa generado en Cobol
sea casi tan rápido como un programa escrito directamente
por un programador.
Se optó por traducir a lenguaje Cobol porque éste es un
lenguaje más portátil. Lo ideal hubiera sido generar
código en Assembly, pero no se hizo por lo siguiente:
i) El lenguaje Assembly es más difícil de entender y la
generación de código hubiera sido demasiado complicada.
ii) El código generado en Assembly hubiera sido particular
de un sólo modelo de computadores, ya que éste cambia
para cada procesador. Por lo tanto, se hubiera
perdido la portabilidad.
iii) El lenguaje Cobol es ampliamente utilizado desde hace
mucho tiempo y es de esperarse que los compiladores
actuales de Cobol hagan uso óptimo de las instrucciones
en Assembly y generen código eficiente, por lo cual es
conveniente generar únicamente instrucciones de Cobol.
El presente trabajo explica los aspectos considerados
para la elaboración de un traductor de Mantis a Cobol, al
cual se le ha dado el nombre de FastMan. Inicialmente se
analizan dos herramientas que se utilizaron para la
construcción del traductor: el generador de tablas del
scanner y el generador de tablas del parser. Luego se
explica, en términos generales, como se efectúa la
traducción de un programa escrito en Mantis a su equivalente
en Cobol. Después se muestran algunas comparaciones de la
rapidez de programas escritos en Mantis y sus equivalentes
generados por el traductor. Debido a que la generación de
código en Cobol no es óptima, también se hacen comparaciones
con programas escritos en Cobol directamente por un
programador, para obtener una idea de la eficiencia de la
traducción. Por último, se específica la gramática de
Mantis utilizada para las aplicaciones batch y se presentan
algunos ejemplos de traducción. RR