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

来源:互联网 发布:centos 双网卡驱动 编辑:程序博客网 时间:2024/06/10 03:35

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

例如,下面这两段程序都要到一个关于利率计算的功能段。假设利率为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.

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

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 床垫气味太重怎么办 艾灸后经期延长怎么办 花叶上长白点怎么办 经期20天不止怎么办 尤加利叶尖干了怎么办 水培竹子根发黄怎么办 水培的竹子发黄怎么办 鱼缸水草长黑毛怎么办 水草上长黑毛怎么办 鱼缸的水草长毛怎么办 鱼缸水草长白毛怎么办 被狐狸咬了怎么办 经常咳嗽有痰怎么办 嗓子痒经常咳嗽怎么办 冬季咳嗽老不好怎么办 孩子得喉炎咳嗽怎么办 夏天嗓子痒咳嗽怎么办 大人咳嗽老不好怎么办 孩子过敏咳嗽怎么办啊 过敏导致的咳嗽怎么办 奶水多营养不足怎么办 水培富贵竹叶尖发黄怎么办 水培富贵竹干尖怎么办 富贵竹叶子变黄了怎么办 富贵竹叶子变黄怎么办 富贵竹的叶子黄了怎么办 土栽富贵竹发黄怎么办 富贵竹的黄叶子怎么办 土培富贵竹发黄怎么办 富贵竹根变黄了怎么办 富贵竹叶子尖发黄怎么办 富贵竹新叶子发黄怎么办 富贵竹杆变黄了怎么办 水培观音竹叶子发黄怎么办 富贵竹叶子根部发黄怎么办 观音竹叶子干了怎么办 富贵竹叶子发干怎么办 观音竹老叶发黄怎么办 发财树缺营养怎么办 富贵竹根部长芽怎么办 门口的竹子发黄怎么办