原生 z/OS 和 zOS UNIX Systems Services 之间的编程
2008-11-26 08:14:40 来源:WEB开发网但是,如果 HLASM 程序是 LE 兼容的,就不需要这个 #pragma 语句。
除此之外,定义和调用 HLASM 模块的过程与调用任何其他模块是一样的。
问题和提示
如果要编写需要在不同 UNIX 系统(包括 USS)上编译和运行的 C 代码,就需要使用 __MVS__ 宏。可以使用这个宏编写条件编译所需的 #ifdef 语句。清单 4 给出一个示例。
对于 USS 和原生 z/OS,默认的 C/C++ 编译器选项不一样。因此,要仔细检查将要使用的选项。
z/OS C/C++ 编译器还支持编写不在 Language Environment 中运行的 C 代码,这对于用 C 代码替换 HLASM 出口非常方便。在 z/OS 1.9 之前的 z/OS 版本中,这个特性称为 Systems Programming Facility(SPC),z/OS 1.9 及更高版本把它称为 Metal C。
注意,在使用这个特性时,只能使用一部分运行时库函数。在 IBM z/OS XL C/C++ Programming Guide (SPC)或 z/OS Metal C Programming Guide and Reference (C Metal)中可以找到更多信息。
除非指定 C 编译器 ASCII 选项,否则在 USS 中运行的所有 C 代码都是 EBCDIC(而其他所有 UNIX 系统都使用 ASCII),所以所有字符串常量都被当作 EBCDIC 对待。考虑到 USS 本身(包括 shell 命令输入和系统函数调用的结果)都采用 EBCDIC,所以这是有意义的。在编写 Java JNI 代码时,这一点尤其重要;需要把 Java 传递来的所有信息转换为 EBCDIC。
在创建对外提供函数或变量(包括 Java JNI 代码)的 DLL 时,必须导出函数或变量;这个操作不会默认完成。可以使用 #pragma export 指令或 C 编译器的 exportall 选项来完成。
在 z/OS 上进行编译时,UNIX C 程序员会遇到一个以前没有听到过的术语:XPLINK。Extra Performance Linkage(XPLINK)模块是以不同方式在调用者之间传递参数和信息的 z/OS 模块。它是 z/OS 的一个新特性,它比老式的原生 z/OS 链接快得多。但是,XPLINK 模块有一个大问题:一般情况下,不能从 XPLINK 程序调用非 XPLINK 程序,反过来也不行。要想这样做,就需要一个 HLASM “胶水” 模块。
另外,只对于 C 和 Java 应用程序支持 XPLINK(但是也可以编写 LE XPLINK HLASM 程序)。但是,如果希望编写 64 位程序,就没有选择了;必须使用 XPLINK。
- ››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
更多精彩
赞助商链接