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:

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:

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.
Breno RdV
Ex-Psicólogo, com quase uma década de experiência em Recursos Humanos e Gestão de Pessoas, atual desenvolvedor e Analista de Sistemas, trabalhando com PowerBuilder, C#, PowerShell e expandindo horizontes para Python, Xamarin, PHP, Angular e (por que não?) Unity.

Comments

comments

Posted in Dev, PowerBuilder and tagged , , , , , , , , , .