尽管其受欢迎程度已经减弱,但 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 程序。 为了这 example,我设置了用户名 fedorauser,我将在我的主目录下创建一个文件夹来存储我的 COBOL 程序。 我叫我的 cobolcode。
# 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”保存并 close 文件。
通过键入以下内容来编译程序:
# 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”保存并 close 文件。
编译程序:
# cobc -x fib.cbl
现在执行程序:
# ./fib
该程序将要求您输入一个数字,然后将根据该数字生成斐波那契输出。
进一步研究
互联网上有许多资源可供参考,但大量知识仅存在于传统印刷品中。 访问二手书店和公共图书馆时,请留意老式 COBOL 指南; 您可能会以最低的价格找到濒危手册的副本!
还值得注意的是,当您安装 GnuCOBOL 时,有用的文档已安装在您的系统上。 您可以使用以下终端命令访问它们:
# info gnucobol # man cobc # cobc -h
