Conversão de análises para Unicode
Se você migrar da edição não Unicode do Analytics para a edição Unicode, as análises e scripts existentes serão convertidos automaticamente para Unicode. No entanto, você deverá verificar se a lógica dos scripts continuará a mesma quando aplicada a dados Unicode de byte duplo.
O que é Unicode?
O Unicode é um padrão de codificação de texto que usa dois ou mais bytes para representar cada caractere, com um único conjunto de caracteres contendo todos os caracteres de todos os idiomas. As edições Unicode dos produtos da Galvanize permitem que você exiba e trabalhe com arquivos e bancos de dados que contêm dados codificados em Unicode em todas as linguagens modernas.
Nota
O Analytics e o Motor AX oferecem suporte a dados Unicode codificados no formato little-endian (LE). Esses produtos não podem ser usados para analisar dados codificados no formato big-endian (BE).
Migração para o Analytics Exchange edição Unicode
- no momento, não há suporte para criptografia de scripts Unicode
- Os arquivos de projeto e arquivos de log do Analytics são codificados como dados Unicode (UTF-16 LE) e não podem ser usados em nenhuma edição não Unicode do Analytics
- quando você usa o Analytics para definir arquivos de imagem de impressão e arquivos delimitados que contêm texto codificado em ASCII ou EBCDIC, o tipo de dados Unicode é atribuído por padrão aos campos da tabela do Analytics que contêm esses dados
Mudanças obrigatórias nas análises
Atualize todos os parâmetros que especificam um valor em bytes
Os caracteres na edição não Unicode do Analytics têm comprimento de um byte. Os caracteres na edição Unicode que são dados Unicode têm comprimento de dois bytes. Quando você especifica o comprimento do campo ou a posição inicial em bytes na edição não Unicode do Analytics, o comprimento em bytes é igual ao número de caracteres. Isso não acontece para dados Unicode na edição Unicode do Analytics.
Para converter análises para uso no Analytics Unicode, é preciso ajustar o valor numérico de todos os parâmetros que especificam comprimento ou posição inicial de campos em bytes. Por exemplo, para um comando IMPORT DELIMITED que especifica um valor de WID de 7 no Analytics não Unicode, será necessário atualizar o valor de WID para 14 para produzir o mesmo resultado no Analytics Unicode.
Além disso, para dados Unicode, especifique uma posição inicial em bytes ímpar para os campos e um número par de bytes para comprimentos de campo. A especificação de uma posição inicial par ou de um comprimento ímpar pode causar exibição incorreta de caracteres.
Recrie todas as ocorrências de IMPORT PRINT e IMPORT DELIMITED
Você precisa recriar todas as ocorrências dos comandos IMPORT PRINT e IMPORT DELIMITED importando os arquivos de dados de origem no Assistente de definição de dados na versão Unicode do Analytics e reimportando os projetos no Servidor AX. O uso do Assistente de Definição de Dados garante a validade de toda a sintaxe.
Altere todas as ocorrências das funções ZONED( ) e EBCDIC( )
Todas as ocorrências das funções ZONED() e EBCDIC() devem ser alteradas conforme especificado a seguir para que os valores ASCII retornados pelas funções sejam convertidos corretamente em dados Unicode:
- Campos calculados usam a função BINTOSTR() em volta das ocorrências de ZONED() ou EBCDIC()
- Expressões estáticas usam a função BINTOSTR() em volta das ocorrências de ZONED()
BINTOSTR(ZONED(%resultado%; 5); 'A')
Altere todas as ocorrências do comando OPEN FORMAT
Pode ser necessário modificar todas as ocorrências do comando OPEN FORMAT. Você precisa usar o parâmetro SKIP para ignorar os primeiros dois bytes do arquivo Unicode que está abrindo. Isso é necessário porque os dois primeiros bytes de arquivos com codificação UTF-16 são reservados como marcas de ordem de bytes e são separados do texto no arquivo.
Não Unicode
OPEN "teste_ascii.txt" FORMAT tabela_modelo CRLF DEFINE FIELD rec_completo ASCII 1 10
Unicode
OPEN "teste_utf-16.txt" FORMAT tabela_modelo CRLF SKIP 2 DEFINE FIELD rec_completo UNICODE 1 20
Verificação de análises convertidas
Verifique se as versões Unicode das análises geram resultados idênticos aos da versão não Unicode. A melhor forma de fazer isso é utilizar uma ferramenta Diff para comparar os arquivos de log gerados. A ferramenta Diff identifica todas as diferenças entre os arquivos comparados.
E se os resultados não forem os mesmos?
Caso não seja possível produzir os mesmos resultados com a versão Unicode de uma análise e com a versão não-Unicode, você pode isolar o problema comparando os resultados dos logs dos scripts em cada etapa da análise.