EGL - Notas sobre o Release


1.0 Software Suportado e Especificações
2.0 Limitações
   2.1 Utilitário de Conversão de I4GL em EGL: Valores 'null' Não São Configurados para as Variáveis de Limite Ao Ler de um Formulário do Console
   2.2 Utilitário de Conversão de I4GL em EGL: Diferença de Tempo de Execução Entre as Instruções de Loop 'FOR' do I4GL e do EGL
   2.3 Utilitário de Conversão de I4GL em EGL: Registros de Tela Referenciados com a Notação .* Não São Convertidos Apropriadamente
   2.4 Utilitário de Conversão de I4GL em EGL: As Condições IF do I4GL (IF ! xxx ou IF xxx) e as Expressões Booleanas Não São Totalmente Suportadas no EGL
   2.5 Formulários TUI: Utilização da Propriedade "validValuesMsgKey" com Campos de Formulário Não-numéricos
   2.6 Suporte a Serviços da Web: As Anotações XSD em Itens de Dados, Registros ou Itens de Registro São Aplicadas Apenas a Interfaces
   2.7 Suporte a Serviços da Web: Tipos de Arquivo WSDL Suportados
   2.8 Suporte a Serviços da Web: Local da Biblioteca de Ligações de Serviço Criada pelo Assistente
   2.9 Depurador EGL
3.0 Problemas Conhecidos
   3.1 Suporte a Serviços da Web: Erros ao Utilizar Matrizes Multidimensionais como Parâmetros para Projetos do J2EE 1.3
   3.2 Suporte a Serviços da Web: Erros ao Utilizar Registros Fixos com Subestruturas como Parâmetros para Projetos do J2EE 1.3
   3.3 Suporte a Serviços da Web: Erros ao Utilizar Tipos de Dados de Intervalo ou Tempo como Parâmetros para Projetos do J2EE 1.3
   3.4 Suporte a Serviços da Web: Erros ao Gerar Itens de Dados EGL Duplicados a Partir de Vários Arquivos WSDL
   3.5 Variáveis de Host para Acesso ao Banco de Dados Oracle
   3.6 Compilando Arquivos Jasper (.jrxml) no EG
   3.7 Problemas de Migração

1.0 Software Suportado e Especificações

O editor de Opções de Construção indica que o WebSphere Application Server 5.1 é um tipo de servidor suportado. No entanto, apenas as versões 5.1.1 ou superiores do WebSphere Application Server são suportadas.

2.0 Limitações

2.1 Utilitário de Conversão de I4GL em EGL: Valores 'null' Não São Configurados para as Variáveis de Limite Ao Ler de um Formulário do Console

Descrição: Durante a execução de uma instrução openUI de um formulário do console, os valores de retorno nas variáveis de limite nunca conterão um valor ?null?. No I4GL, se nenhum valor for digitado em um campo de formulário, será retornado um valor nulo.

Solução alternativa: Se o aplicativo verificar especificamente por um valor ?null? durante ou após uma instrução openUI em um formulário, a lógica precisará ser modificada para verificar por um valor de cadeia vazia em vez de nulo.

2.2 Utilitário de Conversão de I4GL em EGL: Diferença de Tempo de Execução Entre as Instruções de Loop 'FOR' do I4GL e do EGL

Descrição: No I4GL, a instrução ?for I = 0 to 1 by -1 ? resultava na execução do bloco de código de loop for zero (0) vezes. No EGL, esse mesmo bloco de código resultará em um loop infinito, eventualmente causando uma exceção de inteiro fora dos limites ou uma exceção de estouro de pilha.

Solução alternativa: Retrabalhe a instrução for do EGL de forma que o bloco de código do loop for seja executado o número de vezes desejado. Alternativamente, o loop for poderia ser alterado para uma instrução while que executa o bloco de código pelo número de vezes desejado.

2.3 Utilitário de Conversão de I4GL em EGL: Registros de Tela Referenciados com a Notação .* Não São Convertidos Apropriadamente

Descrição: Às vezes, o utilitário de conversão expande os registros de tela para todas as colunas na tabela, mesmo se apenas um subconjunto de colunas for utilizado para definir os registros de tela.

Solução alternativa: Remoção dos nomes de coluna extras das instruções EGL convertidas.

2.4 Utilitário de Conversão de I4GL em EGL: As condições IF do I4GL (IF ! xxx ou IF xxx) e as Expressões Booleanas Não São Totalmente Suportadas no EGL

