【问题标题】:NewLine problem when converting from UTF-8 to IBM-273 using iconv使用 iconv 从 UTF-8 转换为 IBM-273 时出现 NewLine 问题
【发布时间】:2019-07-04 07:49:23
【问题描述】:

我正在使用 JCL 将文件/数据集从 USS 复制到 MVS,下一步应该将其从 UTF-8 转换为 IBM-273。这通常有效,但使用“\n”设置的换行符被转换为“.”。

转换是这样完成的:

CONV  EXEC PGM=EDCICONV,PARM=('FROMCODE(UTF-8),TOCODE(IBM-273)') 

希望大家多多指教!

【问题讨论】:

  • '.' 的十六进制值是多少?你确实意识到一个'。不一定是“句号”,但可以代表“不可打印/不可显示”的字符?除非您未能提供所需的数据集名称,否则这可能不是 JCL 问题。更有可能是对 EDCICONV 能做什么或控制卡不正确(不是 JCL)的误解。
  • 另请注意,z/OS 数据集不适用于“换行符”之类的东西。虽然它可能具有正确的二进制值,但在例如使用 ISPF 编辑/浏览查看文件。
  • 您可能会找到“。”是 EBCIDIC 换行符。可能是文件属性问题。没有更多细节很难说

标签: mainframe iconv jcl


【解决方案1】:

如果我没记错的话,EDCICONV 程序不会使用 \n 或 \r\n 将您的文件拆分为单独的记录,您最终会得到一个长记录。

您可以做的稍有不同,首先将您的 UTF-8 文件转换为 USS 中的 IBM 使用以下命令:

iconv -f UTF-8 -t IBM-273 /path/to/inputFile.txt > /path/to/outputFile.txt

然后使用以下命令将此转换后的文件移动到 mvs:

cp -W "seqparms='RECFM=VB,LRECL=1000'" /path/to/outputFile.txt "//'DATA.SET.NAME'"

以您指定的 DCB 参数、LRECL 和 RECFM 为例。 您也可以使用您的 OCOPY JCL 程序来复制它.. 我想应该是一样的..

另一种选择是创建一个 Java 程序,它将您的数据集从 utf-8 转换为 ibm-273..

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    • 1970-01-01
    • 2011-05-20
    • 2016-08-31
    • 1970-01-01
    • 2012-07-19
    相关资源
    最近更新 更多