Operaçõe com valores nulos no Appeon

Operaçõe com valores nulos no Appeon

Overview

Mergulhe no fascinante mundo da programação com a nossa jornada exploratória entre PowerBuilder e Appeon. Este guia descomplicado, mas informativo, mostrará as peculiaridades de trabalhar com variáveis nulas nessas plataformas. Acompanhado de exemplos testados e dicas didáticas, promete ser sua bússola para navegar pelas sutilezas do código entre diferentes versões de software. Prepare-se para um aprendizado leve e esclarecedor!

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.

IDOperaçãoResultado no PowerBuilderResultado no Appeon
1A + 1null1
2A + Bnullnull
3A * Bnull0 (zero)
4A = 1 (comparação)nullfalse
5A <> 1nulltrue
6not (A = 1)nulltrue
7A = A (comparação)nulltrue
8A = B (comparação)nulltrue
9isNull(A=1)truefalse

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: