Loading AI tools
来自维基百科,自由的百科全书
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腳本具有以下選項:
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.