精通COBOL--11.6.2 动态调用程序示例
来源:互联网 发布:java项目中对并发 编辑:程序博客网 时间:2024/06/05 22:02
下面通过具体的程序示例,以便更好地说明动态调用的特点及用法。首先,假设在动态调用中,某一主程序代码如下。
IDENTIFICATION DIVISION.
PROGRAM-ID DYNAMIC-MAIN.
AUTHER XXX.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
WORKING STORAGE SECTION.
01 IDENTIF PIC X(10).
77 TEST-NUM PIC 99.
*
PROCEDURE DIVISION.
PERFORM INIT-TEST-NUM.
MOVE ‘DYNAMIC-SUB’ TO IDENTIF.
CALL IDENTIF USING TEST-NUM.
DISPLAY ‘TEST-NUM AFTER THE FIRST CALL: ’ TEST-NUM.
PERFORM INIT-TEST-NUM.
CANCEL IDENTIF. /*此处将第一次调用后的子程序从内存中移除*/
MOVE ‘DYNAMIC-ENTRY’ TO IDENTIF.
CALL IDENTIF USING TEST-NUM.
DISPLAY ‘TEST-NUM AFTER THE SECOND CALL: ’ TEST-NUM.
STOP RUN.
INIT-TEST-NUM.
MOVE 10 TO TEST-NUM.
令该主程序中调用的子程序DYNAMIC-SUB的代码如下。
IDENTIFICATION DIVISION.
PROGRAM-ID DYNAMIC-SUB.
AUTHER XXX.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
WORKING STORAGE SECTION.
01 PLUS-NUM PIC 99 VALUE 15.
LINKAGE SECTION.
77 MAIN-NUM PIC 99.
*
PROCEDURE DIVISION USING MAIN-NUM.
ADD MAIN-NUM TO PLUS-NUM.
MOVE PLUS-NUM TO MAIN-NUM.
GOBACK.
ENTRY ‘DYNAMIC-ENTRY’ USING MAIN-NUM.
ADD MAIN-NUM TO PLUS-NUM.
MOVE PLUS-NUM TO MAIN-NUM.
GOBACK.
以上程序执行后,将产生如下输出结果。
TEST-NUM AFTER THE FIRST CALL: 25
TEST-NUM AFTER THE SECOND CALL: 25
可以看到,以上这两段程序实际上和静态调用中的两段示例程序是类似的。不过,此处子程序中虽然没有手工进行初始化,但每次调用时仍为最初始的状态。原因是在主程序中,第一次调用该子程序后使用了CANCEL语句将其从内存中移除掉了。这样,在第二次调用时,该子程序将被重新读入内存,其状态和第一次调用时是一样的。
最后,对本节所讲的动态调用与其所对应的静态调用总结如下。
q 在COBOL程序中,静态调用通常使用CALL literal语句实现。CALL literal语句实际上就是将所调用的程序名,或选择性入口地址名作为直接数进行调用。静态调用的子程序每次被调用时的状态,为其上一次调用之后的状态。
q 动态调用通常使用CALL identifier语句实现。CALL identifier语句实际上就是将所调用的程序名,或选择性入口地址名MOVE到变量中调用。并且,凡是使用CALL identifier语句进行的调用都为动态调用。在动态调用中,可以通过CANCEL identifier语句,将调用后的子程序从内存中移除掉。这样,便可使得下一次调用时该子程序为最初始的状态。
- 精通COBOL--11.6.2 动态调用程序示例
- 精通COBOL--11.5.2 静态调用程序示例
- 精通COBOL--11.6 动态调用
- 精通COBOL--11.6.1 动态调用的基本概念
- 精通COBOL--11.4 被调用程序
- 精通COBOL--16.5 CICS中的程序调用
- 精通COBOL--11.3.2 主调用程序中的调用过程
- 精通COBOL--11.4.2 被调用程序中参数的引用
- 精通COBOL--16.5.2 使用XCTL命令进行程序调用
- 精通COBOL--11.2.2 子程序的调用顺序
- 精通COBOL--11.5 静态调用
- 精通COBOL--11.4.1 被调用程序中参数的定义
- 精通COBOL--11.4.3 被调用程序中的入口地址
- 精通COBOL--16.5.1 使用LINK命令进行程序调用
- 精通COBOL--第11章 子程序调用
- 精通COBOL--11.1 子程序调用的作用
- 精通COBOL--11.2 子程序调用的特点
- 精通COBOL--11.5.1 静态调用的基本概念
- web项目经理手册
- 我的日记-1***000(浅谈css)
- 精通COBOL--11.6.1 动态调用的基本概念
- 项目流程总结V2.0
- XMLHTTP 获得服务器端对象
- 精通COBOL--11.6.2 动态调用程序示例
- C# 语言中怎么使用“全局变量”?
- 电子商务与企业信息化建设
- 精通COBOL--11.7 嵌套子程序
- 一份非常棒的inline hook 代码
- vsftpd研究手记
- 真·AjaxControlToolkit控件安装指南
- 精通COBOL--11.7.1 嵌套子程序的结构
- ASP.NET 2.0 里输出文本格式流