Origem do prefixo MV_ dos parametros

Por que parametros do Protheus se chamam MV_RAZSOC, MV_CTAPAD, MV_NF1MAX e nao apenas RAZSOC, CTAPAD... a sigla MV vem de onde?

Voce nunca parou pra pensar — todos os parametros do sistema sao MV_alguma_coisa. MV_RAZSOC (razao social), MV_CTAPAD (conta contabil padrao), MV_NF1MAX (numero maximo de NF). Por que esse prefixo?

MV = Memory Variable

Vem dos primordios do xBase (Clipper, dBase III), nos anos 80. Naquela epoca, o sistema de tipos de variaveis tinha algumas categorias:

Quando voce digitava RAZSOC := "ArchTec" num codigo Clipper, podia haver ambiguidade: RAZSOC e um campo da tabela aberta? Ou uma variavel de memoria?

Solucao da epoca: prefixar com M-> ou M. pra forcar "memory variable". Tipo: M->RAZSOC := "ArchTec" deixava explicito que era memoria, nao tabela.

Do M-> pro MV_

O Protheus, herdando dessa cultura xBase, adotou:

O MV_ e literalmente Memory Variable — mesmo que hoje sejam guardados em tabela. Ficou como convencao.

Por que sobreviveu

Em codigo AdvPL, voce escreve:

nLimite := GetMv("MV_LIMICRD", .F., 0)

O prefixo MV_ sinaliza visualmente que e parametro do sistema (lookup na SX6). Sem esse prefixo, voce nao saberia se LIMICRD e variavel local, parametro de sistema, ou campo da SA1.

Outros prefixos historicos

O Protheus tem varios prefixos historicos vivos:

Comparativo com ERPs modernos

SAP usa T-CODE (transaction code), Oracle EBS usa FND_ (Foundation), Microsoft Dynamics usa SYS_. Cada um carrega marcas do seu DNA tecnico.

O Protheus carrega o DNA do Clipper. MV_ e um pequeno fossil de 30 anos atras, vivo em milhoes de linhas de codigo.

Veja também