GnuCOBOL

✍ dations ◷ 2024-12-23 00:01:39 #GNU计划软件,自由编译器与直译器,编译器软件

GnuCOBOL (曾称OpenCOBOL 、GNU Cobol )是COBOL程式语言的免费版本,最初由Keisuke Nishida设计,由Roger While负责领导开发,最近的版本是由Simon Sobisch,Sergey Kashyrin,Ron Norman,Edward Hart和其他许多人领导。

在Tiny COBOL上与Rildo Pragana合作时,Keisuke决定尝试建立相容于GNU编译器套装的COBOL 语言编译器,很快便成立了OpenCOBOL。 Keisuke担任首席开发人员到2005年和版本0.31为止,接着由Roger While领导,并于2007年12月27日发布了OpenCOBOL 1.0。 OpenCOBOL 1.1预先发表版本的工作一直持续到2009年2月。 2012年5月,开发转移到SourceForge ,将2009年2月的预先发表版本标记为发行版本。 2013年9月下旬,OpenCOBOL 语言被接受为GNU项目 ,更名为GNU Cobol,最后于2014年9月更名为GnuCOBOL。 Ron Norman添加了一个Report Writer模块作为GnuCobol 2.0的一个分支,Sergey Kashyrin开发了一个使用C ++(而非C语言)作为中介的版本 。

目前最新的版本是2017年9月7日发布的v2.2 Final。

2015年6月17日,将GnuCOBOL 语言源代码(包括具有GNU Cobol和OpenCOBOL拼写的版本)的版权转让给自由软件基金会。

开发者力求与COBOL语言标准保持一致,符合当前的COBOL 2014规范,并包含现有编译器中常见的功能,但并不保证其标准一致性的程度。 即便如此,2.2最终版本通过了NIST COBOL 85测试套件中,9708个测试中的9,688个(99.79%),删除了20个。

GnuCOBOL将COBOL 语言程序(原始码)转换为C语言,然后将C语言程式码编译成电脑使用的机器语言代码(目标码),或其他程序可以呼叫(链接到)的库。 在UNIX和类似的操作系统(例如Linux )下,使用GNU C编译器;在微软Windows系统 ,Microsoft的Visual Studio Express提供了C编译器。 两阶段的编译通常可以由单个命令执行,但是使用者也可以选择只编译到C语言程式码即可。

2002年至2012年开发团队的官方主页是opencobol.org网站,也是上游开发资料的最佳来源。 但是最近的开发工作都在SourceForge项目空间内进行,其中也包含最新的GnuCOBOL 语言文件和信息。

由Gary Cutler撰写的OpenCOBOL程式设计指南是根据GNU自由文档许可证发布的, 已更新并包含GnuCOBOL 语言和Report Writer,并列在GnuCOBOL文件概述页面中。

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

编译和执行:

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

现代,免费格式写法

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

编译和执行:

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

最短写法

使用GnuCOBOL 2.0中的宽松语法选项,最短的有效COBOL程式是一个空白文件。 编译和执行如下:

$ 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.cobhello.cob: 1: Warning: PROGRAM-ID header missing - assumedhello.cob: 1: Warning: PROCEDURE DIVISION header missing - assumed$ ./helloHello, world!

任何版本的GnuCOBOL,GNU Cobol或OpenCOBOL,没有宽松的语法。 (注意,有7个前导空格,以符合FIXED布局COBOL源(FIXED layout COBOL source)):

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

编译没有错误:

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

解析器和词法扫描器使用Bison和Flex 。 GPL许可编译器和LGPL许可的运行时库是用C语言编写的,并使用C ABI进行外部程序链接。

构建包装使用GNU Build System 。 使用make check进行标准测试使用需要指定 Autoconf ,通过make test运行的ANSI85测试套件使用Perl脚本。

设置GnuCOBOL编译的configure脚本具有以下选项:

相关