ibm-midrange - CALLP 也是动态调用还是可以被视为 ILE RPG 中的静态调用
问题描述
我有一个模块,其中包含主程序和子程序,其他脚本正在使用 EXTPGM 调用模块,但很少有脚本不使用 EXTPGM 他们正在使用 CALLP,任何人都可以帮助我了解 CALLP 是动态调用还是静态调用ILE 角色扮演游戏?
解决方案
从手册:
如果原型上指定了关键字EXTPGM,则调用将是动态外部调用;否则它将是一个绑定的过程调用。
编辑
分辨率不变。在第一次通话期间已解决。只要程序处于活动状态,就不会重新解决。
该规则的例外是 ifEXTPGM()
与变量而不是常量一起使用;并且变量的值发生变化。
dcl-s pgmToCall varchar(21);
dcl-pr Mypgm extpgm(pgmToCall);
end-pr;
//SOMEPGM will be resolved twice
// assuming the library list hasn't change
// both will resolve to the same *PGM
pgmToCall = 'SOMEPGM';
Mypgm();
pgmToCall = '*LIBL/SOMEPGM';
Mypgm();
请注意,这并不是什么新鲜事。CALL
RPGIII 和 RPGIV 中的操作码工作方式相同。
推荐阅读
- react-hooks - 将回调传递给自定义反应钩子
- python-3.x - 是否可以使用 Python tarfile 读取并附加到 tar
- anaconda - Anaconda 安装卡在 - '设置包缓存'
- flutter - 无法使用 Quckblox 和 Flutter 接收消息和传入事件
- javascript - 如何展平不同对象的嵌套数组但仅从现有属性名称中获取值?
- bash - 代码没有列出两个输入之间的所有偶数
- javascript - Html 和 Javascript:结合按钮和 js 功能代码
- reactjs - 根据从 reactjs 中的下拉选项中选择来渲染对象
- r - R:更改文件夹中所有文件的文本
- windows-server-2008 - PowerShell 5.0 PathTooLongException 错误