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. Agnaldo

    Agnaldo Membro Ativo

    Dá uma olhada na documentação do PROGRAM-NAME.
    Além do nome do programa ele também devolve, em algumas situações, além do nome do programa o nome da procedure interna em uso.
    Acho que ele devolve até o nome da trigger, se estiver sendo visto de dentro de uma trigger.
  2. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    nunca tenha medo de REFACTORING, em OO é oque mais fazemos para sempre ter rotinas mais inteligentes, por isso que sempre se pega pesado na questão de não misturar assuntos, ou seja, uma classe, um metodo / procedure trata somente de um topico, assim fica facil de re-escrever
  3. bootstrapmaster

    bootstrapmaster Moderator Moderador Equipe de Suporte

    Eu testei, não traz o que precisa.
  4. Eilleen

    Eilleen Membro Ativo

    @renato.schlogel,

    Você poderia publicar pra nós esse .p? ou então pelo menos o trecho onde apresenta a mensagem e que dá problema se chamar a partir de uma function?
  5. Agnaldo

    Agnaldo Membro Ativo

    Um teste rápido no editor:
    Código:
    PROCEDURE procedureNumero1:
        MESSAGE "Procedure: " ENTRY(1,PROGRAM-NAME(1)," ") SKIP
                " Programa: " ENTRY(2,PROGRAM-NAME(1)," ")
        VIEW-AS ALERT-BOX.
    END PROCEDURE.
    
       
    FUNCTION funcaoNumero1 RETURNS LOGICAL ().
        MESSAGE "Procedure: " ENTRY(1,PROGRAM-NAME(1)," ") SKIP
                " Programa: " ENTRY(2,PROGRAM-NAME(1)," ")
        VIEW-AS ALERT-BOX.
    END FUNCTION.
    
    
    
    RUN procedureNumero1.
    funcaoNumero1().
    
  6. Eilleen

    Eilleen Membro Ativo

    @Agnaldo,

    Pelo que eu entendi, é o contrário que ele precisa... exemplo:

    Código:
    PROCEDURE procedureOrigem:
        RUN procedureDestino.
    END PROCEDURE.
    
      
    FUNCTION funcaoOrigem RETURNS LOGICAL ().
        RUN procedureDestino.
    END FUNCTION.
    
    
    PROCEDURE procedureDestino:
        /* aqui tem que saber quem foi que chamou, se foi a procedureOrigem ou a funcaoOrigem */
    END PROCEDURE.
    
    RUN procedureOrigem.
        funcaoOrigem().
    renato.schlogel curtiu isso.

Compartilhe esta Página