Conversão PL / I
Conversão do PL / I para Java ou .NET
O CodeLiberator converte aplicativos PL / I de Mainframe ou de sistema aberto para a plataforma Java ou .NET, incluindo a lógica de negócios, o acesso aos dados e a interface do usuário.
Quando o banco de dados subjacente é migrado, as instruções de acesso aos dados são convertidas adequadamente dependendo do banco de dados de destino que pode ser mecanismo relacional (Oracle, DB2 / UDB, MSSQL, etc.), solução NoSQL ou simplesmente arquivo. Oferecemos suporte aos tipos diferentes de acesso aos dados, como o DAO separado, para mantê-lo transparente ou SQL padrão.
Vários tipos de soluções de interface de usuário que geralmente vêm com PL / I, e. CICS / BMS ou IMS / DC, também são convertidos para o destino que pode ser JSF ou HTML / JavaScript independente de plataforma (programação reativa).
Assim como em outras conversões de linguagem, todos os elementos de linguagem específicos do PL / I (atributos, tipos de dados, funções, estruturas de controle) são inteiramente suportados pela solução, ALIGNED, POINTER e GOTO, entre outros. O CodeLiberator é capaz de aplicar mais padrões durante a conversão para gerenciar os arquivos INCLUDE e outros pré-processadores da PL / I para encontrar um equilíbrio razoável entre código de manutenção e retenção do conceito de reutilização de código. A sintaxe e estrutura do código é direta e simples de seguir tanto para novos desenvolvedores quanto para programadores de PL / I, além de refletir a convenção de nomenclatura e a estrutura dos programas originais.
Quais fontes de PL / I devem ser usadas como entrada correta para conversão?
Um dos desafios mais interessantes da conversão do PL / I para Java é gerado por instruções de pré-processador como% INCLUDE,% DECLARE,% ACTIVATE,% IF -% THEN -% ELSE,% DO -% END, etc.
Quando as fontes de PL / I contêm instruções pré-processador (procedimentos), então obviamente o código “fonte” é diferente daquele que é finalmente passado para o compilador PL / I. Estas instruções / procedimentos do pré-processador são executados imediatamente antes da compilação e podem alterar o código-fonte, adicionando ou removendo partes do código. Então, afinal de contas, a questão é qual código deve ser a entrada para uma conversão de idioma, aquela antes ou depois do pré-processamento de PL / I.
Quando as fontes PL / I contêm instruções pré-processador (procedimentos), então obviamente o código “fonte” é diferente daquele que é finalmente passado para o compilador PL / I. Estas instruções / procedimentos do pré-processador são executados imediatamente antes da compilação e podem alterar o código-fonte, adicionando ou removendo partes do código. Então, afinal de contas, a questão é qual código deve ser a entrada para uma conversão de idioma, aquela antes ou depois do pré-processamento de PL / I.
Quando as fontes antes do pré-processamento de PL / I devem ser usadas como entrada para a conversão do PL / I para Java
O conceito de pré-processamento serve principalmente 3 objetivos: reutilização de código, melhorar a capacidade de manutenção, aumentar o desempenho. O exemplo mais simples para isso é o processador% INCLUDE, que permite a reutilização de código altamente eficiente. Sempre que possível, o programa separado e o conceito de arquivo de inclusão devem ser preservados por qualquer solução de migração para o Java, caso contrário, a manutenção geral do aplicativo de destino diminuirá consideravelmente. Se a solução de conversão PL / I não suporta esse recurso automaticamente, isso representa um sério risco para o projeto de migração PL / I!
Quando as fontes após o pré-processamento de PL / I devem ser usadas como entrada para conversão do PL / I para Java
Nos casos em que o arquivo de origem PL / I não pode ser analisado como uma unidade sintaticamente correta e completa, a conversão de código tecnicamente razoável do arquivo de origem original não é possível e o arquivo de origem após o pré-processamento PL / I precisa ser convertido.
Essa abordagem também pode ser necessária quando a conversão de arquivos de origem não processados resulta em efeitos colaterais inaceitáveis. Os efeitos colaterais desse caso são causados pelo fato de que a execução de instruções originalmente colocadas na fase de pré-processamento é deslocada para o tempo de execução do aplicativo no cenário de destino. O efeito pode ser: código convertido com capacidade de manutenção baixa ou desempenho baixo.
O LiberatorWorkbench permite intervenção humana nas regras de conversão do PL / I para Java. Por isso, caso código ou desempenho de qualidade baixa seja resultado dos algoritmos de conversão padrão (arquivos de origem antes do pré-processamento), ele pode ser alterado por especialistas de conversão, encontrando assim o equilíbrio correto.
O pré-processador PL / I permite várias construções de linguagem evitando que arquivos de origem não processados sejam convertidos razoavelmente para Java.
Conversão dos elementos específicos de PL / I para Java
A conversão do código PL / I para um sistema funcionalmente equivalente em Java pode ser considerada bem-sucedida quando o sistema de destino fornece dados e serviços idênticos originais em quaisquer estágios de execução. Consequentemente, a tecnologia de conversão correta deve ser capaz de implementar toda a construção específica de PL / I em algum formato. Os elementos principais de linguagem específicos da PL / I são abordados em várias fases e formas pelo LiberatorWorkbench da FreeSoft.
Gerenciado na fase de conversão de código ou por utilitários específicos:
- Atributos padrão
- Declarações contendo atributos LIKE
- Uma resolução de nomes não totalmente qualificados
- Identificação dos tipos de dados para todos os símbolos (variáveis, literais, funções)
- Variáveis dinamicamente alocadas
- Definição de âmbito variável
- Identificação de referências de seções cruzadas ‘Array’
- Construções de etiqueta GOTO – fatiamento de código, lançando exceções, etc.
- Criando métodos a partir de condições ON
- Implementação precisa de bits dos tipos de dados PL / I
- Alocação / remoção e uso dinâmico de variáveis
- Manipular referências de seções cruzadas ‘Array’
- PL / I I / O (Stream, Record, …) operações, dependências do sistema operacional (por exemplo, formato do nome do caminho)
- Conversões de tipo implícito
- implementação precisa de bit de funções embutidas PL / I / pseudo-variáveis (SUBSTR, INDEX, UNSPEC, etc.
Customização dos processos de conversão PL / I
A tecnologia de conversão de código da FreeSoft foi projetada e implementada para permitir a personalização de regras em todas as fases (análise, modelagem, geração de código) do processo de conversão, de acordo com solicitações de clientes específicas para arquitetura de destino e sintaxe de código.
Nas fases iniciais, as regras definem qual estado dos arquivos de origem (antes ou depois do pré-processamento PL / I) será usado como entrada para conversão. O mecanismo LiberatorWorkbench também aceita listas para definir o grupo de fontes a serem tomadas após o pré-processamento.
A fase de modelagem também permite que regras customizadas sejam executadas nos modelos de código intermediários por meio de refatoração.
Finalmente, para geração de código, também usamos regras e padrões personalizados predefinidos, por exemplo, convenções de nomenclatura, sintaxe para instruções diferentes, padrão para chamadas externas (chamadas de serviço), etc.
Não hesite em solicitar uma amostra de conversão enviando-nos alguns programas de PL / I ou inscreva para uma Demo, para que possamos orientá-lo no processo de conversão de PL / I para Java.