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