- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章 程序和过程调用
2.6 第九章 程序和过程调用
在ILE中,可以调用程序或过程。调用者必须指出调用语句的目标是程序还是过程。ILE RPG/400提供以下操作码支持程序或过程调用以及参数传递。
操作码 功能
CALL 调用程序目标
CALLB 调用连接的过程
RETURN 返回到调用的程序或过程
PLIST 定义参数列表
PARM 定义参数
本章描述了如何:
调用程序或过程
在程序和过程间传递参数
从程序或过程中返回
使用ILE可连接的API
调用图形子例程
调用特殊子例程
2.6.1 程序/过程调用概述
在ILE内的程序处理是基于过程级的(ILE程序包括一个或多个模块,模块包括一个或多个过程。一个ILE RPG/400模块只包含一个过程。其它的ILE语言允许有多个过程)。“程序调用”是过程调用的特殊形式;它是对程序入口过程的调用。程序入口过程是在建立程序时设计,在程序被调用时接收控制权。
本单元比较了程序调用和过程调用。为了帮助你理解调用间的相互关系,也介绍了调用堆栈的概念。
2.6.1.1 程序调用
可以使用程序调用来调用OPM或ILE程序。程序调用是对程序目标(*PGM)的调用。调用程序把控制传递给被调用程序之前,被调用程序的名字转换成运行时的地址。因此程序调用通常称为动态调用。
调用ILE程序或EPM程序或OPM程序都是程序调用的例子。对于不可连接的API的调用也是程序调用的例子。
你可以使用CALL操作进行程序调用。
当ILE程序被调用时,程序入口过程接收程序的参数并且得到对该程序的初始控制。另外,在该程序内的所有过程都成为有效的过程调用。
2.6.1.2 过程调用
与OPM程序不同,ILE程序不只限于程序调用。ILE程序也可以用静态过程调用或过程指针调用其它过程。过程调用也叫做调用。
静态调用是对一个ILE过程的调用,由该过程的名字在连接时转为地址,因此,以静态命名。使用静态过程调用的运行性能比使用程序调用要快。静态调用允许有操作描述,省略参数,并且扩展了传递的参数个数的限制(到399)。
过程指针调用提供了对过程的动态调用方法。例如,你可以把过程指针作为参数传递给另一个过程,然后,运行在传递的PARM操作中指定的过程,也可以用一个过程名或地址数组向不同的过程发送过程调用。如果被调用的过程在相同的活动组中,那么过程指针调用的开销几乎与静态过程调用的开销完全相同。
使用任何一种调用,可以调用同一个ILE程序或服务程序中某个模块内的过程,或是某个ILE服务程序内的过程。任何能用静态过程调用的过程都可以用过程指针调用。
要使用CALLB操作进行过程调用。
2.6.1.3 调用堆栈
调用堆栈是按照后进先出顺序(IFO)排列的调用堆栈入口列表。调用堆栈入口是对程序或过程的调用(CALL或CALLB)。每个作业有一个调用堆栈。
当ILE程序被调用时,程序入口过程首先加到调用堆栈中。然后系统自动地执行过程调用,并且相关的用户过程也被添加。当过程被调用时,只有用户过程被添加;对于程序入口过程没有动作。
图39显示一个调用堆栈,应用程序有OPM程序组成的,调用一个有两个模块的ILE程序,一个是RPG模块,包含程序入口程序和相关的用户入口过程;一个是C模块包含普通的过程。注意在本书的图解中,当前入口是在堆栈底部的。
调用堆栈
OPM OPM
程序A
ILE 程序调用
RPG模块 ILE
程序入口例程 PEP
ILE 过程调用(由系统)
用户入口例程 UEP
过程调用
C模块 ILE
例程 例程
图39 调用堆栈中的程序和过程调用
注意:用程序调用,对程序入口过程和用户入口过程(UEP)的调用是同时发生的,因为对用户入口过程(UEP)的调用是自动的。因此,今后在本章和其它章节中有关调用堆栈的图解中,把对程序调用的两个步骤合在一起。
关于调用堆栈需要理解的很重要的一点是,在堆栈上的ILE RPG/400过程。如果没有返回到调用者就不能被调用。因此,在调用其它过程时要小心,不能调用这样的过程,该过程已经调用一个处于活动状态的ILE RPG/400过程。
例如,假设在同一程序中有过程A,B和C。如果过程A调用过程B,那么过程B就不可
您可能关注的文档
- 第九章_清华1.ppt
- 19-第九章第二讲.ppt
- 第九章 实地研究 2.ppt
- 第九章 第一节《杠杆》课件(共29张PPT).ppt
- 高等教育出版社高等数学同济第六版下册第九章PPTD9_1基本概念.ppt
- 水文预报 第三章 流域汇流.ppt
- 第九章 文件系统1.ppt
- 重庆理工大学工程制图习题集答案—第九章零件图1.ppt
- 第九章 恒定磁场2.ppt
- 第九章整式的复习(一).ppt
- 分析let s单元56ago2卷纸zheng unit56.pdf
- 塑胶材料其它分类原料pa9t 12.pdf
- md16x16数字媒体切换器设备.pdf
- 者参考项目发起人学科类型单位序列承包商修订页代码顺序典型.pdf
- 届世界天然气大会阿姆斯特丹2006add10288.pdf
- 期测试记录表每周weekly g1g6 journeys tests level 6 lesson26.pdf
- modernize-whitepaper现代化您应用程序白皮书.pdf
- anybackup产品典型案例分析.pdf
- 约克金融工程课程tfeslide32.pdf
- 广州市妇女儿童医疗中心历份教学药历01tjy.pdf
文档评论(0)