Tempo de leitura: 3 minutos
Você já passou pela situação de tentar realizar um cálculo matemático no Protheus e receber um erro de “type mismatch” porque um dos valores estava como caractere? Esse é um cenário extremamente comum, especialmente quando lemos dados de arquivos externos, APIs ou campos de texto. A função Val em ADVPL é a ferramenta nativa e essencial para resolver esse problema, permitindo a conversão direta de strings em valores numéricos. Dominar essa função é um passo obrigatório para quem está explorando os Fundamentos do ADVPL.
Neste guia completo, vamos mergulhar na sintaxe da função Val, entender como ela trata caracteres não numéricos e ver exemplos práticos de como utilizá-la em conjunto com outras funções de Conversão de Dados para garantir a integridade das suas rotinas customizadas.
O que é a função Val e para que serve?
A função Val em ADVPL tem como única finalidade transformar uma string que contém números em uma variável do tipo numérico. Isso é fundamental porque, na linguagem ADVPL, você não pode realizar operações aritméticas (soma, subtração, etc.) diretamente em variáveis do tipo caractere.
Sintaxe:
Val(cString)
Argumento(s):
Retorno:
Exemplo:
No exemplo abaixo utilizamos a função Val e informamos como parâmetro à função o valor String “100” e o retorno é um numérico do número 100.
Exemplo em da função Val em ADVPL:
#include 'protheus.ch'
/*{Protheus.doc} User Function fVal
(Essa função tem por finalidade mostrar a função de Conversões de Tipos de Dados Val em ADVPL)
@type Function
@author Adilio Costa
@since 09/07/2023
@?version 1.0
@?Inscreva-se no Blog ProtheusAdvpl:
https://www.protheusadvpl.com.br
@?Inscreva-se no Canal ProtheusAdvpl:
https://www.youtube.com/protheusadvpl
@?Siga-nos no Instagram:
https://www.instagram.com/protheusadvpl
@?Conheça os Cursos e Formações do ProtheusAdvpl:
https://cursos-e-formacoes-protheusadvpl.gr-site.com/
|Se esse conteúdo foi útil pra você nos ajude divulgando
ele e nossas redes sociais!!|
*/
User Function fVal()
Local cNum := "100"
Local nNum := Val(cNum)
MsgInfo("Variável String convertida em numérica usando a função Val:"+cValToChar(nNum),"Usando a função Val")
Return

-
Boas Práticas na Conversão de Dados
Ao utilizar a função Val, é uma boa prática garantir que a string não possua espaços indesejados ou caracteres especiais que possam truncar o valor. Por isso, é muito comum vermos a combinação de funções como:
nValor := Val( AllTrim( cString ) )
Isso garante que qualquer espaço em branco ao redor do número seja removido antes da conversão, evitando retornos inesperados em campos de formulários ou arquivos de integração.
Domine o Desenvolvimento Protheus
Para dominar este conceito em cenários complexos, com aulas em vídeo e suporte especializado, conheça o Portal ProtheusAdvpl. Lá, exploramos a fundo a arquitetura por trás desta função e suas aplicações em grandes projetos de integração e desenvolvimento de módulos.
Cursos Recomendados:
Conclusão
A função Val em ADVPL é um dos pilares da manipulação de dados no Protheus. Sem ela, a comunicação entre interfaces de texto e motores de cálculo seria impossível. Ao entender como converter strings para numéricos e vice-versa (usando a cValToChar), você ganha total controle sobre o fluxo de informações no seu ERP.
Links de referência(s):
Conteúdos relacionados