그누코볼

그누코볼(GnuCOBOL, 과거 이름: 오픈코볼/OpenCOBOL)은 코볼 프로그래밍 언어의 자유 구현체이다. 니시다 게이스케가 원안 설계를 맡았고 개발은 로저 와일(Roger While)이 주도하였다. 최근 개발은 사이먼 소비스치, 론 노먼, 에드워드 하트, 세르게이 케시린 등이 주도하고 있다.

역사 
릴도 프라가나가 타이니코볼(TinyCOBOL)을 작업하는 동안 게이스케는 gcc와의 연동에 적합한 코볼 컴파일러 시도를 결정하였다. 이는 곧 오픈코볼 프로젝트가 되었다. 게이스케는 2005년 버전 0.31까지 주 개발자로 지냈다. 로저는 주 개발권을 인계받아 2007년 12월 27일 오픈코볼 1.0을 출시하기에 이른다. 오픈코볼 1.1 프리릴리스는 2009년 2월까지 작업이 계속되었다. 2012년 5월, 개발은 소스포지로 이동되었고 2009년 2월 프리릴리스는 릴리스로 표기되었다. 2013년 9월 말, 오픈코볼은 GNU 프로젝트로 수용되어 그누 코볼(GNU Cobol)로 이름이 변경되었다가 마침내 2014년 9월 그누코볼(GnuCOBOL)로 명칭이 변경되었다.
론 노먼은 그누코볼 2.0의 한 브랜치로서 리포트 라이터 모듈을 추가하였으며 세르게이 케시린은 C 대신 C++ 중간체를 사용하는 버전을 개발하였다.

최신 릴리스는 현재 v3.1 파이널이며 2020년 7월 7일 출시되었다.

그누코볼 소스 코드(그누 코볼 및 오픈코볼 스펠링의 버전 포함)에 대한 자유 소프트웨어 재단으로의 저작권 이양은 2015년 6월 17일 마무리되었다.

예시 프로그램

역사적 
000100* HELLO.COB GnuCOBOL example
000200 IDENTIFICATION DIVISION.
000300 PROGRAM-ID. hello.
000400 PROCEDURE DIVISION.
000500     DISPLAY "Hello, world!".
000600     STOP RUN.
컴파일 및 실행:
$ cobc -x HELLO.COB
$ ./HELLO
Hello, world!

현대의 자유 포맷 
*> GnuCOBOL Hello World example
id division.
program-id. hello.
procedure division.
display "Hello, world!" end-display
goback.
컴파일 및 실행:
$ cobc -x -free hello.cob
$ ./hello
Hello, world!

최단형 
그누코볼 2.0의 완화된 문법 옵션을 포함한 가장 짧은 형태의 유효한 코볼 프로그램은 빈 파일이다. 컴파일 및 실행은 다음과 같다:
$ cobc -x -frelax-syntax ./empty.cob
./empty.cob: 1: Warning: PROGRAM-ID header missing - assumed
$ ./empty
$
초기 버전 및 완화된 문법의 경우:
display"Hello, world!".
컴파일 및 실행:
$ 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!
문법 완화 없이(모든 버전의 그누 코볼, 그누 코볼, 오픈코볼에 해당. 고정 레이아웃 코볼 소스의 경우 7개의 공백이 줄 맨 앞에 선행한다):
       program-id.h.procedure division.display "Hello, world!".
오류 없이 컴파일:
$ cobc -x smallest.cob
$ ./smallest
Hello, world!

각주

외부 링크 
GNU site, official releases of GnuCOBOL

Open Source COBOL Consortium in Japan
GnuCOBOL FAQ
Add1ToCOBOL Open Source Cobol and OpenCOBOL advocacy site

New COBOL Users Group

코볼
컴파일러
자유 컴파일러와 인터프리터
GNU 프로젝트 소프트웨어