1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Programa chamado persistente ou não

Discussão em 'Progress 4GL' iniciado por af.dums, Março 7, 2023.

  1. af.dums

    af.dums Membro Ativo

    Pessoal, bom dia...
    Tenho um .p (exemplo.p) com a seguinte estrutura:

    Código:
    def var i-parametro as integer no-undo.
    
    assign i-parametro = 1.
    
    run pi-calcula.
    
    procedure pi-calcula:
       //faz alguma coisa
    end procedure.
    
    procedure pi-seta-parametro:
       def input param p-parametro as integer no-undo.
       assign i-parametro = p-parametro.
    end procedure.
    
    Posso chamar este programa direto, rodando ele com o paremetro "fixo" 1:
    Código:
    run exemplo.p.
    
    Ou posso chamar ele persistente, passando um outro parametro:
    Código:
    def var h-exemplo as handle no-undo.
    run exemplo.p persistent set h-exemplo.
    run pi-seta-parametro in h-exemplo(input 2).
    run pi-calcular in h-exemplo.
    
    Ambas as formas funcionam, o problema é que quando uso a rotina como persistente ele já sai executando primeiro a pi-calcula com o parametro 1, depois seto o parametro que eu quero e executa de volta.

    Minha pergunta é, como faço para que o programa exemplo.p quando chamado persistent já não execute automaticamente a pi-calcula?
    A exemplo.p já existe e roda em diversos programas chamando diretamente, apenas em um novo programa eu preciso rodar com um parametro diferente e não quero duplicar código.

    Obrigado.

    Obs: caso tenha erro de sintaxe no meu código favor ignorar pois escrevi ele diretamente aqui no post do fórum.

    Obrigado.
  2. af.dums

    af.dums Membro Ativo

    Eita, pessoal, desculpa o incomodo, usei as palavras certas na documentação da Progress e achei aqui é só testar o PERSISTENT da THIS-PROCEDURE dentro do exemplo.p

    Obrigado pelo tempo dispensado.

    Código:
    def var i-parametro as integer no-undo.
    
    assign i-parametro = 1.
    
    if not THIS-PROCEDURE:PERSISTENT then
       run pi-calcula.
    
    procedure pi-calcula:
    //faz alguma coisa
    end procedure.
    
    procedure pi-seta-parametro:
    def input param p-parametro as integer no-undo.
    assign i-parametro = p-parametro.
    end procedure.
    
    rafael.andrade curtiu isso.
  3. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Eu sou bem sincero com vc, eu prefiro o modo persistent, funciona como uma biblioteca de funções que eu acesso a qualquer momento dentro da minha aplicação, não tem aquele tempinho perdido fazendo um run ...., carrega, processa, retorna, joga fora .... entende, e dai partimos pra criar classes.
  4. af.dums

    af.dums Membro Ativo

    Bom dia meu caro, concordo contigo... Este projeto estou fazendo ela ficar persistente só para esta etapa que foi o que passou no escopo do projeto...

Compartilhe esta Página