2017-04-03 73 views
0

首先我们如果数据不是完整的我道歉。这不是我懒惰,但我不知道cobol细节。COBOL数据文件

我被分配在我的公司从由COBOL程序读取文件解压我们的老财务数据,并将它们变成我们的Oracle数据库的数据库。我无法将这些文件作为普通文本读取。我不知道如何转换成普通文本。

作为每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. 

在这里从记事本++ RMKF II 0 **ƒ '* B9 * B9''Y#“C * B9Þ#打开时,文件的样本01 EGP%10%21ƒ$ '10 ' (@P )€ 010 0 0 EGP $21 $%11 $ (EGP $21 $%11 $○一二三九五八四一○二三一○八七二三二一○%11 $ FEGP $21 $%11 $ UEGP $21 $%11 $`ÿÿÿÿÿÿÿÿÿÿÿÿÿÿ> 01ÔEGP%10%ÔƒÖ21A NO。0 AO

环境部分

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. 

我发现这个文件,他们称之为副本的书。不知道怎么的OIS相关

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* 

问候

+1

您将需要包含一个示例文件的SELECT和与该文件相关的FD,包括它下面的数据定义。 FD的名称是SELECT后的第一个字,数据定义一直持续到下一个FD或工作存储段。试图找到一个没有大量数据定义的例子,只是为了便于理解。 –

+0

任何建议或在黑暗中的任何镜头非常感谢:-)因为我不知道如何处理这个遗留的任务,我已被分配到。明天早上我试图用V文件查看器查看它。 –

+0

比尔我一定会收集这些数据。欣赏输入 –

回答

5

您可能能够找到一个服务,可以为你做的提取物。如果你走这条路线,确保他们拥有你可以提供的所有信息(必须包括FD下的数据定义),并同意只在验证收到数据时付费。

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

另一种方法是坐下来用十六进制编辑器,了解数据,并计算出如何从数据中提取索引信息(所有的数据记录都是已知的,固定的,长度为73字节)你的例子)。然后,用您的首选语言处理非定界记录(定长)二进制数据,并计算出COMP-3,COMP-6和其他COMP-(或COMP)字段的含义。如果标准COBOL具有由十进制值限制的二进制字段(与PICture子句的大小相同),它们很可能是十进制的二进制编码的十进制(BCD)或“某种类型的二进制”。

在第一和第二替代方案,存在提取物的可靠性更大的期望。第三个可能是“最便宜的”,但对完成时间的预期更难以坚持。

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

+0

如果您执行“自己动手”路线,这可能有所帮助:https://support.microfocus.com/documentation/books/ocds42/cg3dat。htm - 该页面还提到了“Convert3”,它似乎是将RM/COBOL文件转换为更有用的实用程序。 –

+0

以下是关于Convert3的更多信息 - 看起来好像您可以很好地与MicroFocus联系。 –

1

我不确定你正在使用哪个系统。作为我在AS400的经验。 COBOL数据文件使用EBCDIC格式,它不能直接从文本编辑器打开。它只会显示随机文本。在导出之前,您必须将其转换为ASCII。在AS400中,我使用CHGTOPCD文件/成员名称到目录并将其导出。然后它会显示正确的文字。不确定这些信息是否有助于您。