← ClaudeAtlas

advpl-fundamentalslisted

Fundamentos ADVPL/TLPP — notação húngara (c/n/d/l/a/o/b/x/u), naming convention, escopos Local/Static/Private/Public, limite de 10 chars em .prw/.prx (250 em .tlpp), prefixo de cliente em User Function, ~195 funções restritas. Use antes de gerar/editar QUALQUER função, ao revisar nomes, ou ao decidir se símbolo é nativo/restrito/customer.
JoniPraia/plugadvpl · ★ 12 · API & Backend · score 66
Install: claude install-skill JoniPraia/plugadvpl
# advpl-fundamentals — Convenções básicas ADVPL/TLPP ADVPL (Advanced Protheus Language) e seu sucessor TLPP (também chamado TL++) são linguagens proprietárias da TOTVS, derivadas do Clipper/xBase. Têm convenções fortes que **não são opcionais** em código de qualidade Protheus. ## Quando usar - Antes de gerar qualquer `User Function`, `Static Function`, `Main Function`, classe ou método. - Quando o usuário pede para criar/refatorar variáveis ou funções. - Ao revisar nomes existentes (renomeação requer cuidado em ADVPL clássico — ver limite de 10 chars). - Ao decidir se um símbolo é do customer, do TOTVS padrão, ou de uma biblioteca terceira. - Antes de chamar qualquer função "esquisita" (consulte `funcoes_restritas` via `/plugadvpl:find function <nome>`). ## Limite de identificadores — depende da extensão do fonte | Extensão | Compilador | Limite | Comportamento | |---|---|---|---| | `.prw`, `.prx` | ADVPL clássico | **10 chars** | Aceita nomes maiores mas usa **só os 10 primeiros**. Bug silencioso: `nTotalGeralAnual` e `nTotalGeralMensal` → ambos colapsam em `nTotalGera` → **mesma variável na memória**. Você grava em um, lê o outro. | | `.tlpp` | TLPP / TL++ | 250 chars | Todos os chars contam, nomes distintos são distintos. | **Cuidado especial com `User Function` em `.prw`:** o prefixo `U_` consome 2 chars → sobram **8 chars úteis**. `U_XYZMinhaFuncaoLonga` é referenciada internamente como `U_XYZMinhaF`. Risco real de colisão com qualquer outra `U_XYZMinhaFx`. Veja `