Descrição: As condições IF em "IF ! xxx" ou "IF xxx" emitem erros de validação. As expressões booleanas não são suportadas no EGL e geram erros de validação.

Solução alternativa: O utilitário de conversão converte automaticamente essas funções IF, dependendo do contexto no qual elas são utilizadas; essa limitação não impacta a conversão do aplicativo I4GL. Ela está documentada aqui para que os usuários do I4GL possam saber o nível de suporte das condições IF ao gravar novos aplicativos em EGL.

Para expressões booleanas, converta o resultado booleano de uma condição em um valor numérico 0 ou 1.

2.5 Formulários TUI: Utilização da Propriedade "validValuesMsgKey" com Campos de Formulário Não-numéricos

Ao utilizar o Editor de Formulários EGL ou editar a origem do EGL manualmente para uma parte Formulário, a seguinte mensagem de validação será emitida quando a propriedade "validValuesMsgKey" for utilizada com um campo de formulário cujo tipo primitivo seja não-numérico, por exemplo, char ou db char:

IWN.VAL.5381.e 76/0 Propriedade: validValuesMsgKey. O valor dessa propriedade para o campo ... no formulário ... é inválido. A propriedade é uma propriedade de item numérico.

Para utilizar essa propriedade com um primitivo não-numérico, a seguinte solução alternativa é sugerida:

  1. Abra o arquivo que contém o formulário com o Editor EGL. Clique com o botão direito do mouse no arquivo e selecione Abrir com > Editor EGL na visualização Explorador de Projetos.
  2. Em vez de especificar um tipo primitivo na declaração do campo para o qual validValuesMsgKey está configurado, especifique uma parte dataItem na declaração do campo. A parte dataItem deve especificar o mesmo tipo primitivo que o campo o fez.

Por exemplo, se o campo original era definido como:

ACTION char(1) {inputRequiredMsgKey = "0003", validValues = ["I","S","U","D"], ..., validValuesMsgKey = "0004"}; //This line should have IWN.VAL.5381 error Altere a definição do campo para:

ACTION charOneItem {inputRequiredMsgKey = "0003", validValues = ["I","S","U","D"], ..., validValuesMsgKey = "0004"}; //This line should have no error

No mesmo arquivo, fora de formGroup, digite o seguinte:
DataItem charOneItem char(1) { validValuesMsgKey="1000" } end

2.6 Suporte a Serviços da Web: As Anotações XSD em Itens de Dados, Registros ou Itens de Registro São Aplicadas Apenas a Interfaces

As anotações XSD aplicadas a definições de itens de dados, definições de registros e declarações de itens de registros que reflitam aspectos de tipo de dados do esquema XML localizados em um arquivo WSDL de serviço da Web terão significado apenas quando utilizadas em parâmetros de função de Interface e valores de retorno derivados de um arquivo WSDL.

Exemplo:

DataItem weekend string {@xsd {enumeration=["Saturday", "Sunday"] }} end // this reflects the WSDL restriction on values for weekend

Interface calander

public function weekendPlanner (weekendDay weekend in, . . .); // only argument values Saturday and Sunday can be sent to this Web service function

end

2.7 Suporte a Serviços da Web: Tipos de Arquivo WSDL Suportados

O assistente Criar Interfaces EGL suporta apenas arquivos WSDL dos tipos RPC/Encoded, RPC/Literal e Document/Literal (Agrupados). Arquivos WSDL que são Document/Literal (Não-agrupados) não são suportados.

2.8 Suporte a Serviços da Web: Local da Biblioteca de Ligações de Serviço Criada pelo Assistente

O assistente Criar Biblioteca de Ligações de Serviço a Partir de um Serviço EGL não copia nenhum arquivo WSDL para um projeto diferente. Se a Biblioteca de Ligações de Serviço for criada em um projeto diferente daquele para o qual o serviço for gerado, o usuário deverá colocar manualmente uma cópia de quaisquer arquivos WSDL gerados que sejam referenciados pela Biblioteca de Ligações de Serviço no local indicado pela ligação da Web.

2.9 Depurador EGL

Não é possível utilizar o depurador EGL para programas que contenham relatórios. O suporte para essa função será fornecido em uma atualização futura.

3.0 Problemas Conhecidos

