我正在制作一个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
Run Code Online (Sandbox Code Playgroud)
我理解在这种情况下重新定义取代了它上面的字段,虽然我不明白的是编译器如何知道它是否应该使用重新定义.我假设在这种情况下,它将是因为第一个是第二个是一个字符的数字,尽管在下面的例子中它们都使用了字符.
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).
Run Code Online (Sandbox Code Playgroud)
我试图忽略重新定义,因为它总是占用相同的空间,但是在原始字段被打包并且重新定义的字段不是的情况下,我需要知道何时解压缩字段.
对此有任何帮助将是惊人的家伙!