|Original author(s)||Keisuke Nishida, Roger While|
|Developer(s)||Sergey Kashyrin, Ron Norman, Simon Sobisch|
|Initial release||January 25, 2002|
|Stable release||OpenCOBOL 1.1, GNU Cobol 1.1 / February 24, 2009|
|Preview release||GnuCOBOL 2.0, GnuCOBOL 2 with Report Writer, GnuCOBOL C++ / July 15, 2015|
|Written in||C, with a C++ branch|
|Available in||English, Japanese, Spanish|
|License||GPL with runtime libraries under LGPL.|
GnuCOBOL (formerly OpenCOBOL, and for a short time known as GNU Cobol) is a free implementation of the COBOL programming language. Originally designed by Keisuke Nishida, lead development was taken up by Roger While. Latest developments are now led by Simon Sobisch, Sergey Kashyrin and Ron Norman.
While working with Rildo Pragana on TinyCOBOL, Keisuke decided to attempt a COBOL compiler suitable for integration with gcc. This soon became the OpenCOBOL project. Keisuke worked as the lead developer until 2005 and version 0.31. Roger then took over as lead and released OpenCOBOL 1.0 on December 27th, 2007. Work on the OpenCOBOL 1.1 pre-release continued until February 2009. In May 2012, active development was moved to SourceForge, and the pre-release of February 2009 was marked as a release. In late September 2013, OpenCOBOL was accepted as a GNU Project, renamed to GNU Cobol, and then finally to GnuCOBOL in September of 2014. Ron Norman has added a Report Writer module as a branch of GnuCobol 2.0, and Sergey Kashyrin has developed a version that uses C++ intermediates instead of C.
While striving to keep in line with COBOL Standards up to the current COBOL 2014 specification, and also to include features common in existing compilers, the developers do not claim any level of standards conformance. Even so, the 1.1 release candidate passes over 9,000 of the tests included in the NIST COBOL 85 test suite.
GnuCOBOL translates a COBOL program (source code) into a C program. The C program can then be compiled into the actual code used by the computer (object code) or into a library where other programs can call (link to) it. Under UNIX and similar operating systems (such as Linux) the GNU C compiler is used. For Windows, Microsoft’s Visual Studio Express package provides the C compiler. The two step compilation is usually performed by a single command, but an option exists to allow the programmer to stop compilation after the C code has been generated.
The opencobol.org site was the official home of the development team from 2002 until 2012, and was the best source of upstream development information. However, all recent developments are now taking place within a SourceForge project space at http://sourceforge.net/projects/open-cobol/ and this project space will house the latest GnuCOBOL documentation and information.
The OpenCOBOL Programmer's Guide, by Gary Cutler, was published under the GNU Free Documentation License. It has been updated to include GnuCOBOL with Report Writer and is listed in the GnuCOBOL documentation overview page.
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!
Modern, free format
*> GnuCOBOL Hello World example identification division. program-id. hello. procedure division. display "Hello, world!" end-display goback.
Compilation and execution:
$ cobc -x -free hello.cob $ ./hello Hello, world!
The shortest valid COBOL program, with the relaxed syntax option in GnuCOBOL 2.0, is a blank file. Compilation and execution:
$ cobc -x -frelax-syntax ./empty.cob ./empty.cob: 1: Warning: PROGRAM-ID header missing - assumed $ ./empty $
For earlier versions and with relaxed syntax:
Compilation and execution:
$ 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!
Without relaxed syntax and with any version of GnuCOBOL, GNU Cobol or OpenCOBOL. (Note, there are 7 leading spaces to conform to FIXED layout COBOL source):
program-id.h.procedure division.display "Hello, world!".
Compilation occurs without errors:
$ cobc -x smallest.cob $ ./smallest Hello, world!
Please note that these trivia listings are not to be regarded as good COBOL form; COBOL was designed to be a readable English programming language.
The configure script that sets up the GnuCOBOL compile has options that include:
- choice of C compiler for post translation compilation
- database management system for ISAM support
- inclusion of iconv
- 1.0 release from SourceForge.
- 1.1 release from SourceForge
- 2.0 release from SourceForge
- open-cobol Debian package.
- Tiffin, Brian (2013-10-19). "OpenCOBOL FAQ". What is the development history of OpenCOBOL?. Retrieved 2013-12-13.
- Tiffin, Brian (2013-10-19). "OpenCOBOL FAQ". What is the current version of OpenCOBOL?. Retrieved 2013-12-13.
- Tiffin, Brian. "GNU Cobol is now a real thing". Archived from the original on 2013-10-05. Retrieved 1 October 2013.
- Sobisch, Simon (6 November 2013). "Work in Progress". GNU Cobol 2.0 C++.
- Tiffin, Brian. "State of the Project". Retrieved 23 July 2015.
- "OpenCOBOL FAQ". 17 October 2013. How complete is OpenCOBOL?. Retrieved 7 June 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.
- "OpenCOBOL FAQ". Does OpenCOBOL pass the NIST Test Suite?. Retrieved 9 October 2013.
- Cutler, Gary. "OpenCOBOL Programmer's Guide" (PDF). Opencobol.addltocobol.com. Retrieved 2012-11-20.
- "An open-source COBOL compiler". OpenCOBOL. Retrieved 2012-11-20.
- Cutler, Gary. "GnuCOBOL Guides". Opencobol.addltocobol.com. Retrieved 2015-07-22.
- "OpenCOBOL - Browse Files at". Sourceforge.net. 2007-12-27. Retrieved 2012-11-20.
- Community Edition at SourceForge
- Debian package details