儘管 COBOL 的受歡迎程度下降,但它仍在許多主要組織中繼續增強重要的業務運營。隨著對這些應用程序的更新、升級和故障排除需求的增加,對具有 COBOL 開發知識的人員的需求也在增加。
Fedora 33 是一個很棒的 COBOL 開發平台。
本文詳細介紹瞭如何安裝和配置工具以及如何編譯和運行您的 COBOL 程序。
工具安裝和配置
GnuCOBOL 是由志願者開發人員維護的免費、開放和最新的編譯器。要安裝,請打開終端並運行以下命令:
# sudo dnf -y install gnucobol
完成後,運行以下命令以驗證 GnuCOBOL 是否已準備好工作。
# cobc -v
顯示版本信息和構建日期。 如果您收到錯誤“無輸入文件”,請不要擔心。下一步是使用 Vim 文本編輯器創建 COBOL 程序文件。
Fedora 帶有 Vim 的最小版本,但如果有完整版本可以提供的一些附加功能,例如突出顯示 COBOL 語法,那就太好了。運行以下命令安裝 Vim-enhanced,它會覆蓋 Vim-minimal。
# sudo dnf -y install vim-enhanced
創建、編譯和運行 COBOL 程序
此時,您已準備好編寫 COBOL 程序。此示例使用用戶名 fedorauser 進行設置,並在您的主目錄中創建一個文件夾來存儲您的 COBOL 程序。我稱之為我的 COBOL 代碼。
# mkdir /home/fedorauser/cobolcode # cd /home/fedorauser/cobolcode
您現在可以創建並打開一個新文件並導入您的 COBOL 源程序。這稱為 helloworld.cbl。
# vim helloworld.cbl
現在 Vim 將打開一個空白文件供您編輯。這是一個簡單的程序,它只向終端打印一條消息。
按“i”鍵在vim中啟用插入模式,然後輸入以下文本: Vim 有助於放置代碼片段。這很有用,因為 COBOL 文件中的每個字符空間都有其用途(這是開發人員完成並輸入到計算機的物理卡的數字表示)。
IDENTIFICATION DIVISION. PROGRAM-ID. HELLO-WORLD. *simple helloworld program. PROCEDURE DIVISION. DISPLAY '##################################'. DISPLAY '#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#'. DISPLAY '#!!!!!!!!!!FEDORA RULES!!!!!!!!!!#'. DISPLAY '#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#'. DISPLAY '##################################'. STOP RUN.
您現在可以按“ESC”退出插入模式並輸入“:x”保存並關閉文件。
通過鍵入以下內容編譯程序:
# cobc -x helloworld.cbl
它應該立即退出並返回狀態:0。 鍵入“ls”以查看當前目錄的內容。您將看到原始的 helloworld.cbl 文件和一個簡單命名為 helloworld 的新文件。
執行 COBOL 程序。
# ./helloworld
如果您看到沒有錯誤的文本輸出,則您的程序已編譯並成功運行。
現在您已經了解了創建、編譯和運行 COBOL 程序的基礎知識,讓我們做一些更有趣的事情。
以下程序從輸入生成斐波那契數列。 使用 Vim 創建一個名為 fib.cbl 的文件並輸入以下文本:
****************************************************************** * Author: Bryan Flood * Date: 25/10/2018 * Purpose: Compute Fibonacci Numbers * Tectonics: cobc ****************************************************************** IDENTIFICATION DIVISION. PROGRAM-ID. FIB. DATA DIVISION. FILE SECTION. WORKING-STORAGE SECTION. 01 N0 BINARY-C-LONG VALUE 0. 01 N1 BINARY-C-LONG VALUE 1. 01 SWAP BINARY-C-LONG VALUE 1. 01 RESULT PIC Z(20)9. 01 I BINARY-C-LONG VALUE 0. 01 I-MAX BINARY-C-LONG VALUE 0. 01 LARGEST-N BINARY-C-LONG VALUE 92. PROCEDURE DIVISION. *> THIS IS WHERE THE LABELS GET CALLED PERFORM MAIN PERFORM ENDFIB GOBACK. *> THIS ACCEPTS INPUT AND DETERMINES THE OUTPUT USING A EVAL STMT MAIN. DISPLAY "ENTER N TO GENERATE THE FIBONACCI SEQUENCE" ACCEPT I-MAX. EVALUATE TRUE WHEN I-MAX > LARGEST-N PERFORM INVALIDN WHEN I-MAX > 2 PERFORM CASEGREATERTHAN2 WHEN I-MAX = 2 PERFORM CASE2 WHEN I-MAX = 1 PERFORM CASE1 WHEN I-MAX = 0 PERFORM CASE0 WHEN OTHER PERFORM INVALIDN END-EVALUATE. STOP RUN. *> THE CASE FOR WHEN N = 0 CASE0. MOVE N0 TO RESULT. DISPLAY RESULT. *> THE CASE FOR WHEN N = 1 CASE1. PERFORM CASE0 MOVE N1 TO RESULT. DISPLAY RESULT. *> THE CASE FOR WHEN N = 2 CASE2. PERFORM CASE1 MOVE N1 TO RESULT. DISPLAY RESULT. *> THE CASE FOR WHEN N > 2 CASEGREATERTHAN2. PERFORM CASE1 PERFORM VARYING I FROM 1 BY 1 UNTIL I = I-MAX ADD N0 TO N1 GIVING SWAP MOVE N1 TO N0 MOVE SWAP TO N1 MOVE SWAP TO RESULT DISPLAY RESULT END-PERFORM. *> PROVIDE ERROR FOR INVALID INPUT INVALIDN. DISPLAY 'INVALID N VALUE. THE PROGRAM WILL NOW END'. *> END THE PROGRAM WITH A MESSAGE ENDFIB. DISPLAY "THE PROGRAM HAS COMPLETED AND WILL NOW END". END PROGRAM FIB.
和以前一樣,按 ESC 退出插入模式並輸入:x 保存並關閉文件。
編譯器:
# cobc -x fib.cbl
然後運行程序。
# ./fib
該程序接受一個數字輸入並根據該數字產生一個斐波那契輸出。

進一步的研究
互聯網上有很多資源,但很多知識只存在於傳統印刷品中。訪問二手書店和公共圖書館時,請注意老式 COBOL 指南。您可以以最低的價格找到瀕臨滅絕的手冊的副本。
另請注意,當您安裝 GnuCOBOL 時,系統上已經安裝了有用的文檔。您可以使用以下終端命令訪問它們:
# info gnucobol # man cobc # cobc -h
