GnuCOBOL
此条目翻译品质不佳。 (2019年8月11日) |
原作者 | Keisuke Nishida, Roger While |
---|---|
开发者 | Edward Hart, Sergey Kashyrin, Ron Norman, Simon Sobisch and many others. |
首次发布 | 2002年1月25日 |
当前版本 | 3.1.1(2020年12月8日 | )
预览版本 | 3.1rc-1(2020年7月7日 | )
源代码库 | |
编程语言 | C,有使用 C++ 的分支版本 |
文件大小 | 1 MB |
语言 | 英语、德语、意大利语、日语、西班牙语 |
类型 | 编程语言 |
许可协议 | GPL with runtime libraries under LGPL |
网站 | gnucobol |
GnuCOBOL (曾称OpenCOBOL 、GNU Cobol )是COBOL程式语言的免费版本,最初由Keisuke Nishida设计,由Roger While负责领导开发,最近的版本是由Simon Sobisch,Sergey Kashyrin,Ron Norman,Edward Hart和其他许多人领导。[1]
历史
[编辑]在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
可用版本
[编辑]- SourceForge发布1.0版。 [11]
- 1.1版,由SourceForge发布[12]
- SourceForge的2.0开发版本[13]
- open-cobol Debian包。 [14]
- 2.2最终,2017年9月7日从SourceForge发布[15]
- 2.2源自SourceForge代码树的2017年9月发布的文档。
参考
[编辑]- ^ Tiffin, Brian. OpenCOBOL FAQ. 2013-10-19 [2013-12-13]. (原始内容存档于2020-11-26).
- ^ Tiffin, Brian. OpenCOBOL FAQ. 2013-10-19 [2013-12-13]. (原始内容存档于2020-11-26).
- ^ Tiffin, Brian. GNU Cobol is now a real thing. [2013-10-01]. (原始内容存档于2013-10-05).
- ^ Sobisch, Simon. Work in Progress. 2013-11-06 [2019-08-10]. (原始内容存档于2020-05-10).
- ^ Tiffin, Brian. State of the Project. [2015-07-23]. (原始内容存档于2016-03-07).
- ^ OpenCOBOL FAQ. 2013-10-17 [2014-06-07]. (原始内容存档于2020-11-26).
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. [2013-10-09]. (原始内容存档于2020-11-26).
- ^ 8.0 8.1 Cutler, Gary. OpenCOBOL Programmer's Guide (PDF). Opencobol.addltocobol.com. [2012-11-20]. (原始内容存档 (PDF)于2019-09-27). 引用错误:带有name属性“ProgGuide”的
<ref>
标签用不同内容定义了多次 - ^ An open-source COBOL compiler. OpenCOBOL. [2012-11-20]. (原始内容存档于2015-09-11).
- ^ Cutler, Gary. GnuCOBOL Guides. Opencobol.addltocobol.com. [2015-07-22]. (原始内容存档于2019-09-27).
- ^ GnuCOBOL - Browse Files at. Sourceforge.net. 2007-12-27 [2015-10-28]. (原始内容存档于2019-08-10).
- ^ GnuCOBOL downloads at SourceForge
- ^ GnuCOBOL downloads at SourceForge
- ^ Debian package details. [2019-08-10]. (原始内容存档于2019-08-10).
- ^ GnuCOBOL downloads at SourceForge