原生 z/OS 和 zOS UNIX Systems Services 之间的编程
2008-11-26 08:14:40 来源:WEB开发网从 C 访问 z/OS 功能
无论是在 USS 还是原生 z/OS 中运行,C 程序都可以使用标准的 C 函数访问许多 z/OS 功能。例如,C 函数 sleep() 大致相当于 HLASM 宏 STIMER。C 编译器还提供一些 z/OS 特有的函数,比如 __cabend()(它与 HLASM ABEND 宏相同)。所有 C/C++ 函数都在 z/OS XL C/C++ Run-Time Library Reference 中有文档说明。
值得注意的一点是,可以从不在 USS 中运行的程序调用 USS 服务(比如 getpid() 和 fork())。在这种情况下,会自动 “标记” 地址空间,对于 USS 内核而言,这种奇特的方式使它看起来像一个进程。
如果需要访问 z/OS 控制块,那么在原生 z/OS 和 USS 中都可以用 C 代码来完成。坏消息是 IBM® 没有提供映射这些控制块所需的 C 头文件。但是,也有好消息:C 编译器还附带一个 DSECT 转换实用程序,它可以把 HLASM DSECT 转换为 C 声明。清单 2 中的代码示例从 z/OS Extended CVT 控制块生成 z/OS Sysplex Name。
清单 2. 访问 z/OS 控制块的 C 代码示例
/* -----------------------------------------------------------
Map z/OS Control Block Structures
---------------------------------------------------------- */
/* --- Cut down PSA Structure - just PSACVT to find our CVT - */
struct psa {
int psastuff[4]; /* 4 bytes before CVT Ptr */
struct cvt *psacvt;
/* Ignore the rest of the PSA */
};
/* --- Cut down CVT Structure - just CVTECVT to find ECVT --- */
struct cvt {
char cvtstuff[140]; /* 140 bytes before ptr */
struct ecvt *cvtecvt; /* Ptr to ECVT */
/* Ignore the rest of the CVT */
};
/* --- Cut down ECVT Structure - just ECVTSPLX to get Sysplex */
struct ecvt {
char ecvtecvt[8]; /* 8 Bytes before Sysplex */
char ecvtsplx[8]; /* Sysplex Name */
/* Ignore the rest of the ECVT */
};
/* -----------------------------------------------------------
Variables
---------------------------------------------------------- */
struct psa *psa_ptr = 0; /* PSA starts at address 0 */
char sysplex[10];
/* -----------------------------------------------------------
Put our Sysplex name into the sysplex variable
---------------------------------------------------------- */
strncpy(sysplex,psa_ptr->psacvt->cvtecvt->ecvtsplx,8);
- ››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
更多精彩
赞助商链接