Utilizando a função ProcName()

Blog Advpl - Share knowledge

Utilizando a função ProcName()

28 de dezembro de 2015 Dicas Funções 0

A função ProcName() retorna o nome da rotina ou função, definida pelo usuário, corrente ou anterior. Esta função pode muito ser útil quando queremos condicionar nosso fonte a executar algo se ele passar por alguma função dentro de uma rotina padrão ou customizada.

Sintaxe

ProcName ( [ nAtivacao] ) –> cRet

Parâmetros/Elementos

Nome Tipo Descrição Obrigatório Referência
nAtivacao Numérico Indica um valor numérico que especifica qual ativação será questionada. Sendo: 0- Refere-se à ativação corrente; 1-Refere-se à ativação anterior, etc. No entanto, caso nenhum valor seja especificado, o padrão será zero (0).

Retorno
cRet (caracter) = Retorna o nome de uma rotina, função ou bloco de código em execução no momento, na forma de uma string.

Observações

  • Essa função questiona a pilha de ativação, da linguagem AdvPL, a respeito do nome de uma rotina, função definida pelo usuário ou bloco de código em execução naquele momento. A pilha de ativação é uma estrutura interna que mantém um registro de cada chamada da rotina, função ou bloco de código.
  • Número de linha tem relação com o início do arquivo fonte original. Linhas incluem uma diretiva de compilador, processador, linha em branco, comentário e uma continuação da linha. Uma linha de várias declarações é considerada uma única linha.
  • Para uma ativação corrente, esse função retorna o nome da rotina ou função definida pelo usuário.
  • Para uma ativação anterior, a função retorna o nome ou função definida pelo usuário que chamou a rotina corrente.
  • Se a ativação questionada é uma avaliação de bloco de código, ProcName retornará o nome da rotina ou função do usuário que definiu o bloco de código.
  • Utilize essa função em conjunto com a ProcLine() para fornecer informações sobre depuração.

Como exemplo, quero usar um determinado ponto de entrada que é utilizado tanto para incluir, quanto alterar ou excluir, mas só quero que minha rotina execute quando passar por um determinado processamento.

Exemplificando melhor:

Irei utilizar o ponto de entrada AT400GRV, este P.E. é chamado apos a inclusão, alteração ou exclusão de um orçamento no módulo Gestão de Serviços.

Mas só irei executar se eu passar pela função AT400PROC.

Ou por exemplo:

Caso não saiba qual posição encontra-se o processo, você pode utilizar o FOR conforme exemplo acima.

 

 

Deixe uma resposta