# GnuCOBOL

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.

## Historia

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. 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. 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.
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.

## Filosofía

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. 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).
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.

## Documentación

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. 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]. 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.

## Programas de ejemplo
### Histórico

Compilation and execution:

### Moderno, formato libre

Compilación y ejecución:

### Código corto

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:
Para las primeras versiones con sintaxis relajada:
Compilación y ejecución:
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):
Compila sin errores:
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

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

* 1.0 release from SourceForge.
* 1.1 release from SourceForge
* 2.0 development release from SourceForge
* open-cobol Debian package.
* 2.2 Final, publicado el 7 de septiembre de 2017 de SourceForge
* 2.2 Documentación, publicada en septiembre de 2017 en el árbol de código de SourceForge.