Assign ? Melhor Performance ou Confiabilidade ?

Nos dias de hoje é mais raro encontrarmos programas sem ASSIGN, mas sempre aparece um ou outro, diante disso ai vai me dica.

Porque usar o ASSIGN ?
Essa é uma questão que praticamente todos os novatos no mundo Progress fazem. E confesso a vocês que já me fiz algumas vezes essa questão.

Muitos argumentam a questão de performance, e isso realmente é verdade o assign é mais performatico pois faz apenas uma transação para cada variavel. Explicarei isso em outro artigo.

O mais importante agora é mostrar que a falta do ASSIGN pode causar erros de programação quando estamos alterando a chave de uma tabela que seja única.

Vamos supor que temos uma tabela tt-teste onde a chave primária e unica é composta de 3 campos.


DEFINE TEMP-TABLE tt-teste2
FIELD a AS INTEGER
FIELD b AS INTEGER
FIELD c AS INTEGER
INDEX ch-pri AS PRIMARY UNIQUE a b c .

Agora vamos criar dois registros nessa tabela.

CREATE tt-teste2.
tt-teste2.a = 4.
tt-teste2.b = 0.
tt-teste2.c = 1.

CREATE tt-teste2.
tt-teste2.a = 4.
tt-teste2.b = 1.
tt-teste2.c = 1.

Como ultimo passo vamos alterar o ultimo registro da tabela conforme abaixo:

FIND FIRST tt-teste2 WHERE tt-teste2.a = 4 AND
tt-teste2.b = 1 AND
tt-teste2.c = 1 NO-ERROR.
IF AVAIL tt-teste2 THEN
DO:
tt-teste2.b = 0
tt-teste2.c = 2.
END.

Executem esse código para entender melhor as vantagens do assign.
Percebam que o código perde a confiabilidade.
Agora executem o mesmo código utilizando assign.

FIND FIRST tt-teste2 WHERE tt-teste2.a = 4 AND
tt-teste2.b = 1 AND
tt-teste2.c = 1 NO-ERROR.
IF AVAIL tt-teste2 THEN
DO:
ASSIGN tt-teste2.b = 0
tt-teste2.c = 2.
END.

Reparem que o código funciona perfeitamente.

FOR EACH tt-teste2.
DISP tt-teste2.
END.

Espero ter ajudado pessoal.
Abraço e até a próxima.

FDantas

Formado pela FPJ (Faculdade Politecnica de Jundiai), atualmente atuando como analista de sistemas. Trabalha há mais de 10 anos com analise, desenvolvimento e customização de sistemas desenvolvidos em Progress 4GL como Magnus, EMS e HCM. Atua também com desenvolvimento web, utilizando a ferramenta WebSpeed.

Você pode gostar...

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Unable to load the Are You a Human PlayThru™. Please contact the site owner to report the problem.