GnuCOBOL

compilador de COBOL

GnuCOBOL (anteriormente OpenCOBOL, y por un corto tiempo conocido como GNU Cobol) es una implementación libre del lenguaje de programación COBOL. Diseñado originalmente por Keisuke Nishida, el desarrollo principal fue asumido por Roger While. Los últimos desarrollos están ahora liderados por Simon Sobisch, Ron Norman, Edward Hart, Sergey Kashyrin y muchos otros.[1]

GnuCOBOL
Parte de Proyecto GNU
Información general
Tipo de programa compilador
Autor Keisuke Nishida
Desarrollador Proyecto GNU
Lanzamiento inicial 2002
Licencia GPL con librerías de tiempo de ejecución bajo LGPL
Idiomas Inglés, alemán, italiano, japonés, español
Información técnica
Programado en C
Versiones
Última versión estable 3.228 de julio de 2023
Enlaces

Historia

editar

Mientras trabajaba con Rildo Pragana en TinyCOBOL, Keisuke decidió intentar un compilador de COBOL adecuado para integrarse con gcc. Esto pronto se convirtió en el proyecto OpenCOBOL. Keisuke trabajó como desarrollador principal hasta 2005 y la versión 0.31. Roger entonces tomó el liderazgo y publicó OpenCOBOL 1.0 el 27 de diciembre de 2007. El trabajo en el prelanzamiento de OpenCOBOL 1.1 continuó hasta febrero de 2009. En mayo de 2012, el desarrollo activo se trasladó a SourceForge, y el prelanzamiento de febrero de 2009 se marcó como un lanzamiento.[2]​ A finales de septiembre de 2013, OpenCOBOL fue aceptado como un Proyecto GNU, renombrado a GNU Cobol, y finalmente a GnuCOBOL en septiembre de 2014.[3]​ Ron Norman ha añadido un módulo de redacción de informes como una rama de GnuCobol 2.0, y Sergey Kashyrin ha desarrollado una versión que utiliza intermediarios C++ en lugar de C.[4]

La última versión actual es ahora la v3.1.2, emitida el 23 de diciembre de 2020.

La transferencia de los derechos de autor a la Free Software Foundation sobre el código fuente de GnuCOBOL (incluyendo versiones con ortografía Cobol de GNU y OpenCOBOL) se finalizó el 17 de junio de 2015.[5]

Filosofía

editar

Aunque se esfuerzan por mantenerse en línea con los estándares de COBOL hasta la especificación actual COBOL 2014, y también por incluir características comunes en los compiladores existentes, los desarrolladores no reclaman ningún nivel de conformidad con los estándares.[6]​ Aun así, la versión final 2.2 pasa más de 9.688 (99,79%) de las pruebas incluidas en el NIST COBOL 85 test suite, de 9.708 (ya que se han eliminado 20).[7]

GnuCOBOL traduce un programa COBOL (código fuente) a un programa C. El programa C puede entonces ser compilado en el código real utilizado por el ordenador (código objeto) o en una biblioteca donde otros programas pueden llamarlo (enlazarlo). En UNIX y sistemas operativos similares (como Linux) se utiliza el compilador GNU C. Para Windows, el paquete Visual Studio Express de Microsoft proporciona el compilador de C. La compilación en dos pasos se realiza normalmente con un solo comando, pero existe una opción que permite al programador detener la compilación después de que se haya generado el código C.[8]

Documentación

editar

El sitio opencobol.org fue la sede oficial del equipo de desarrollo desde 2002 hasta 2012, y fue la mejor fuente de información sobre el desarrollo en sentido ascendente.[9]​ Sin embargo, todos los acontecimientos recientes están teniendo lugar ahora dentro de un espacio del proyecto SourceForge en http://sourceforge.net/projects/open-cobol/ y este espacio del proyecto también alberga la última documentación e información sobre GnuCOBOL.

La Guía del programador de OpenCOBOL, de Gary Cutler, se publicó bajo la Licencia de Documentación Libre de GNU].[8]​ Ha sido actualizado para incluir GnuCOBOL con el Report Writer y está listado en la página de resumen de la documentación de GnuCOBOL con las últimas versiones en el árbol de códigos.[10]

Programas de ejemplo

editar

Histórico

editar
000100* HELLO.COB GnuCOBOL example
000200 IDENTIFICATION DIVISION.
000300 PROGRAM-ID. hello.
000400 PROCEDURE DIVISION.
000500     DISPLAY "Hello, world!".
000600     STOP RUN.

Compilation and execution:

$ cobc -x HELLO.COB
$ ./HELLO
Hello, world!

Moderno, formato libre