3.1 Suporte a Serviços da Web: Erros ao utilizar Matrizes Multidimensionais como Parâmetros para Projetos do J2EE 1.3

Os serviços gerados como um serviço da Web ou Bibliotecas de Ligações de Serviço com Ligações da Web gerarão código Java com erros de compilação se matrizes multidimensionais forem utilizadas como parâmetros ou definidas em registros utilizados como parâmetros nas funções de serviço ou interface quando geradas para um projeto da Web com um nível 1.3 do J2EE.

Service myService

function f1(param string[][][] in) // causes compilation errors when generated as a Web Service to a Web Project with J2EE 1.3

. . .

end

end

Service myService

function f1(param string[] in) // generates OK to a Web Project with J2EE 1.3

. . .

end

end

3.2 Suporte a Serviços da Web: Erros ao Utilizar Registros Fixos com Subestruturas como Parâmetros para Projetos do J2EE 1.3

Os serviços gerados como um serviço da Web ou Bibliotecas de Ligações de Serviço com Ligações da Web gerarão código Java com erros de compilação se registros fixos que contenham itens de dados subestruturados ou itens de dados com ocorrência > forem utilizadas como parâmetros ou definidas em registros utilizados como parâmetros nas funções de serviço ou interface quando geradas para um projeto da Web com um nível 1.3 do J2EE.

Exemplo:

Record mySubstructuredRecord 10 item1 char(10); 20 item 2 char(10); end

Service myService public function f1(param mySubstructuredRecord in) // causes compilation errors when generated as a Web Service to a Web Project with J2EE 1.3 . . . end end

Record myFlatRecord 10 item1 char(10); 10 item2 char(10); end

Service myService public function f1(param myFlatRecord in) // generates OK to a Web Project with J2EE 1.3 . . . end end

3.3 Suporte a Serviços da Web: Erros ao Utilizar Tipos de Dados de Intervalo ou Tempo como Parâmetros para Projetos do J2EE 1.3

Os serviços gerados como um serviço da Web ou Bibliotecas de Ligações de Serviço com Ligações da Web com tipos de dados de intervalo ou tempo utilizados como parâmetros ou definidos em registros utilizados como parâmetros em funções de serviços ou interface geradas para um projeto da Web com um nível 1.3 do J2EE emitirão uma exceção Java durante o tempo de execução.

3.4 Suporte a Serviços da Web: Erros ao Gerar Itens de Dados EGL Duplicados a Partir de Vários Arquivos WSDL

Utilizar o assistente Criar Interfaces EGL com dois ou mais arquivos WSDL que contenham o mesmo tipo de definição de esquema XML no mesmo projeto EGL causará a criação de definições de dados EGL duplicadas resultando em erros de validação de EGL.

3.5 Variáveis de Host para Acesso ao Banco de Dados Oracle

Se seu programa EGL acessar um banco de dados Oracle e utilizar uma instrução OPEN para abrir um conjunto de resultados, a cláusula SELECT da instrução OPEN não poderá utilizar os nomes de variáveis de host. Se os nomes de variáveis de host forem especificados, nenhum valor será definido no elemento correspondente da cláusula de uso da instrução OPEN.

3.6 Compilando Arquivos Jasper (.jrxml) no EG

O EGL fornece um construtor que compila os arquivos JasperReport toda vez que são salvos. Se os aplicativos EGL incluírem rotinas de tratamento de relatório, certifique-se de que o Java SDK 1.3.1 (ou um nível superior) esteja em sua máquina de desenvolvimento e que o diretório bin SDK esteja listado como parte da Variável de Ambiente PATH do sistema. (por exemplo, C:\jdk1.3.1_14\bin). Se você não tiver o Java SDK instalado, obterá o seguinte tipo de erro quando construir um arquivo .jrxml: Erro na compilação do arquivo de origem java de relatório.

3.7 Problemas de Migração

Esse pacote de atualização inclui várias alterações para a sintaxe EGL anterior. Se você criou partes do EGL utilizando a Versão 5.1.2 ou Versão 6.0 deste produto, provavelmente verá os erros de validação para essas partes depois de instalar este pacote de atualização. Uma ferramenta de migração simples é fornecida para atualização da sintaxe em seus arquivos de origem. Consulte a documentação de ajuda do EGL para obter informações adicionais sobre a ferramenta de Migração do EGL V6.0.

Retornar para o arquivo leia-me principal