GnuCOBOL (曾称OpenCOBOLGNU Cobol )是COBOL程式语言的免费版本,最初由Keisuke Nishida设计,由Roger While负责領導開發,最近的版本是由Simon Sobisch,Sergey Kashyrin,Ron Norman,Edward Hart和其他许多人领导。[1]

GnuCOBOL
原作者Keisuke Nishida, Roger While
開發者Edward Hart, Sergey Kashyrin, Ron Norman, Simon Sobisch and many others.
首次发布2002年1月25日,​22年前​(2002-01-25
当前版本3.1.1(2020年12月8日,​4年前​(2020-12-08
预览版本3.1rc-1(2020年7月7日,​4年前​(2020-07-07
源代码库 編輯維基數據鏈接
编程语言C,有使用 C++ 的分支版本
文件大小1 MB
语言英語、德語、義大利語、日語、西班牙語
类型程式語言
许可协议GPL with runtime libraries under LGPL
网站gnucobol.sourceforge.io/ 编辑维基数据

历史

在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 语言設計目標是成为一种可读的英语编程语言。

實作

解析器和词法扫描器使用BisonFlexGPL许可编译器和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月发布的文档。

参考

  1. ^ Tiffin, Brian. OpenCOBOL FAQ. 2013-10-19 [2013-12-13]. (原始内容存档于2020-11-26). 
  2. ^ Tiffin, Brian. OpenCOBOL FAQ. 2013-10-19 [2013-12-13]. (原始内容存档于2020-11-26). 
  3. ^ Tiffin, Brian. GNU Cobol is now a real thing. [2013-10-01]. (原始内容存档于2013-10-05). 
  4. ^ Sobisch, Simon. Work in Progress. 2013-11-06 [2019-08-10]. (原始内容存档于2020-05-10). 
  5. ^ Tiffin, Brian. State of the Project. [2015-07-23]. (原始内容存档于2016-03-07). 
  6. ^ 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. 
  7. ^ OpenCOBOL FAQ. [2013-10-09]. (原始内容存档于2020-11-26). 
  8. ^ 8.0 8.1 Cutler, Gary. OpenCOBOL Programmer's Guide (PDF). Opencobol.addltocobol.com. [2012-11-20]. (原始内容存档 (PDF)于2019-09-27).  引用错误:带有name属性“ProgGuide”的<ref>标签用不同内容定义了多次
  9. ^ An open-source COBOL compiler. OpenCOBOL. [2012-11-20]. (原始内容存档于2015-09-11). 
  10. ^ Cutler, Gary. GnuCOBOL Guides. Opencobol.addltocobol.com. [2015-07-22]. (原始内容存档于2019-09-27). 
  11. ^ GnuCOBOL - Browse Files at. Sourceforge.net. 2007-12-27 [2015-10-28]. (原始内容存档于2019-08-10). 
  12. ^ GnuCOBOL downloads at SourceForge
  13. ^ GnuCOBOL downloads at SourceForge
  14. ^ Debian package details. [2019-08-10]. (原始内容存档于2019-08-10). 
  15. ^ GnuCOBOL downloads at SourceForge

外部链接