通过 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) 文件系统下载二进制文件
[PLC]如何通过USS协议实现S7-1200 与G120变频器的通信