Cobol数据文件

1 cobol

如果数据不完整,首先让我道歉.这不是我的懒惰,但我不知道cobol的细节.

我被分配到我的公司,从cobol程序读取的文件中提取旧的财务数据,并将它们转换为我们的oracle DB中的数据库.我无法将这些文件作为普通文本阅读.我不知道如何转向普通文本.

根据cobol源,每行有7个记录,每个记录是72个字符.

文件非常大.每个平均3 GB.我如何将它们作为普通文本打开?

这是文件部分

000220 ENVIRONMENT DIVISION.
000230 CONFIGURATION SECTION.
000240 SOURCE-COMPUTER. NCR-3000.
000250 OBJECT-COMPUTER. NCR-3000.
000260 INPUT-OUTPUT SECTION.
000270 FILE-CONTROL.
000280     SELECT DQ-HIMVT-A      ASSIGN TO DISC
000290                            ORGANIZATION INDEXED
000300                            ACCESS MODE DYNAMIC
000310                            RECORD KEY CLE-A.
000320*
000330 DATA DIVISION.
000340 FILE SECTION.
000350 FD  DQ-HIMVT-A             BLOCK CONTAINS 7 RECORDS   
000360                            RECORD CONTAINS 73 CHARACTERS   
000370                            LABEL RECORD STANDARD
000380                            DATA RECORD IS HIMVT-A.   
000390 01  HIMVT-A. 
000400     02  CLE-A.
000410         03  ENT-A       PIC 99.
000420         03  NUCPT-A     PIC 9(13)     COMP-6.
000430         03  DEV-A       PIC XXX.
000440         03  DATOP-A     PIC 9(7)      COMP-6. 
000450         03  SIG-A       PIC 9.  
000460         03  FORC-A      PIC 9.
000470         03  DATVAL-A    PIC 9(7)      COMP-6.
000480         03  NUMOP-A     PIC 9(9)      COMP-6.  
000490         03  MT-A        PIC 9(12)V999 COMP-6. 
000500     02  FILLER          PIC X(8).
000510     02  TYPCPT-A        PIC 9(3)      COMP-6.
000520     02  LIBOP-A         PIC X(15).
000530     02  SOLD-A          PIC S9(12)V999 COMP-3. 
000540     02  DATTRAIT-A      PIC 9(7) COMP-6.
000550     02  FILLER          PIC X.
Run Code Online (Sandbox Code Playgroud)

以下是从记事本打开时的文件样本++ RMKF II 0**ƒ'*B9*B9''ÿ#"c*B9Þ#01 EGP%10%ƒ21$ '10 ' (@P )€ 010 0 0 EGP $21 $ %11 $ (EGP $21 $ %11 $ 7EGP $21 $ %11 $ FEGP $21 $ % 11 $ UEGP $21 $ %11 $`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ>01ÔEGP%10%ÔƒÖ21°NO.0≤Ä

环境部分

000220 ENVIRONMENT DIVISION.
000230 CONFIGURATION SECTION.
000240 SOURCE-COMPUTER. NCR-3000.
000250 OBJECT-COMPUTER. NCR-3000.
000260 INPUT-OUTPUT SECTION.
000270 FILE-CONTROL.
000280     SELECT DQ-HIMVT-A      ASSIGN TO DISC
000290                            ORGANIZATION INDEXED
000300                            ACCESS MODE DYNAMIC
000310                            RECORD KEY CLE-A.
Run Code Online (Sandbox Code Playgroud)

我找到了这个他们称之为副本的文件.不知道它是如何相关的

000100*
000200****     CINVDAT - ZONE DE TRAVAIL     ****
000300*******************************************
000400****
000500*
000600 01  INVDATRAV.
000700     03  INVZON1         PIC 99. 
000800     03  INVZON2         PIC 99.
000900     03  INVZON3         PIC 99.
001000 01  INVZONI             PIC 99.
001100 01  INVDATE             PIC 9(6).
001200 01  INVCAL              PIC 9.
001300*
Run Code Online (Sandbox Code Playgroud)

问候

Bil*_*ger 6

您可以找到可以为您提取的服务.如果您采用这条路线,请确保他们拥有您可以提供的所有信息(必须包括FD下的数据定义)并同意仅支付经过验证的数据收据.

另一种方法是与Micro Focus讨论COBOL的短期许可证(必须保证)可以理解索引文件格式.然后,为每个文件编写一个简单程序,其中需要提取其数据.这里的优点是COMP-3和COMP-6所代表的,您不需要知道,因为转换为"文本"数字是在没有任何人必须考虑的情况下完成的(在输出定义中,您删除所有引用COMP-anything(也是COMP,如果碰巧有)).

另一个选择是坐下来使用十六进制编辑器,了解数据,并找出如何从数据中抽象出索引信息(所有数据记录都是已知的,固定的,长度为73个字节).

然后,使用您可以处理非分隔记录(固定长度)二进制数据的首选语言,并计算出COMP-3,COMP-6和任何其他COMP-(或COMP)字段的含义.它们可能是压缩十进制,二进制编码十进制(BCD)或"某种类型的二进制",因为标准COBOL具有由十进制值限制的二进制字段(与PICture子句的大小相同).

在第一和第二替代方案中,对提取物的可靠性有更大的期望.第三个可能是"最便宜的",但是期望完成的期望更难以坚持.

在前两个中,成本是可能的决定因素(假设您不打算继续使用COBOL).如果你自己必须编写一些COBOL程序,不要担心,它们非常非常简单,一旦你完成了一个,你只需"克隆"它.