GnuCOBOL (曾称OpenCOBOL 、GNU Cobol )是COBOL程式语言的免费版本,最初由Keisuke Nishida设计,由Roger While负责领导开发,最近的版本是由Simon Sobisch,Sergey Kashyrin,Ron Norman,Edward Hart和其他许多人领导。[1]
此条目翻译品质不佳。 (2019年8月11日) |
历史
在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月的预先发表版本标记为发行版本。 [2] 2013年9月下旬,OpenCOBOL 语言被接受为GNU项目 ,更名为GNU Cobol,最后于2014年9月更名为GnuCOBOL。 [3] Ron Norman添加了一个Report Writer模块作为GnuCobol 2.0的一个分支,Sergey Kashyrin开发了一个使用C ++(而非C语言)作为中介的版本 。 [4]
目前最新的版本是2017年9月7日发布的v2.2 Final。
2015年6月17日,将GnuCOBOL 语言源代码(包括具有GNU Cobol和OpenCOBOL拼写的版本)的版权转让给自由软件基金会。 [5]
开发原则
开发者力求与COBOL语言标准保持一致,符合当前的COBOL 2014规范,并包含现有编译器中常见的功能,但并不保证其标准一致性的程度。 [6] 即便如此,2.2最终版本通过了NIST COBOL 85测试套件中,9708个测试中的9,688个(99.79%),删除了20个。 [7]
GnuCOBOL将COBOL 语言程序(原始码)转换为C语言,然后将C语言程式码编译成电脑使用的机器语言代码(目标码),或其他程序可以呼叫(链接到)的库。 在UNIX和类似的操作系统(例如Linux )下,使用GNU C编译器;在微软Windows系统 ,Microsoft的Visual Studio Express提供了C编译器。 两阶段的编译通常可以由单个命令执行,但是使用者也可以选择只编译到C语言程式码即可。 [8]
文件
2002年至2012年开发团队的官方主页是opencobol.org网站,也是上游开发资料的最佳来源。 [9] 但是最近的开发工作都在SourceForge项目空间 (页面存档备份,存于互联网档案馆)内进行,其中也包含最新的GnuCOBOL 语言文件和信息。
由Gary Cutler撰写的OpenCOBOL程式设计指南是根据GNU自由文档许可证发布的, [8]已更新并包含GnuCOBOL 语言和Report Writer,并列在GnuCOBOL文件概述页面中。 [10]
范例程式
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
identification division.
program-id. hello.
procedure division.
display "Hello, world!"
end-display.
goback.
编译和执行:
$ cobc -x -free hello.cob
$ ./hello
Hello, 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.cob
hello.cob: 1: Warning: PROGRAM-ID header missing - assumed
hello.cob: 1: Warning: PROCEDURE DIVISION header missing - assumed
$ ./hello
Hello, world!
任何版本的GnuCOBOL,GNU Cobol或OpenCOBOL,没有宽松的语法。 (注意,有7个前导空格,以符合FIXED布局COBOL源(FIXED layout COBOL source)):
program-id.h.procedure division.display "Hello, world!".
编译没有错误:
$ cobc -x smallest.cob
$ ./smallest
Hello, world!
请注意,这些小程式并不是良好的COBOL语言程式码; COBOL 语言设计目标是成为一种可读的英语编程语言。
实作
解析器和词法扫描器使用Bison和Flex 。 GPL许可编译器和LGPL许可的运行时库是用C语言编写的,并使用C ABI进行外部程序链接。
构建包装使用GNU Build System 。 使用make check进行
标准测试使用需要指定 Autoconf ,通过make test
运行的ANSI85测试套件使用Perl脚本。
设置GnuCOBOL编译的configure脚本具有以下选项:
- 选择C编译器及其后期翻译编译选项
- 用于ISAM支持的数据库管理系统
- 包含iconv
可用版本
参考
外部链接
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.