Como desfazer uma memória Global

Discussão em 'Progress 4GL' iniciado por Rodrigo Rossetto, Janeiro 25, 2011.

  1. Rodrigo Rossetto

    Rodrigo Rossetto Membro Participativo

    Olá pessoal, como faço para desfazer uma memória global?
  2. CarlosNobrega

    CarlosNobrega Membro Participativo

    Para se desfazer do valor deve-se atribuir uma "?" ou um valor default do campo (0, "", false, etc).

    Para eliminar a variável eu acredito que somente encerrando a sessão, até hoje não vi outra forma.

    Eu não sei qual a tua necessidade para eliminar uma variável global, mas uma boa prática é reforçar o nome das variáveis exemplo:

    def var g-<programa>-<nome> as <tipo> no-undo.

    g = global
    programa = programa em que usa a variável, geralmente UPC's
    nome = nome da variavel em detalhes

    def var g-CD0204-it-codigo as char no-undo.

    Desta forma fica mais difícil de repetir os nomes das variáveis.

    A mesma varável global pode ser definida mais de uma vez desde que com a mesma assinatura ou seja, definição igual de tipo e atributos de definição (no-undo, new global shared, as integer, char, decimals, etc).

    O que vale na sessão progress é o conteúdo da definição e dos assigns subsequentes...a segunda definição da mesma variável não altera o valor já atribuido anteriormente.

    exemplo:

    o programa 1 define a variável "A" com init = "20" e coloca o valor "10" nela através de um assign.

    o programa 2 define a mesma variável com um init = "20". se feito um display a variável terá o valor "10".

    o que vale é o valor já atribuido...


    fonte de teste

    programa 1
    def new global shared var t-1 as char init "a" no-undo.
    assign t-1 = "b".

    programa 2
    def new global shared var t-1 as char init "a" no-undo.
    message t-1 view-as alert-box.

    valor mostrado é "b"

Compartilhe esta Página