首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >控制IBM大型机中新行的出现

控制IBM大型机中新行的出现
EN

Stack Overflow用户
提问于 2010-08-30 03:47:17
回答 1查看 1.7K关注 0票数 2

全,

因此,我将一个文本文件从C#上传到IBM大型机。使用C#库将文件转换为ebcdic,它运行良好,因为我可以读取大型机上的数据。问题是新的路线。文本文件有10行数据,在大型机环境中查看它时,所有数据都是存在的。但是没有新的行,因为它将文本文件中的每一行转换为0D25,即CRLF。此段显示为..。在屏幕上。

我不希望这两个点的十六进制读数为0D25,因为我需要它实际上将数据放在下一行,因为它是在文本文件中。该文件在大型机上一次是可变的块长度。在MVS上查看上传的文件时,如何实现与文本文件相同的格式?

示例:文本文件视图

12345

23456

12346

IBM MAinFrame MAinFrame

12345.23456.12346

或者如果达到了块长..。

12345.2345

6.12346

谢谢

EN

回答 1

Stack Overflow用户

发布于 2010-08-30 04:51:40

如果您在FTP传输过程之外执行ASCII-EBCDIC转换,我必须假设您是以二进制模式进行传输(否则转换将再次进行,而您的数据将是坏的)。

如果是这样的话,那么我很肯定你也要对行尾的转换负责。二进制传输不会试图转换行结束。在将行发送到主机之前,您需要将行插入到所需的长度,并将行尾全部移除。

例如,如果您传输此文件:

代码语言:javascript
复制
12345
67890

在二进制模式下使用literal site recfm=vb,您将得到以下内容(如ISPF编辑器中的hex on所示):

代码语言:javascript
复制
000001                    
       3333300333330044444
       12345DA67890DA00000
--------------------------

您可以看到它只是以-is形式传输字节,包括CR/LF。如果您在FTP中切换到ASCII模式并再次上传,您将得到:

代码语言:javascript
复制
000001 12345        
       FFFFF44444444
       1234500000000
--------------------
000002 67890        
       FFFFF44444444
       6789000000000
--------------------

在这里,字符被转换为右EBCDIC码点,行尾被变形成带有EBCDIC空间的填充。

我想我要问你的第一个问题是:“你为什么要做FTP之外的翻译?”

IBM投入了大量资金,以确保它将接受各种不同的编码,并将它们转换为正确的代码页。一个独立的解决方案不太可能在z/OS的所有国际化版本以及IBM自己的版本上工作。

如果必须在客户端上进行转换并以二进制模式进行传输,则必须让客户端进行行结束转换和填充,或者在传输后对文件进行后处理,例如使用REXX脚本。

如果您不知道目标数据集的属性是什么(例如,如果您正在转移到PDS中的一个成员),则后一个选项可能是唯一可行的选项。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3597735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档