P.5. Validação do CNPJ alfanumérico em C #

O Cadastro Nacional da Pessoa Jurídica (CNPJ) compreende as informações cadastrais das entidades de interesse das administrações tributárias da União, dos Estados, do Distrito Federal e dos Municípios. A administração do CNPJ compete à Secretaria da Receita Federal do Brasil (RFB). (Cadastro Nacional da Pessoa Jurídica (CNPJ))

O Anexo II do Ato Declaratório Executivo COFIS nº 41 Maio de 2017 diz o seguinte na página 13 para verificar se dígito verificador é válido: O dígito verificador do CNPJ é baseado no cálculo do módulo 11 e corresponde aos 2 últimos dígitos do CNPJ, o restante dos dígitos são a base para cálculo dos dígitos verificadores. No caso do CNPJ, o DV módulo 11 corresponde ao resto da divisão por 11 do somatório da multiplicação de cada algarismo da base respectivamente por 9, 8, 7, 6, 5, 4, 3, 2, 9, 8, 7, 6 e 5, a partir da unidade. O resto 10 é considerado 0. Veja também CNPJ Alfanumérico para obter mais informações.

O código-fonte da função, o arquivo Makefile e o comando CREATE FUNCTION, que vincula a função C à função SQL, encontram-se na página Validação CNPJ alfanumérico no GitLab.

Criação e teste da função no PostgreSQL:

postgres=# CREATE FUNCTION rfb_cnpj(text) RETURNS boolean
    AS '$libdir/udf/rfb_cnpj', 'rfb_cnpj'
    LANGUAGE C STRICT;
CREATE FUNCTION

postgres=# \pset null <nulo>
Null display is "<nulo>".

postgres=# SELECT rfb_cnpj(NULL);
 rfb_cnpj
----------
 <nulo>
(1 linha)

postgres=# SELECT rfb_cnpj('18781203000128');
 rfb_cnpj
----------
 t
(1 linha)

Notas: