原生 z/OS 和 zOS UNIX Systems Services 之间的编程
2008-11-26 08:14:40 来源:WEB开发网在 USS c89 命令中包含模块/对象;例如,以下命令在 pgm1 中包含 incmod.o:
c89 -o pgm1 incmod.o
创建一个包含所有对象文件的 USS 存档文件,并在 c89 命令中包含它;例如:
c89 -o pgm1 incarch.a
创建一个包含所有对象文件的 USS 存档文件,并在绑定器 SYSLIN DD 中使用 AUTOCALL 语句(只适用于原生 z/OS);例如:
AUTOCALL /u/mydir/incmod.a
如果要在 C 程序中调用非 LE HLASM 程序,或者在非 DLL 程序中直接调用 DLL 模块,那么静态链接是惟一的选择。
动态链接
C 程序只能动态地链接一种新的装载模块类型,DLL(Dynamic Link Library)。DLL 不同于传统的 z/OS 装载模块。
它们必须驻留在 PDSE 或 USS 文件中。
它们总是可重入的(reentrant)。
它们的名称长于 8 个字符。
它们可以是 COBOL、PL/I、LE HLASM 或 C 模块。但是,在编译 COBOL、PL/I 或 C 时必须使用 DLL 选项,在汇编 HLASM 时必须使用 GOFF 和 RENT 选项。
COBOL 和 PL/I 可以静态地调用它们。
PL/I 程序可以使用 FETCH 动态地链接它们。
COBOL 程序可以使用 CALL 动态地链接它们,但是 COBOL 程序必须编译为 DLL。
C 程序只能通过 DLL 调用另一个程序。
创?? DLL 的方法如下:
如果在原生 z/OS 中进行绑定,需要指定绑定器选项 DYNAM=DLL。
如果在 USS 中调用绑定器,需要指定选项 -W 'l,dll'。
即使模块只包含函数,也要确保代码中有一个 main() 语句。
如果要在原生 z/OS 中进行绑定,那么必须包含 Language Environment 副文件 CELHS001 和 CELHS003(31 位系统;64 位系统使用 CELQS003)。执行这个任务的 JCL 示例见 清单 9。
- ››OSC“回到顶部”代码
- ››OSCHINA 使用 Github 登录的源码
- ››OSGi Service Platform V4.2 新特性
- ››OS VM主机支持RedHat操作系统
- ››原生 z/OS 和 zOS UNIX Systems Services 之间的编...
- ››osworkflow 小培训
- ››osworkflow 小培训(2)
- ››osworkflow源码分析(一)
- ››osworkflow descriptor 解析 重要概念
- ››osworkflow descriptor 解析片断
- ››osworkflow部署描述
- ››osworkflow小测试练习之beanshell
更多精彩
赞助商链接