COBOL 开发入门 Fedora Linux 33

尽管其受欢迎程度已经减弱,但 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
COBOL 开发入门 Fedora Linux 33 1