Home En serio o en broma Connect 300 COBOL open-source.

COBOL open-source. PDF Imprimir E-mail
Escrito por manycomics   
Viernes, 08 de Diciembre de 2006 16:34

Teclas COBOLHace unos días me topé con el site de OpenCOBOL. El proyecto lleva ya un tiempo en marcha (se inició a finales de 2001), pero no había sabido de él hasta ahora. Se trata de un compilador de COBOL open source que traduce el código COBOL a lenguaje C y compila este con GCC. Interesante... y claro, al final no podía evitar instalármelo, así que manos a la obra, bajo SuSE 10, sin problemas y muy sencillo; como quien dice, cosa de descargar la última versión (prerelease de la 0.33), compilar y listo.

Tengo entendido que hace ya años que no se estudia COBOL en facultades de informática; a mí sí me tocó, así que, como la "tentación" era fuerte (no deja de tener su encanto "retro" este lenguaje), también he instalado la sintaxis de COBOL en mi UltraEdit (sí señor, una buena combinación: el compilador de COBOL y los fuentes bajo SuSE Linux con Samba ... y UltraEdit+PuTTY para editar y compilar desde el equipo con Windows) y me he sumergido entre viejos diskettes a la búsqueda de alguna de aquellas prácticas.

Por fin algo ha aparecido... y lo peor de esto es que uno nunca deja de sorprenderse, superando las presentes, de las cosas tan frikis que ha llegado a hacer: ni más ni menos que en un fichero comprimido .LZH y contenido en un disco en formato 2M (eso sí que era aprovechar bien los diskettes; sí, sí, 2M, el de Ciriaco Garcia de Celis, una pequeña joyita con la que en su día podías convertir los diskettes de 1.4MB en diskettes de 2MB, ... ¡ups!... si ya sabes de qué estoy hablando probablemente es que eres ya uno de esos dinosaurios un poquito frikis). Pues bien, una vez extraídos los ficheros he pasado a compilar y ... mi gozo en un pozo:

CREAR.CBL:12: Error: syntax error, unexpected RANDOM, expecting WORD or LITERAL

OpenCOBOL

Pues sí, ya de entrada me he encontrado con los primeros problemas de compatibilidad (en su día utilicé RM/COBOL-85 bajo DOS con las prácticas); cuestión de revisar el código para adaptar lo que sea preciso. Bueno, en principio daré solo algún detalle sobre los cambios en lo que es un pequeño módulo de inicialización de ficheros de pruebas.

Para empezar, a OpenCOBOL no le gusta eso de RANDOM, así que algo que cambiar para todos los ficheros utilizados:

RM/COBOL-85
    SELECT PEDIDOS ASSIGN TO RANDOM, "PEDIDOS.DAT"
    ORGANIZATION IS INDEXED
    ACCESS MODE IS DYNAMIC
    RECORD KEY IS COD-PED
    FILE STATUS IS ST-PEDIDOS.
OpenCOBOL
    SELECT PEDIDOS ASSIGN TO "PEDIDOS.DAT"
    ORGANIZATION IS INDEXED
    ACCESS MODE IS DYNAMIC
    RECORD KEY IS COD-PED
    FILE STATUS IS ST-PEDIDOS.


Los DISPLAY y los ACCEPT también tienen sus diferencias con respecto a RM/COBOL-85; no se reconocen los atributos REVERSE, HIGH, LOW, BLINK, ..., solo se admite una posición por sentencia y la palabra POSITION pasa a ser COLUMN; por otra parte parece que OpenCOBOL tiene algún que otro problema con la longitud de los literales a mostrar por DISPLAY. P.ej.:

RM/COBOL-85
    DISPLAY " 0. VOLVER AL DOS.                      "
    LINE 10 POSITION 22 REVERSE
    " 1. CREAR FICHERO PEDIDOS DE CLIENTES.  "
    LINE 11 POSITION 22 REVERSE
    " 2. CREAR FICHERO STOCK DE MATERIALES.  "
    LINE 12 POSITION 22 REVERSE
    " 3. CREAR FICHERO ESTADISTICAS ERROR.   "
    LINE 13 POSITION 22 REVERSE
    " 4. CREAR FICHERO OPERACIONES.          "
    LINE 14 POSITION 22 REVERSE
    "¨OPCION? " LINE 18 POSITION 22 BLINK.
    ACCEPT OPCION LINE 18 POSITION 31.
OpenCOBOL
    DISPLAY "0.VOLVER AL DOS" COLUMN 22 LINE 10.
    DISPLAY "1.CREAR FICHERO PEDIDOS CLIENTES" COLUMN 22 LINE 11.
    DISPLAY "2.CREAR FICHERO STOCK MATERIALES" COLUMN 22 LINE 12.
    DISPLAY "3.CREAR FICHERO ESTADISTICAS ERROR" COLUMN 22 LINE 13.
    DISPLAY "4.CREAR FICHERO OPERACIONES" COLUMN 22 LINE 14.
    DISPLAY "¨OPCION? " COLUMN 22 LINE 18.
    ACCEPT OPCION COLUMN 31 LINE 18.


De momento es todo, compilar (cobc -x crear.cbl) y listo; ya tenemos un bonito ejecutable. El problema viene después con la ejecución; el caso es que en su día bajo DOS, a 80x25, todo encajaba perfectamente, pero en una ventana de terminal con más filas y columnas las pantallas de menú se descolocan un poco. Por lo demás parece cumplir su función, el ejecutable genera los ficheros correctamente pese a que haya que interactuar con un interfaz "no muy bonito de usar" (básicamente por descolocarse el cursor).

Con todo se trata de una iniciativa interesante. En cualquier caso, es aún más interesante que, como parece deducirse a juzgar por algunos mensajes en los foros de OpenCOBOL, el siguiente paso puede apuntar hacia la posibilidad de embeber MySQL en OpenCOBOL. Esto promete.

TinyCOBOL

Ya metidos en harina he instalado otro compilador de COBOL. Se trata de TinyCOBOL, tiene un par de años más de andadura y uno de los que aparecen como colaboradores fue precisamente quien inició OpenCOBOL.

La instalación es igual de sencilla que con OpenCOBOL: bajar, compilar y ya tenemos en este caso un htcobol listo.

Sorprendentemente el primer error se debe a un guión:

RM/COBOL-85
    PROGRAM-ID. CREA-FICHEROS.
TinyCOBOL
    PROGRAM-ID. CREAFICHEROS.


Los comentarios producen también error (en cuanto hay un asterisco en la columna 7...). Por lo demás se dan los mismos casos de diferencia de sintaxis que con OpenCOBOL, con la única salvedad de que los DISPLAY soportan literales string de mayor longitud.

Tras compilar y ejecutar, a diferencia que con OpenCOBOL, la composición de pantallas es correcta pese a no utilizar un 80x25.

Se trata de otra opción interesante, y en este caso ya aparece contemplada de alguna manera, en el documento de Project STATUS, la utilización de SQL embebido:

The current released snapshot has support for the following features and/or COBOL syntax.
...
- Embedded SQL using vendor supplied SQL Pre-Processor.
...



Última actualización el Domingo, 06 de Mayo de 2012 16:35
 
Licencia Creative Commons   Los contenidos de ManyComics se encuentran bajo una Licencia Creative Commons Reconocimiento-NoComercial-SinObraDerivada 3.0 Unported, salvo que se indique lo contrario.

ManyComics.com usa cookies para mejorar el sitio web y tu experiencia al usarlo. Al navegar por esta página, aceptas el uso de cookies.

Acepto las cookies de este site.