java调用cobol_COBOL子程序调用

内部子程序

IDENTIFICATION DIVISION.

PROGRAM-ID. PROC-A.

ENVIRONMENT DIVISION.

...

DATA DIVISION.

...

PROCEDURE DIVISION.

...

IDENTIFICATION DIVISION.

PROGRAM-ID. PROC-B.

ENVIRONMENT DIVISION.

...

DATA DIVISION.

...

PROCEDURE DIVISION.

...

END PROGRAM PROC-B.

IDENTIFICATION DIVISION.

PROGRAM-ID. PROC-C.

ENVIRONMENT DIVISION.

...

DATA DIVISION.

...

PROCEDURE DIVISION.

...

IDENTIFICATION DIVISION.

PROGRAM-ID. PROC-D.

ENVIRONMENT DIVISION.

...

DATA DIVISION.

...

PROCEDURE DIVISION.

...

END PROGRAM PROC-D.

END PROGRAM PROC-C.

END PROGRAM PROC-A.

程序A包含B,C两个子程序,其中C又包含子程序D。

A能调用B,C。C能调用D。B不能调用C,A不能调用D。

如果C声明为公用的,则B可以调用C,语法为:

PROGRAM-ID. PROC-C IS COMMON PROGRAM.

当前函数中定义的变量都只是对当前函数有效。可以用GLOBAL声明为对所有函数有效。

01 DATA-NAME IS GOLBAL ...

文件也有此声明:FD FILE-NAME IS GOLBAL ...

如果调用的不是本程序中的文件或变量,则可以用EXTERNAL声明。

FD FILE-NAME IS EXTERNAL.../01 DATA-NAME IS EXTERNAL...

CALL PROC VAR1 [ON EXCEPTION CODE1] [NOT ON EXCEPTION CODE2] END-CALL.

如果找不到PROC程序名,执行CODE1(如果有此声明),找到将参数VAR1传递给PROC,并执行。PROC返回时执行CODE2(如果有此声明)。

参数应该在文件,工作存储或连接节中定义,应为01层数据项,77层数据项或基本数据项。

子程序要返回调用程序,执行EXIT PROGRAM

传递参数有3步:

首先在调用程序的CALL语句列出要传递的参数。

CALL PROC VAR1 .

然后在被调用程序的过程部标题,使用USING短语列出相应的参数。

PROCEDURE DIVISION USING VAR1.

最后在被调用程序的连接节(LINKAGE SECTION)提供参数的存储空间。

LINKAGE SECTION.

01 VAR1 PIC XX.

参数传递有2中方式:

BY CONTENT    传递的参数值只在被调用函数中被改变,调用函数中的值不变。

BY REFERENCE. 传递的参数值在被调用函数中被改变,调用函数中的值也改变。

CALL PROC VAR1 BY CONTENT/REFERENCE.

再次调用子程序,子程序处于上次退出的状态(除了连接节中的数据),打开的文件依然打开。

可以用INITIAL声明函数被调用时处于初始状态。

PROGRAM-ID. PROC-C IS INITIAL PROGRAM.

如果不想每次执行都初始化,只在需要的时候初始化,可以用CANCEL PROC.初始化PROC程序,但不执行PROC。

文章来源

:http://szhfdy.bokee.com/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值