Dynamic 动态链接库

Dynamic 动态链接库,dynamic,dll,cobol,zos,Dynamic,Dll,Cobol,Zos,我正在使用编译器选项在zOS中将COBOL程序编译为DLL PGMN(LM)、DLL、EXPORTALL 当我这样做时,它还强制编译为NODYNAM。在这种情况下,是否有其他parm可以用来强制对其他子程序的调用是动态的(即在运行时解析)。 我知道我可以使用调用变量名的方法来实现这一点,但我不能用系统例程(如DB2调用接口DSNELI)来实现这一点 导入选项是否与此有关 谢谢 一般来说,您希望对这些系统例程的调用是静态的。这些例程往往是在运行时定位“真实”例程的存根。所有DLL都必须符合NODY

我正在使用编译器选项在zOS中将COBOL程序编译为DLL PGMN(LM)、DLL、EXPORTALL 当我这样做时,它还强制编译为NODYNAM。在这种情况下,是否有其他parm可以用来强制对其他子程序的调用是动态的(即在运行时解析)。 我知道我可以使用调用变量名的方法来实现这一点,但我不能用系统例程(如DB2调用接口DSNELI)来实现这一点

导入选项是否与此有关


谢谢

一般来说,您希望对这些系统例程的调用是静态的。这些例程往往是在运行时定位“真实”例程的存根。

所有DLL都必须符合NODYNAM。这是无法避免的。正如您所指出的,使用NODYNAM确实如此 不排除使用
调用var name
方法的动态程序调用。只要您使用动态调用 对于本地开发的例程,您将保持在本地没有静态链接模块的所有优势 你的程序

不要太在意静态链接的系统模块,例如
调用“DSNELI”
。这些是 存根程序将动态加载适当的语言接口模块
运行时。请参阅。

DLL对我们来说是新的。在我们店里,我们所有的批处理程序都是用DYNAM编译的。这意味着系统例程调用也会在运行时解析,这对我们有一些积极的影响,我们希望在使用DLL时继续利用这些影响。正如我所说,这些系统例程调用将继续在运行时解析。DLL处理程序必须是静态的。是的,使用DSNULI而不是DSNELI会在运行时引入正确的DB2调用附加功能。根据该页面,有一个性能开销,但希望在第一个SQL语句中它是一次性的。@Chuck Leviton我相信最大的开销损失将出现在第一个调用上,就像其他任何动态解析的引用一样。在这之后,开销应该可以忽略不计。这在调用CBL2DLI时也适用吗?@Frank我不是IMS方面的专家,但我希望CBL2DLI与DSNxLI模块类似,因为它们是存根。最初调用时,它们在运行时解析到适当的模块。大部分开销发生在第一次呼叫时。在这之后,“静态”调用和“动态”调用在性能方面应该没有什么区别!。。在使用Microfocus和COBOL Workbench for Unix进行编译时,这种行为非常相似,我为AT&T共同标记和管理的产品早在80年代中期就出现了。