当我从Mainframe Connect直接发送到UNIX框的可变长度文件时,UNIX上的文件在Mainframe文件的开头有一些额外的字节,我尝试使用不同的SYSOPTS选项,但我仍然得到那些初始字节。有什么想法吗?
答案 0 :(得分:2)
在进行传输之前,您应该查看将文件复制到主机上的固定长度记录(recfm = FB)文件。有许多大型机实用程序可以执行此操作(即排序)。
如果将其作为VB文件传输,则还应将其保留为EBCDIC文件(BDW / RDW字段为二进制字段,不应转换为ASCII字段。)
正如其他人所说,拥有一个文件的例子会很有用。
来自NealB。大型机上的vb文件以此格式存储
<BDW><RDW>Record Data 1
<RDW>Record Data 2
....
<RDW>Record Data n-1
<BDW><RDW>Record Data n
<RDW>Record Data n+1
....
<RDW>Record Data o-1
<BDW><RDW>Record Data o
<RDW>Record Data o+1
....
哪里
因此,如果块长度为240(并包含3个80字节记录),则文件将为
---BDW--- ---RDW---
00F0 0000 0050 0000 80-bytes of data (record 1)
0050 0000 80-bytes of data (record 2)
0050 0000 80-bytes of data (record 3)
可能有一个用于处理大型机VB文件的unix实用程序
Connect-Direct(NDM)有一些vb选项(请参阅http://pic.dhe.ibm.com/infocenter/sb2bi/v5r2/index.jsp?topic=%2Fcom.ibm.help.cd_interop_sysopts.doc%2FCDP_UNIXSysopts.html)。
查看文档,您无法将vb选项与ascii转换相结合;将文件转换为大型机上的固定长度记录(recfm = FB)可能很有意义。
注意:您可以尝试使用Record Editor查看文件并使用文件向导(布局名称左侧的按钮)。向导应该发现它是Mainframe-VB文件。
注意:将文件转换为大型机上的固定长度记录是最佳选择,如果需要,java项目JRecord可以读取Mainframe VB文件
答案 1 :(得分:1)
一些额外的字节......有多少是“某些”?
如果总有4个字节,则这些字节可能是带有记录长度的RDW(记录描述符字)。
我对Connect Direct知之甚少,但是从大型机上的命令行FTP会话中你知道 可以使用LOCSTAT命令验证RDW状态,如下所示:
Command:
LOCSTAT RDW
RDW's from VB/VBS files are retained as part of data.
Command:
如果您看到上述消息,可以使用以下命令删除RDW:
LOCSITE NORDW
如果您从大型机中拉出,那么您可以使用FTP命令查明RDW是否被剥离:
QUOTE STAT
然后,您将看到几条消息,其中一条消息报告RDW状态:
211-RDWs from variable format datasets are retained as part of the data.
同样,您可以使用
解决此问题QUOTE SITE NORDW
之后QUOTE STAT应该给你:
211=RDWs from variable format datasets are discarded
答案 2 :(得分:0)
额外字节是0xEF 0xBB 0xBF
,0xFF 0xFE
还是0xFE 0xFF
?这是UTF字节顺序标记。
如果是UTF-8,请忽略它。剥掉它,如果你愿意的话。这毫无意义。
如果它是UTF-16,那么您可以使用字节来确定字节序。如果您知道字节顺序,则忽略或删除它们是安全的。
如果您控制生成文件的应用程序,请将其从保存UTF更改。只需将文件保存为ASCII,BOM就会消失。