原生 z/OS 和 zOS UNIX Systems Services 之间的编程
2008-11-26 08:14:40 来源:WEB开发网在 USS 上从 C 代码访问 z/OS 文件
从 C 代码访问原生 z/OS 文件与访问 USS 文件并没有很大的不同。fopen()、fgets()、ferror()、fwrite() 和 fclose() 等普通 C 文件函数适用于所有原生 z/OS 数据集和 UNIX 文件。但是,在使用这些函数时要记住:
在对原生 z/OS 数据集使用 fopen() 函数时,必须使用 “//” 格式(例如 //'MYHLQ.MYDATASET')指定 z/OS 数据集名称,或者使用 DD:ddname 格式指定以前分配的数据集的 DDName。但是要记住,fopen() 只适用于序列化数据集。如果有一个 PDS/PDSE,那么还需要指定成员名称(例如 //'MYHLQ.MYDATASET(MEMBER)')。
要记住,原生 z/OS 文件是基于记录 的。IBM z/OS C/C++ Run Time Library Reference 有时候会提到记录 I/O;这就是指原生 z/OS 数据集。因此,对于固定记录格式,会获得整个记录,包括末尾的空白。
普通的 C 文件函数也适用于 VSAM 文件。z/OS 还包含一些 VSAM 特有的函数,比如 flocate() 和 fupdate()。
从 C 代码调用汇编程序
z/OS(原生 z/OS 和 USS)上的 C 程序在 Language Environment®(LE)中运行,LE 是 z/OS 提供的一组运行时库。汇编模块常常不是这样,这意味着链接(传递参数和调用/返回地址的方式)不一样。因此,在用 C 代码定义 HLASM 程序时,必须用 #pragma 语句定义不同的链接。清单 3 中的 C 代码片段定义这样的 HLASM 程序。
清单 3. 调用 HLASM 程序的 C Pragma 语句
#pragma linkage (PGM1,OS) /* Non-LE Linkage */
extern int PGM1(void *, int *); /* Function definition */
- ››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
更多精彩
赞助商链接