我需要将Cobol文件读入VB.net。以下是文档中对数据类型的描述:
All Magnetic tape files are recorded in 9-track, 8OOBPI mode with odd parity. They are created IBM equipment disk operating system. IBM System 360 Standard.
Binary - Data is coded in pure binary code.
BCD - Data is coded in binary coded decimal format. (Primarily
for files created by the IBM 1401 System).
EBCDIC - Data is coded in extended binary coded decimal interchange code. :(An IBM developed code.)
Packed - Data is coded in packed decimal format.
File Format:
1-2 Record Count [Numeric] (Binary)
3-4 Filler (Binary)
5-5 Record Type [B or R] (EBCDIC)
6-10 Sales Location Numeric [9 digit number] (Packed)
11-13 Sales Identifier (3 character Alpha) (EBCDIC]
etc所以,我知道我应该将整个文件读入一个字节数组,这是我所知道的极限……A)我在EBCDIC对话上看到另一篇帖子,使用
System.Text.Encoding.GetEncoding(37) 但它是针对整个文件的。如果我运行整个文件,我会看到可理解的文本,但当然其他字段都是垃圾。我不知道正确解码单个字段的语言。B)我不知道如何处理纯二进制格式。C)我不知道如何读取Packed,特别是作为单个字段
我已经尝试了纯二进制的各种解码选项,但我得到的第一个字段的数字与文档中声明的行长不一致。
发布于 2021-06-18 07:38:49
压缩十进制格式:
对于s9(5)V9(4) comp-3,123.45以字节格式表示为
00 12 34 50 0c每个数字由4位表示,末尾有4位符号(c),3后面有一个假定的十进制。
大多数语言都提供了将字节/字节转换为字符串的例程,即byte x'34‘-->> string '34’。因此,您可以:
中
还有其他方法:
其他字段
。
在VBA中,你不需要读取整个文件,你可以逐条记录地读取它。我假设您可以在vb.net中做同样的事情
有用的实用程序
这些工具可能对测试很有用。
下面的Cobol copybook
01录音带。05记录-计数图片s9(3) comp.05填充图片x(2)。05记录类型图片x。05销售地点图片s9(9) comp-3。05销售-标识符图片x(3)。
https://stackoverflow.com/questions/68020404
复制相似问题