WEB开发网
开发学院操作系统Linux/Unix 原生 z/OS 和 zOS UNIX Systems Services 之间的编... 阅读

原生 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 文件,原生

在 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 */

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:原生 OS zOS

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接