小编Tha*_*ser的帖子

在C#中读取COBOL COMP数据

我是COBOL的新手,我一直在尝试从文本文件读取记录信息,该文本文件是表的输出。

我可以接受的大多数非comp数据类型都是我一直坚持的“ COMP”类型。

我一直在努力地想出这一点,今天我尽可能多地阅读。

以下日期字段是我无法转换为日期字符串的字段:

05 VALDATE          PIC 9(6) COMP
05 PAYDATE          PIC 9(6) COMP
05 SYSDATE          PIC 9(6) COMP
Run Code Online (Sandbox Code Playgroud)

据我了解,以上所有这些类型在文件中将每个为4个字节。

它们应该是应该代表的日期YYMMDD,但数据似乎并不那么小。我研究了EBCDIC并反转了byte[]数据,并使用BitConverter.ToUNIT32()和更改了用于读取文件的Encoding,但运气不好。

我读到,将计算成整数的日期存储为自1601年1月1日起的天数,因此为什么下面的代码试图将值添加到1601。(http://www.techtricky.com/cobol-date-功能列表添加查找持续时间/

我的问题是文本文件中的数据不正确,或者我错过了获取类似于的日期的步骤YYMMDD

以上3个的数据如下:

[ 32] [237] [ 44] [  4] | 00100000 11101101 00101100 00000100
[ 33] [ 14] [ 32] [237] | 00100001 00001110 00100000 11101101
[131] [ 48] [ 48] [ 48] | 10000011 00110000 00110000 00110000
Run Code Online (Sandbox Code Playgroud)

以及如何打开文件,我将编码更改为ascii,但没有运气:

 using (BinaryReader reader = new BinaryReader(File.Open(nFilePath, FileMode.Open), Encoding.Default)) …
Run Code Online (Sandbox Code Playgroud)

c# cobol data-conversion

7
推荐指数
1
解决办法
316
查看次数

标签 统计

c# ×1

cobol ×1

data-conversion ×1