Usina BRAdvPL Guide
Sign in
← All topics
FUNDAMENTOPublished

Macro substituição

&cExpressao

Avalia dinamicamente uma expressão AdvPL armazenada como texto.

OperadoresExpressõesVariáveis
01 · OVERVIEW

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.

02 · SYNTAX

Syntax

&cExpressao
03 · PRACTICAL EXAMPLE

Avaliação de uma fórmula

User Function ExMacro()
    Private nX := 10
    Private cFormula := "nX + 1"
    Local nResultado := &cFormula

    ConOut(nResultado) // 11
Return
Expected result

O conteúdo de cFormula é avaliado em tempo de execução. A expressão nX + 1 produz o valor numérico 11.

04 · PRACTICAL EXAMPLE

Campo definido dinamicamente

User Function ExCampo()
    Local cCampo := "A1_NOME"

    DbSelectArea("SA1")
    ConOut(SA1->&cCampo)
Return
Expected result

O conteúdo de cCampo determina qual campo do alias SA1 será acessado durante a execução.

BEST PRACTICES
  • 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.
COMMON PITFALLS
  • 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.

Related content

REFERENCES
  1. SILVA, Waterloo Ferreira da. A Bíblia do AdvPL. 2004, p. 31-32, seção “Macro Substituição”. Conteúdo resumido, revisado e exemplos adaptados.
  2. TOTVS. SDK Microsiga Protheus. Versão 1.0, 31 jul. 2014 — seção O Operador Macro (&).
Status
Published
Page created on
Last reviewed on
Original language
Português
Reviewed by
Usina.BR