Ler dinamicamente COBOL redefine com c #
Estou criando um programa C # que será capaz de ler dinamicamente um IBM HOST Copybook escrito em COBOL e gerar uma tabela SQL a partir dele. Depois que a tabela é gerada, posso fazer upload de um arquivo no meu programa e ele lerá, converterá do IMB-37 e inserirá o arquivo nessa tabela sql. Até agora, posso lidar com quase tudo, embora esteja com alguns problemas com o REDEFINES.
Por exemplo:
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
Eu entendo que a redefinição ocupa o lugar do campo acima, neste caso, embora o que eu não entendo é como o compilador sabe se deve usar a redefinição nele ou não. Estou assumindo que, neste caso, será porque o primeiro é um número em que o segundo é um caractere, embora no exemplo abaixo todos estejam usando caracteres.
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).
Tentei simplesmente ignorar as redefinições, pois elas sempre ocupam a mesma quantidade de espaço, mas no caso em que o campo original está compactado e o redefinido não é necessário saber quando descompactar o campo.
Qualquer ajuda com isso seria incrível!