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

Duvida Como descobrir se a execução vem de uma Function

Discussão em 'Progress 4GL' iniciado por renato.schlogel, Fevereiro 4, 2015.

  1. renato.schlogel

    renato.schlogel Membro Participativo

    Vou testar, Obrigado Agnaldo!
  2. renato.schlogel

    renato.schlogel Membro Participativo

    Funcionou perfeitamente Agnaldo. Porém, com o this-procedure, eu só estou conseguindo ver a assinatura das funções e procedimentos do programa atual.

    Vou fazer um testes, e tentar acessar a rotina de origem da função/procedimento via persistência.

    Depois que implementar, vou postar o Código aqui.

    Ate mais Obrigado a todos.
  3. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Bom dia, meu caro, eu fiz esse codigo e segundo o que vc está dizendo, no message eu deveria identificar o caso:
    Código:
    define variable campo as character no-undo.
    
    function funcao return char():
        run meuprocedure.
    end function.
    
    run meuprocedure.
    assign campo = funcao().
    
    procedure meuprocedure:
        message program-name(1)
            view-as alert-box info buttons ok.
    end procedure.
    
    Porem o message mostra o mesmo conteudo, mostra o nome da procedure e no nome do programa, mas não mostra quem o chamou, ou seja, nesse caso, as 2 mensagem são exatamente igual.
  4. Agnaldo

    Agnaldo Membro Ativo

    Como comentado antes, voce deve varrer o vetor do PROGRAM-NAME.
    Nesse teu exemplo, voce esta sempre olhando para o "primeiro" item do vetor.
    Teste assim:
    Código:
    define variable campo as character no-undo.
    
    function funcao return char():
        run meuprocedure.
    end function.
    
    run meuprocedure.
    assign campo = funcao().
    
    procedure meuprocedure:
        message program-name(1) SKIP
                program-name(2) SKIP
            view-as alert-box info buttons ok.
    end procedure.
    
  5. Agnaldo

    Agnaldo Membro Ativo

    ou assim
    Código:
    define variable campo as character no-undo.
    DEFINE VARIABLE conta AS INTEGER.
    
    function funcao return char():
        run meuprocedure.
    end function.
    
    run meuprocedure.
    assign campo = funcao().
    
    procedure meuprocedure:
        conta = 0.
        REPEAT:
            conta = conta + 1.
            IF PROGRAM-NAME(conta) <> ?
               THEN
                   DISPLAY PROGRAM-NAME(conta) FORMAT "X(50)".
               ELSE
                   LEAVE.
        END.
    end procedure.
    
    
  6. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    fiz assim também e o nome da fuction não aparece.

Compartilhe esta Página