CMonth/CDow
Nomes do mes e dia da semana conforme idioma do sistema. Diferente de MesExtenso/DiaSemana (sempre PT-BR), CMonth/CDow respeitam SET LANGUAGE.
Assinatura: CMonth(dData) -> cMes // CDow(dData) -> cDia
Retorna: Character
Equivalentes localizaveis de MesExtenso e DiaSemana. A diferenca: CMonth/CDow respeitam SET LANGUAGE do sistema (portugues/ingles/espanhol), enquanto MesExtenso/DiaSemana sempre retornam em portugues.
Sintaxe
CMonth(dData) --> cMes ("Maio", "May", "Mayo"...)
CDow(dData) --> cDia ("Quinta-feira", "Thursday"...)
Exemplos
d := CtoD("13/05/2026")
// Com SET LANGUAGE PORTUGUESE
CMonth(d) // "Maio"
CDow(d) // "Quarta-feira" (13/05/2026 = quarta)
// Com SET LANGUAGE ENGLISH
SET LANGUAGE TO ENGLISH
CMonth(d) // "May"
CDow(d) // "Wednesday"
Diferenca CMonth vs MesExtenso
| Funcao | Idioma |
|---|---|
CMonth(d) | Conforme SET LANGUAGE |
MesExtenso(d) | Sempre PT-BR |
CDow(d) | Conforme SET LANGUAGE |
DiaSemana(d) | Sempre PT-BR |
Casos praticos
1. Relatorio em base multi-idioma
// Cabecalho do relatorio adapta automaticamente
oReport:SetTitle("Demonstrativo de " + CMonth(dDataBase) + " - " + ;
cValToChar(Year(dDataBase)))
// PT: "Demonstrativo de Maio - 2026"
// EN: "Demonstrative of May - 2026"
2. Compor data por extenso
Static Function DataExtenso(d)
// "Quinta-feira, 13 de Maio de 2026"
Return CDow(d) + ", " + ;
cValToChar(Day(d)) + " de " + ;
CMonth(d) + " de " + ;
cValToChar(Year(d))
3. Verificar mes em ingles (integracao internacional)
SET LANGUAGE TO ENGLISH
cMesIng := CMonth(dDataBase)
// Envia pra API que espera "May", "June" etc
Pegadinhas
- SET LANGUAGE e variavel de sessao — afeta TODA a sessao Protheus daquele momento em diante. Cuidado em PE que muda e nao restaura.
- Em base com idioma fixo PT-BR, CMonth e MesExtenso retornam igual — diferenca aparece so em base multi.
- Suporte: tipicamente PT, EN, ES — outros idiomas (FR, DE) dependem da release.
- Padronizacao: pra log/auditoria interna, use
MesExtenso/DiaSemana(sempre PT) pra evitar log misto em multi-empresa.