精通COBOL--11.1.1 提高代码可重用性
2008-04-29 10:12
246 查看
对于某一部分功能代码,有时可能会在多个程序中被反复用到。此时,最好的方式便是将该功能代码编写为一个独立的子程序,通过子程序调用来对其进行使用。
例如,下面这两段程序都要到一个关于利率计算的功能段。假设利率为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.
可以看到,使用子程序调用后,以上两段程序中都不用重复编写利率计算这一功能段代码了。该功能是直接通过调用利率计算的子程序所实现的。实际上,基于子程序调用技术,此处实现的正是一次编码,多次使用。并且,当使用同一功能段代码的程序越多,采用子程序调用方式的优势就越明显。
例如,下面这两段程序都要到一个关于利率计算的功能段。假设利率为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.
可以看到,使用子程序调用后,以上两段程序中都不用重复编写利率计算这一功能段代码了。该功能是直接通过调用利率计算的子程序所实现的。实际上,基于子程序调用技术,此处实现的正是一次编码,多次使用。并且,当使用同一功能段代码的程序越多,采用子程序调用方式的优势就越明显。
相关文章推荐
- 最大限制地提高代码的可重用性,克服传统面向对象编程方法在可重用性方面的不足
- 精通COBOL--11.1.2 提高部分功能段执行效率
- 11.1.1 重用常见的代码块
- 修改现有代码提高其可重用性
- 最大限制地提高代码的可重用性克服传统面向对象编程方法在可重用性方面的不足
- 持久化模式,第 2 部分: 提高代码重用和改进性能,更多的现代 ORM 工具策略和最佳实践
- 提高Java代码重用性方法 措施二:把参数类型改成接口
- javascript 命名空间以提高代码重用性
- 合理利用css的权重:提高代码的重用性
- 提高代码重用和改进性能
- Attribute+Reflection,提高代码重用
- 精通javascript 第三章: 创建可重用的代码
- javascript 命名空间以提高代码重用性
- JavaBean编程学习--使用JavaBean提高JSP的代码重用性
- (转载)如何提高Java代码可重用性
- 代码干货 | nginx中session ticket重用Session提高https性能分析
- 最大限制地提高代码的可重用性
- 用Oracle用户自定义合计函数来提高代码重用性
- 提高Java代码重用性方法 措施二:把参数类型改成接口
- 嵌入式软件设计之提高代码可移植性