Como você processa a codificação EBCDIC CCSID 65535 sem um iSeries?

1

Uma pergunta obscura, mas é do tipo que eu sei que os usuários da SU podem ajudar.

Eu tenho um arquivo de um iSeries codificado como CCSID 65535 (binário) que basicamente significa que ele é codificado em hexadecimal (em EBCDIC). Eu gostaria de entender como esse formato funciona, já que parece arbitrariamente entrar e sair da codificação hexadecimal. Por exemplo:

4040404040404040404040F3F040404040404040404040F1        0      04040404040404040404040F8F0F0F3F54040404040F3F4F0404040F3F0F3F8F1F1F7F1F0F8404040404040404040404040404040404040 2009E2D5F9F6F0F0F0F0F0F7           0           04040404040404040404040404040404040404040        

Os 40 são espaços EBCDIC, isso eu sei, mas você verá que também existem espaços literais no texto. As transições acontecem em limites ímpares e pares de bytes e olhando que a primeira seção com espaços literais "F1 0 040" você verá um hex codificado '1' ("F1"), vários espaços literais, um literal '0', alguns mais espaços, um literal '0' novamente e, em seguida, um espaço codificado hexadecimal. Arrancando meu cabelo aqui, parece não haver lógica nisso.

Eu suspeito que o 'conhecimento' para o formato possa ser mantido no iSeries em uma definição separada, mas não consigo encontrar nenhuma documentação definitiva na web, então espero que um guru aqui saiba como isso tudo se encaixa juntos. Qualquer orientação recebida com gratidão!

    
por Lazarus 23.09.2009 / 13:16

2 respostas

1

Você marcou esta referência: Transforme seus problemas de conversão de dados

    
por 23.09.2009 / 13:59
0

A resposta foi que é a Definição de Campo do Arquivo que é a parte crítica. Não há como decodificar o arquivo sem essa informação. Também não parece haver nenhuma biblioteca .Net para isso que eu possa encontrar facilmente. Eu acho que a dificuldade é que você precisa:

  • transformar EBCDIC em ASCII (ou mais realisticamente em ANSI ou UTF-8)
  • decodifique os campos codificados hexadecimais (CCSID 65535) para seu EBCDIC nativo e, em seguida, converta-os também
  • você também precisa lidar com 0E (SI) e 0F (SO) que suportam EBCDIC de dois bytes e também precisa converter o conjunto de caracteres de destino apropriado (e a página de código)

Muito a fazer para algo que parece um requisito obscuro.

    
por 29.09.2009 / 13:10