我是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)