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!