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日,​3年前​(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

外部連結

編輯