Operaçõe com valores nulos no Appeon

Parte da mágica que  o Appeon é converter parte do código em PowerScript para JavaScript. Sim, Javascript… JS… aquele que você utiliza em páginas Web. Isso é interessante do ponto de vista técnico, mas acaba herdando algumas pegadinhas. Veja abaixo o resultado de algumas operações realizadas com variáveis nulas no PowerBuilder e no Appeon.

 

Os exemplos abaixo foram testados utilizando PowerBuilder 10 e 12.6 em conjunto com o Appeon 2015 e 2016.

 

Para os exemplos abaixo, considere que as variáveis A e B são nulas.

ID Operação Resultado no PowerBuilder Resultado no Appeon
1 A + 1 null 1
2 A + B null null
3 A * B null 0 (zero)
4 A = 1 (comparação) null false
5 A <> 1 null true
6 not (A = 1) null true
7 A = A (comparação) null true
8 A = B (comparação) null true
9 isNull(A=1) true false

Como você pode perceber, existem diferenças significativas de comportamento, mas nem tudo está perdido.

Vamos supor que você esteja recebendo uma string por argumento e concatena ela com outra de instancia. Esta string pode ser nula, se for, você cancela o processamento. Então seria algo assim:

//a variável as_arg é do tipo string e é informada por argumento
//a variável is_texto também é do tipo string, mas é de instancia.

is_texto += as_arg

if isNull(is_texto) then return

//Se não é nulo, continua processamento.
//....

No PowerBuilder, este tipo de arranjo vai funcionar normalmente, mas no Appeon, a expressão isNull(is_texto) vai retornar sempre nulo.

A forma mais simples que encontrei para contornar esta situação foi:

//a variável as_arg é do tipo string e é informada por argumento
//a variável is_texto também é do tipo string, mas é de instancia.

if isNull(as_arg) then return

is_texto += as_arg



//Se não é nulo, continua processamento.
//....

No exemplo acima, a variável passada por argumento foi testada para verificar se era ou não nula e isso resolveu o problema.

O exemplo que passei foi ultra simplificado, mas foi com foco didático e a ideia é demonstrar que, apesar das diferenças de comportamento entre a aplicação sendo executada no “modo PowerBuilder” e no “modo Appeon”, a função isNull trabalha de forma consistente.

 

Referência:

The following two tabs change content below.
Arquiteto de Software e Desenvolvedor Backend (quase Fullstack), geralmente trabalho com C#, PowerShell, Python, Golang, bash e Unity (esse é mais por hobby). Estou sempre buscando algo novo para aprender, adicionando novas ferramentas ao meu cinto de utilidades.
Posted in Dev, PowerBuilder and tagged , , , , , , , , , .