通过 USS 中的 xlc fgets() 控制从 ASCII 到 EBCDIC 的自动转换

Posted

技术标签:

【中文标题】通过 USS 中的 xlc fgets() 控制从 ASCII 到 EBCDIC 的自动转换【英文标题】:Controlling automatic conversion from ASCII to EBCDIC via xlc fgets() in USS 【发布时间】:2020-01-16 20:24:16 【问题描述】:

我在 z/OS USS 上有一个应用程序,它可以愉快地将 EBCDIC (IBM-1047) 和 ASCII (ISO8859-1) 文件用任一编码标记到 char[] 缓冲区中。从 shell 启动时,C 运行时会自动将 fgets() 中的文件内容转换为 EBCDIC 以供程序使用。这允许与在 EBCDIC 中本机编码的文字进行比较。

但是,当程序通过 Jenkins (Java JVM 1.8) 运行时,自动转换被抑制,fgets() 返回数据不变,因此为 ASCII。我尝试将用户的.profile/etc/profile 中的每个环境变量提供给JVM,并验证它们在程序的envp 中。

有谁知道这个功能的控制在哪里记录或可用?

【问题讨论】:

你能发布你的语言环境变量吗,例如。 LC_COLLATE 或者最好是全部?从“z/OS 上的应用程序”和 jenking 环境(如果有的话)?你用什么来比较字符串? 【参考方案1】:

控制自动转换的方法之一是_BPXK_AUTOCVT=ON article 这里更详细地描述了这个问题。

这是一个sn-p:

【讨论】:

就是这样。谢谢。

以上是关于通过 USS 中的 xlc fgets() 控制从 ASCII 到 EBCDIC 的自动转换的主要内容,如果未能解决你的问题,请参考以下文章

从 z/OS UNIX 系统服务 (USS) 文件系统下载二进制文件

fgets

[PLC]如何通过USS协议实现S7-1200 与G120变频器的通信

Xlc '-qthreaded' 编译器选项的 gcc 等效项是啥?

C++ 的 AIX xlC 交叉编译/链接未找到 C 符号

z/OS 大型机上 USS 中的 Python 代码 - 方括号无法识别