原生 z/OS 和 zOS UNIX Systems Services 之间的编程
2008-11-26 08:14:40 来源:WEB开发网装载模块和对象位置
人们通常认为,模块必须驻留在运行它们的位置;对于 USS 是 USS 目录,对于原生 z/OS 是装载库/PDSE。但是,这种看法是不对的。对于 USS 应用程序,会在 USS 库路径(在环境变量中指定)和原生 z/OS 序列(依次搜索 Job Pack Area、STEPLIB DD、JOBLIB DD、LPA 和 Linklist)中搜索调用的模块。首先搜索的位置取决于 POSIX 运行时选项是 ON 还是 OFF,如果 POSIX 是 ON,就先搜索库路径;如果 POSIX 是 OFF,就先搜索原生 z/OS 库。
可以在 C 程序中使用 #pragma runopts(POSIX(ON)) 语句、JCL EXEC 参数 PARM='POSIX(ON)' 或 Language Environment 运行时选项(使用 _CEE_RUNOPTS 环境变量)设置这个选项。
同样,原生 z/OS 应用程序可以驻留在 USS 文件中。但是这种方式的问题是,只能从在 USS 中运行的程序(而且 USS 库路径指向这个目录)或者调用 USS loadhfs 服务的程序调用它们。
对象模块(已经编译/汇编,但还没有绑定的模块)也可以驻留在 PDS、PDSE 或 UNIX 库中。在绑定程序时,可以引用这些地方的对象。
执行调用的程序 —— 静态与动态
大多数程序员都会面对的一个问题是,是静态地(被调用的程序被链接编辑/绑定到同一装载模块)还是动态地(被调用的程序是在运行时装载的单独模块)调用另一个程序。
静态链接
把一个模块静态链接到程序模块有几种方法,包括:
在绑定器 SYSLIN DD 中添加一个 INCLUDE 语句来手工包含这个模块(只适用于原生 z/OS)。例如:
INCLUDE SYSLIB(INCMOD)
指定绑定器 CALL 选项,让绑定步骤的 SYSLIB DD 可以使用这个模块(只适用于原生 z/OS)。
- ››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
更多精彩
赞助商链接