editar
*> GnuCOBOL Hello World example
identification division.
program-id. hello.
procedure division.
display "Hello, world!" 
end-display.
goback.

Compilación y ejecución:

$ cobc -x -free hello.cob
$ ./hello
Hello, world!

Código corto

editar

El programa COBOL válido más corto, con la opción de sintaxis relajada en GnuCOBOL 2.0, es un archivo en blanco. Compilación y ejecución:

$ cobc -x -frelax-syntax ./empty.cob
./empty.cob: 1: Warning: PROGRAM-ID header missing - assumed
$ ./empty
$

Para las primeras versiones con sintaxis relajada:

display"Hello, world!".

Compilación y ejecución:

$ cobc -x -frelax-syntax -free hello.cob
hello.cob: 1: Warning: PROGRAM-ID header missing - assumed
hello.cob: 1: Warning: PROCEDURE DIVISION header missing - assumed
$ ./hello
Hello, world!

Sin sintaxis relajada y con cualquier versión de GnuCOBOL u OpenCOBOL (tenga en cuenta que hay 7 espacios iniciales para ajustarse a la fuente COBOL de diseño FIJO):

       program-id.h.procedure division.display "Hello, world!".

Compila sin errores:

$ cobc -x smallest.cob
$ ./smallest
Hello, world!

Tenga en cuenta que estos listados de trivia no deben considerarse como una buena forma COBOL; COBOL fue diseñado para ser un lenguaje de programación en inglés legible”.

Implementación

editar

El analizador y el analizador léxico utilizan Bison y Flex. El compilador con licencia GPL y las librerías de tiempo de ejecución con licencia LGPL están escritos en C y utilizan el C ABI para la vinculación de programas externos.

El empaquetado de la construcción usa el Sistema de Construcción GNU. Las pruebas estándar con <código>make check</código> usan Autoconf, la suite de pruebas ANSI85 ejecutada por <código>make test</código> usa scripts Perl.

El script de configuración que configura la compilación de GnuCOBOL tiene opciones que incluyen:

  • elección del compilador de C y sus opciones para la compilación de la post-traducción
  • sistema de gestión de base de datos para el soporte ISAM
  • inclusión de iconv

Disponibilidad

editar
  • 1.0 release from SourceForge.[11]
  • 1.1 release from SourceForge[12]
  • 2.0 development release from SourceForge[13]
  • open-cobol Debian package.[14]
  • 2.2 Final, publicado el 7 de septiembre de 2017 de SourceForge[15]
  • 2.2 Documentación, publicada en septiembre de 2017 en el árbol de código de SourceForge.

Referencias

editar
  1. Tiffin, Brian (19 de octubre de 2013). «OpenCOBOL FAQ». What is the development history of OpenCOBOL?. Consultado el 13 de diciembre de 2013. 
  2. Tiffin, Brian (19 de octubre de 2013). «OpenCOBOL FAQ». What is the current version of OpenCOBOL?. Consultado el 13 de diciembre de 2013. 
  3. Tiffin, Brian. «GNU Cobol es ahora una cosa real». Archivado desde el original el 5 de octubre de 2013. Consultado el 1 de octubre de 2013. 
  4. Sobisch, Simon (6 de noviembre de 2013). «Work in Progress». GNU Cobol 2.0 C++. Archivado desde el original el 10 de mayo de 2020. Consultado el 8 de marzo de 2020. 
  5. Tiffin, Brian. «State of the Project». Archivado desde el original el 7 de marzo de 2016. Consultado el 23 de julio de 2015. 
  6. «OpenCOBOL FAQ». 17 de octubre de 2013. How complete is OpenCOBOL?. Consultado el 7 de junio de 2014. «While OpenCOBOL can be held to a high standard of quality and robustness, the authors DO NOT claim it to be a “Standard Conforming” implementation of COBOL.» 
  7. «OpenCOBOL FAQ». Does OpenCOBOL pass the NIST Test Suite?. Consultado el 9 de octubre de 2013. 
  8. a b Cutler, Gary. «OpenCOBOL Programmer's Guide». Opencobol.addltocobol.com. Consultado el 20 de noviembre de 2012. 
  9. «An open-source COBOL compiler». OpenCOBOL. Consultado el 20 de noviembre de 2012. 
  10. Cutler, Gary. «GnuCOBOL Guides». Opencobol.addltocobol.com. Consultado el 22 de julio de 2015. 
  11. «GnuCOBOL - Browse Files at». Sourceforge.net. 27 de diciembre de 2007. Consultado el 28 de octubre de 2015. 
  12. GnuCOBOL downloads at SourceForge
  13. GnuCOBOL downloads at SourceForge
  14. Debian package details
  15. GnuCOBOL downloads at SourceForge

Enlaces externos

editar