我正在上传一个ebcdic文件(从ascii转换)从Windows操作系统到大型机。我的问题是,当我在上传文件后检查它时,我看到了很多新的行。当我尝试用它的十六进制转储检查它时,我发现当主机看到一个x'15‘时,它会把它转换成一个换行符。在文件中有压缩的小数,所以十六进制可以包含字母x'001500001c‘,但当我上传它时,主机将其误认为是新行。有人能帮我解决这个问题吗?
发布于 2009-02-23 03:45:05
你应该把你的FTP客户端(或库,如果上传是由你的代码完成)进入二进制(图像类型)模式,而不是ascii/EBCDIC模式,如果你正在发送一个已经在EBCDIC中的文件,我相信。
发布于 2009-02-23 05:05:29
这取决于你上传到的目标“文件”的类型。
如果你上传到一个具有固定块大小的成员(例如,FB80),在你上传它之前,你需要确保所有的行都用空格填充(在二进制模式下)。
文本模式传输不适合二进制文件(如果你的文件包含压缩的十进制数,那么你的文件就是二进制文件-- FTP没有可靠的方法来检测真正的行尾字符)。
您需要修复Windows ASCII- to -EBCDIC转换器才能生成固定长度的记录。
唯一的另一种选择是在大型机上使用REXX脚本,但这仍然需要能够区分真正的行尾标记和二进制数据中的那个标记。
您可以通过以下事实来判断是否存在压缩小数,即它由BCD两个字节组成,其中最后一个是0xC或0xD,但这也可能导致误报或漏报。
我的建议是:当您将其从ASCII转换为EBCDIC时,同时将行填充到所需的记录长度。
我想提出的另一点是,如果您只想查看大型机上的文件(而不是从任何需要EBCDIC的代码中使用它们),ISPF编辑器包含一些新命令(如果我没记错的话,从z/OS1.9开始)。
SOURCE ASCII将以ASCII而不是EBCDIC的形式显示数据。此外,LF命令允许您处理FB成员中的ASCII流,以正确地修复行尾。
https://stackoverflow.com/questions/576461
复制相似问题