Tag: cobol

阅读Cobol生成的文件

我目前正在编写ac#application,它将位于两个现有应用程序之间。 我所知道的第二个应用程序是它处理第一个应用程序生成的文件。 第一个应用程序是用Cobol编写的。 步骤:1)Cobol应用程序,将一些文件和副本写入目录。 2)第二个应用程序选择这些文件并处理它们。 我的C#应用​​程序将介于1)和2)之间。 它必须拿起1)生成的文件,读取它,修改它并保存它,以便应用程序2)不知道我甚至在那里。 我有一些问题。 首先,如果我在记事本中打开由1)生成的文件,其中大部分都是不可读的,而其他部分则是。 如果我读取文件,修改并保存,我必须使用cobol应用程序使用的相同符号保存文件,以便app 2),不知道我在那里。 我试过这种方式读取文件,但它仍然不可读: 码: string ss = @”filename”; using (FileStream fs = new FileStream(ss, FileMode.Open)) { StreamReader sr = new StreamReader(fs); string gg = sr.ReadToEnd(); } 此外,如果我找到一种方法使其可读(使用某种编码技术),我担心当我再次保存文件时,我可能会改变它的原始格式。 有什么想法吗? 建议?

使用C#动态读取COBOL重新定义

我正在制作一个C#程序,它能够动态读取用COBOL编写的IBM HOST Copybook并从中生成一个SQL表。 生成表后,我可以将文件上传到我的程序中,它将读取,从IMB-37转换并将文件插入到该sql表中。 到目前为止,我几乎可以处理任何事情,尽管我遇到了REDEFINES的一些问题。 例如: 10 SOME-FIELD PIC 9(3) COMP-3. SCRRB205 4117 10 SOME-OTHER-FIELD REDEFINES 3041-17 4117 SOME-FIELD PIC X(2). 3041-17 我知道在这种情况下,重新定义取代了它上面的字段,虽然我不明白的是编译器如何知道它是否应该使用重新定义。 我假设在这种情况下它将是因为第一个是第二个是一个字符的数字,尽管在下面的例子中它们都使用了字符。 05 STREET-ADDRESS. 10 ADDRESS-LINE-1 PIC X(20). 10 ADDRESS-LINE-2 PIC X(20). 05 PO-BOX REDEFINES STREET-ADDRESS PIC X(40). 我试图忽略重新定义,因为它总是占用相同的空间,但是在原始字段被打包并且重新定义的字段不是的情况下,我需要知道何时解压缩字段。 对此有任何帮助将是惊人的家伙!