精通COBOL--11.1.1 提高代码可重用性

本文介绍如何通过子程序调用避免代码重复,提高程序效率。通过具体案例展示如何将重复的利率计算功能提取成独立子程序,简化主程序并实现多次复用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  对于某一部分功能代码,有时可能会在多个程序中被反复用到。此时,最好的方式便是将该功能代码编写为一个独立的子程序,通过子程序调用来对其进行使用。

例如,下面这两段程序都要到一个关于利率计算的功能段。假设利率为1.5,通过RATE变量表示,并假设第一段程序代码如下。

IDENTIFICATION   DIVISION.

PROGRAM-ID      TEST-PROG-ONE.

AUTHER           XXX.

*

ENVIRONMENT   DIVISION.

*

DATA  DIVISION.

WORKING STORAGE SECTION.

 01  RATE                   PIC  S9V9.

 01  ORIGIN-DATA1          PIC  S9(5).

 01  NEW-DATA1             PIC  S9(5).

……

*

PROCEDURE   DIVISION.

……

PERFORM  100-COMPUTE-RATE.

……

STOP RUN.

 ……

 100-COMPUTE-RATE.

MOVE 1.5 TO RATE.

MULTIPLY  ORIGIN-DATA1  BY  RATE  GIVING  NEW-DATA1.

另一段程序代码如下。

IDENTIFICATION   DIVISION.

PROGRAM-ID      TEST-PROG-TWO.

AUTHER           XXX.

*

ENVIRONMENT   DIVISION.

*

DATA  DIVISION.

WORKING STORAGE SECTION.

 01  RATE                   PIC  S9V9.

 01  ORIGIN-DATA2          PIC  S9(5).

 01  NEW-DATA2             PIC  S9(5).

……

*

PROCEDURE   DIVISION.

……

PERFORM  100-COMPUTE-RATE.

……

STOP RUN.

 ……

 100-COMPUTE-RATE.

MOVE 1.5 TO RATE.

MULTIPLY  ORIGIN-DATA2  BY  RATE  GIVING  NEW-DATA2.

通过比较以上两段程序可以发现,这两段程序中利率计算的功能段代码实际上是类似的。虽然以上两段程序都将该功能段代码写为了一个处理过程,便于程序内通过PERFORM语句调用。但是,若将这两段代码看作一个整体,仍然对利率计算的功能段代码进行了重复编写,不够简便。因此,考虑到子程序调用技术,可首先将利率计算的功能段代码编写为如下一个小的程序。

IDENTIFICATION   DIVISION.

PROGRAM-ID      SUBPROG.

AUTHER           XXX.

*

ENVIRONMENT   DIVISION.

*

DATA  DIVISION.

WORKING STORAGE SECTION.

 01  RATE                   PIC  S9V9.

 LINKAGE SECTION.

 77  ORIGIN-DATA           PIC   S9(5).

 77  NEW-DATA              PIC   S9(5).

*

PROCEDURE   DIVISION  USING  ORIGIN-DATA  NEW-DATA.

MOVE 1.5 TO RATE.

MULTIPLY  ORIGIN-DATA  BY  RATE

             GIVING  NEW-DATA.

    GOBACK.

此时,之前的两段程序便可通过子程序调用的方式重复实现利率计算的功能了。根据以上子程序,可将之前的第一段程序改写如下。

IDENTIFICATION   DIVISION.

PROGRAM-ID      TEST-PROG-ONE.

AUTHER           XXX.

*

ENVIRONMENT   DIVISION.

*

DATA  DIVISION.

WORKING STORAGE SECTION.

 77  ORIGIN-DATA1          PIC  S9(5).

 77  NEW-DATA1             PIC  S9(5).

……

*

PROCEDURE   DIVISION.

……

CALL  ‘SUBPROG’   USING  ORIGIN-DATA1

NEW-DATA1.

……

STOP RUN.

第二段程序相应的改写如下。

IDENTIFICATION   DIVISION.

PROGRAM-ID      TEST-PROG-TWO.

AUTHER           XXX.

*

ENVIRONMENT   DIVISION.

*

DATA  DIVISION.

WORKING STORAGE SECTION.

 77  ORIGIN-DATA2          PIC  S9(5).

 77  NEW-DATA2             PIC  S9(5).

……

*

PROCEDURE   DIVISION.

……

CALL  ‘SUBPROG’   USING  ORIGIN-DATA2

NEW-DATA2.

……

STOP RUN.

可以看到,使用子程序调用后,以上两段程序中都不用重复编写利率计算这一功能段代码了。该功能是直接通过调用利率计算的子程序所实现的。实际上,基于子程序调用技术,此处实现的正是一次编码,多次使用。并且,当使用同一功能段代码的程序越多,采用子程序调用方式的优势就越明显。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值