Macro substituição
&cExpressaoAvalia dinamicamente uma expressão AdvPL armazenada como texto.
Overview
O operador de macro substituição, representado pelo e comercial (&), faz com que uma expressão armazenada em caracteres seja interpretada e avaliada durante a execução. Na prática, o conteúdo textual passa a ser tratado como parte do código naquele momento, permitindo fórmulas e referências dinâmicas.
Syntax
&cExpressaoAvaliação de uma fórmula
User Function ExMacro()
Private nX := 10
Private cFormula := "nX + 1"
Local nResultado := &cFormula
ConOut(nResultado) // 11
ReturnO conteúdo de cFormula é avaliado em tempo de execução. A expressão nX + 1 produz o valor numérico 11.
Campo definido dinamicamente
User Function ExCampo()
Local cCampo := "A1_NOME"
DbSelectArea("SA1")
ConOut(SA1->&cCampo)
ReturnO conteúdo de cCampo determina qual campo do alias SA1 será acessado durante a execução.
- Use macro substituição somente quando a expressão realmente precisar ser definida em tempo de execução.
- Mantenha controle sobre a origem do texto avaliado e valide rigorosamente conteúdos informados por usuários.
- Prefira código direto quando a expressão for conhecida durante o desenvolvimento, pois ele é mais simples de compreender, testar e manter.
- A referência histórica informa que variáveis usadas dentro da expressão textual não podem ser locais; considere o escopo e valide o comportamento na versão do ambiente utilizada.
- Erros de sintaxe dentro da string aparecem somente durante a execução.
- Avaliar texto não confiável pode executar expressões inesperadas e alterar a lógica da rotina.
