advpl-fundamentalslisted
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 `