Patrocínio Natura

Algoritmo do PIS – Programas de Integração Social

11 de novembro de 2007

O Clube da Informática tem muitos visitantes que procuram em nossos artigos o algoritmo do CPF (Cadastro de Pessoa Física) e do CNPJ (Cadastro Nacional da Pessoal Física), sendo assim procuramos e pesquisamos mais algoritmos que possam ajudar nossos amigos programadores.

Dessa vez iremos apresentar o algoritmo de cálculo do número do PIS e como já disse anteriormente muitos programadores pegam estas rotinas prontas na Internet, pois milhares de sites oferecem nas mais diversas linguagens de programação. Aos invés de você confiar seu software a essas rotinas que tal você mesmo desenvolver a sua tendo a certeza que a mesma está certa e funciona perfeitamente?

 

Entendendo a Validação

No cálculo do número do PIS, utiliza-se um algoritmo um pouco diferente do usado para calcular o dígito verificador do número do CPF. Nesse caso o número do PIS também é obtido do módulo de divisão 11 (onze). O número é composto por dois segmentos, assim como o CPF. O primeiro com nove posições à esquerda do traço e o segundo com duas posições após o traço.

Para exemplificar iremos calcular os dígitos verificadores de um PIS hipotético, por exemplo, 123.456.789-1X. Isso mesmo, como você já deve ter notado, no número do PIS, o último dígito é o verificador e não o conjunto após o traço


Calculando do Dígito Verificador

 

O dígito verificador é calculado com a distribuição dos dígitos colocando-se os valores 3 e 2 nas primeiras casas e os números 9,8,7,6,5,4,3 e 2 nas casas restantes como podemos conferir abaixo:

 

1 2 3 4 5 6 7 8 9 1
3 2 9 8 7 6 5 4 3 2

Na seqüência multiplicaremos os valores de cada coluna, confira:

1 2 3 4 5 6 7 8 9 1
3 2 9 8 7 6 5 4 3 2
3 4 27 32 35 36 35 32 27 2

Em seguida efetuaremos o somatório dos resultados (3+4+27+32+35+36+35+32+27+2), obtendo o seguinte resultado: 233. Pegamos o resultado é dividimos por 11.

Aqui é a parte importante do sistema, na divisão considere apenas o resto da divisão, no nosso caso é o número 2, ele vai ser responsável pelo cálculo do dígito verificador. Caso o valor do resto da divisão seja menor que 1 (um) 2 (dois), esse valor passa automaticamente a ser zero, caso contrário (nosso caso) é necessário subtrair o valor obtido de 11. Dessa forma 11-2 é igual a 9, que será nosso dígito verificador do exemplo.

Nosso número de PIS ficou então: 123.456.789-19

 

Considerações Finais

 

Com essa explicação você poderá montar sua própria rotina, lembre-se de colocar antes de qualquer coisa o tratamento para o número de algarismos, pois se a entrada já não estiver com onze algarismos já está incorreto o número do PIS.

Outra boa sugestão é sempre a entrada sendo feita só com os algarismos, para só depois você fazer a entrada da máscara, fica mais fácil tanto para o programador quanto para o usuário.

Compatilhe esse artigo!

21 Comentários

  • Klawdyo 8 de maio de 2009em11:28

    Eu acho que está errado, pois o resto da divisão não pode ser 1, e no texto tem dizendo que devemos verificar se ele é menor que 1, e não menor ou igual a 1.
    Pois se o resto for, o DV dará 10, e estaria errado.

  • Plinio Cruz 8 de maio de 2009em14:25

    Klawdyo, você está certo, quando fiz o artigo, utilizei os números diferentes do exemplo do site do governo, para testar o algoritmo, devo ter confundido com o resultado da última conta que eu fiz, já está alterado. Obrigado pela observação. abraço!

  • Ariel Leal 5 de abril de 2010em21:38

    Parabéns pelo artigo
    Resolvi meu problema fácil fácil

  • Márcio Jr. 11 de agosto de 2010em14:14

    Parabéns pelo artigo.
    Deixa bem claro como é o cálculo, isto é muito bom pois trata-se de um cálculo um pouco diferente do que a maioria dos programadores está habituado. Isto ajuda a “traduzir” de uma linguagem pra outra.

    Só não entendi porque você não apresentou o número do PIS com a máscara padrão que é: ###.#####.##-#

    Na minha opinião, é o outro dado importante com relação ao PIS. Quem não trabalha com isto, provavelmente nunca viu esta máscara. E eu acredito que o formato da máscara é importante para todos que vão trabalhar com validação de PIS.

    Mais uma vez, parabéns pelo bom trabalho.

  • Flávio 28 de outubro de 2011em8:20

    Plínio, a sua iniciativa de postar este algoritimo, foi sem sombra de dúvida, fantástico. Parabéns, pelo seu profissionalismo. Ao ler o primeiro post acima, lembrei-me da seguinte frase: “… criticar o que está feito é fácil, difícil é fazer a primeira vez …”. Com certeza você faria parte da minha equipe de trabalho… até mais.

  • Plinio Cruz 28 de outubro de 2011em15:44

    Flávio agradeço os elogios e a proposta trabalho (risos). Nosso objetivo desde 2002 é ter um site de ajuda, consulta e troca de idéias, afinal compartilhar o conhecimento é a melhor coisa que podemos fazer na nossa área, afinal não custa nada! Fazendo isso só temos a crescer profissionalmente. Fique a vontade e volte sempre! abraço. Plínio Cruz.

  • Sullivan Wilian 22 de fevereiro de 2012em16:16

    Avisa que tirou do livro de Pascal do Manzano

  • Plinio Cruz 22 de fevereiro de 2012em23:18

    Caro Sullivan, tanto o Manzano quanto eu bebemos na mesma fonte, esse exemplo e o texto é fornecido pelo centro de TI do Fazenda, eles fornecem as regras, assim com tem também no exemplo do CPF. Eu tivesse acesso, assim como acredito que o Manzano também, mas com certeza não tira o mérito, o livro do Manzano é um guia que não pode faltar em nenhuma biblioteca. braço Plínio Cruz

  • Sullivan Wilian 24 de fevereiro de 2012em9:50

    Olá, Plinio.

    Eu sei que o algoritmo é oficial e pertence sempre a um órgão, o que eu estou apontando é o texto do seu post. Está idêntico ao texto do livro do Manzano, inclusive na estrutura. O CPF é da Fazenda, mas o PIS é Caixa Econômica Federal. Não acredito que um autor faça um copy/paste e ponha num livro. Minha referência é com o texto e não com o algoritmo oficial.

    Falow!

  • Plinio Cruz 24 de fevereiro de 2012em18:48

    Ok Sullivan, vou pesquisar, pois a minha fonte não foi o ivro do Manzano, foi um trabalho de faculdade que tomei conhecimento nos anos 90 na Universidade Federal Fluminense, conheci e comprei o Livro do Manzano depois, tanto é que o Manzano faz a referência no livro dele as fontes, aqui no Clube temos o mairo cuidado de colocar as fontes e terei o maior prazer de fazer referência a esse autor que já utilizei muito como fonte de consulta, vou falar com o meu parceiro do trabalho e resolveremos essa questão. abraço.

  • Sullivan Wilian 25 de fevereiro de 2012em17:02

    Olá, Plinio.

    Fico contente em saber que você entendeu o que eu expressei. Sou da área acadêmica e temos o costume e compromisso de sempre citar as fontes pesquisadas, pois se houver um erro ou falha na informação esta jamais será atribuída a nós.

    Um grande abraço para ti.

  • Jaqueline 13 de março de 2012em9:22

    Alguém sabe onde encontro as regras oficiais para a geração de dígitos verificadores para documentos como PIS, CEI, CNPJ e CPF?

    Os algoritmos eu já tenho. Escrevi um programa para verificar dígitos verificadores de alguns tipos de documentos oficiais (será divulgado em breve como comando de Stata, disponível a todos). Para isso me baseei em referências secundárias na internet como Wikipedia, forums de programadores, etc.

    No entanto tanto para a conferência final e documentação do comando, como para a inclusão em algumas pesquisas preciso das fontes oficiais. Alguém tem idéia onde posso encontrar publicações oficiais que descrevam estes algoritmos?

  • Plinio Cruz 14 de março de 2012em0:31

    Jaqueline os algoritmos de PIS, CNPJ e CPF do Clube da Informática forma feitos em consulta a documentos oficiais da fazenda, são utilizando por nosso equipe da Trio Interativa em nossos sistema com muito sucesso. CEI seria o que? Não sei ao que se refere, se for alguma forma de identidade lamento dizer que essas verificações mudam de órgão para órgão, diferente dos outros três. Qualquer dúvida é só falar. abs Plínio Cruz

  • Sullivan Wilian 14 de março de 2012em5:34

    Uma das coisas mais difíceis é o acesso aos documentos oficiais dos órgãos públicos para o acesso e obtenção dos algoritmos de validação de dígitos verificadores, pois nem todos disponibilizam esta informação de forma fácil.

    Há na Internet brasileira o péssimo costume de se divulgar informações sem se colocar as fontes de onde elas foram obtidas, ou seja, de onde as informações foram obtidas. Isso é feito, parece ser, propositalmente para dar a impressão ao visitante daquele sítio (blog, fórum ou qualquer outro mecanismo) de que seu proprietário é uma sumidade. é preciso mudar este comportamento, é preciso cultivar maior honestidade e humildade em divulgar as fontes de obtenção. Mesmo relatando-se as fontes de obtenção, dependendo da forma que a informação é exposta, sem nenhum critério acadêmico, pode ser considerado plágio e sem o uso de fontes como ocorre é plágio sem sombra de dúvida.

    Seria interessante divulgar para nós as fontes oficiais as quais o Clube de Informática teve acesso, pois a informação, desde seu conteúdo até sua fonte origem, deve ser publicamente divulgada. Caso contrário é de se duvidar da legitimidade e validade da informação apresentada, pois quem garante que ela é correta.

  • Sullivan Wilian 14 de março de 2012em5:44

    Jaqueline, sinto em lhe dizer que você está “num mato sem cachorro”. Serão grandes as dificuldades para localizar as fontes oficiais.

    Não sei se te auxilia, mas há um autor que eu já citei aqui que publicou num livro de linguagem Pascal rotinas de CPF, PIS e CNPJ. Recentemente vi uma publicação deste mesmo autor sobre Algoritmos de Dígitos Verificadores. Pelo fato deste autor ser Mestre, membro da acadêmia, ele habitualmente faz referências. Embora eu não conheço o livro, creio que talvez possa lhe auxiliar se não no todo, talvez em parte, pois segundo o apresentado sobre o conteúdo da obra validação de SEI não tem, mas tem outros como Inscrição Estadual, Boleto Bancário, ISBN, Cartão de Crédito entre outros. Na verdade estou encomendando o livro para conhecimento.

    Caso tenha interesse no livro, poderá comprá-lo (é o único caminho que eu saiba de obtenção) no endereço do sítio http://clubedeautores.com.br/book/124576–Algoritmos__Digito_Verificador.

    Espero ter ajudado.

  • Plinio Cruz 14 de março de 2012em21:33

    Sullivan não vou me estender mais nesse assunto, já prometi para você que estamos levantando a autoria desses artigos. Se você é um visitante assíduo do nosso site vai ver que todos os nossos artigos vem assinados pelos seus autores. Faço questão de colocar o autor do texto de validação do nosso site, assim que tiver certeza da sua origem. Não posso tirar do ar até saber a verdadeira autoria pois é um dos artigos mais visitados e é fonte de consulta para minha equipe, que já aplicou esse algoritmo em PHP, Pascal, VB, JS e C++ para o desenvolvimento em nossos sistemas, funciona perfeitamente. Portanto finalizo essa discussão que assim que acharmos o autor desse algoritmo e a fonte do governo colocarei aqui no Clube, enquanto isso fica como está. Inclusive fiz um ofício ao ministério da fazenda requiisitando essas regras. Sullivan posso garantir que nos último 10 anos que estou utilizando essa validação (CPF/CNPJ) ela nunca falhou. Minha experiência nesse caso acho que conta, pois são mais de 300.000 (trezentos mil) CPF/CNPJ testados ao longo desses anos em inscrições eletrônicas em eventos por todos o Brasil. Mas sinceramente, caso você e a Jaqueline precisem dessa autoria para utilizar essa rotina, saiba que estamos pesquisando esse assunto.

  • Sullivan Wilian 15 de março de 2012em16:27

    Olá, Plínio.

    Primeiramente obrigado por seu retorno.

    Não é questão de estender ou não em uma discussão, aliás a proposta do seu sítio postar um artigo e abrir para comentários é exatamente essa. Discutir assuntos, até a exaustão se for preciso e entre os visitantes se assim for preciso.

    O fato de colocar a autoria do texto de um artigo é obrigação, não é favor ou gentileza.

    Em momento algum eu disse a você para retirar o artigo, eu questionei outros fatores. Também não julguei sua habilidade profissional ou sua pessoa ou afirmei se quer que o algoritmo exposto tem problema. Por favor, não ponha palavras em minha boca.

    Agora veja esta frase de seu post a Jequeline “… os algoritmos de PIS, CNPJ e CPF do Clube da Informática forma feitos em consulta a documentos oficiais da fazenda” e veja o que você está respondendo a mim “… finalizo essa discussão que assim que acharmos o autor desse algoritmo e a fonte do governo colocarei aqui no Clube, enquanto isso fica como está…”. Veja que é você que está em contradição, ora diz usar o algoritmo sob consulta a documentos oficiais da da receita, ora diz que assim que achar o autor do algoritmo (que todos nós sabemos que a Receita Federal) e a fonte do governo o colocará a disposição no Clube. São palavras suas, ou você os têm ou não os têm, mas não dica que têm se não têm.

    Já que aqui estamos, e fui mal interpretado, digo a você que nos algoritmos de CPF e CNPJ há uma pequena falha. Falha até normal, pois as pessoas se preocupam em verificar a validade do dígito verificador e se esquecem de verificar uma série de números de CPF e CNJP que são inválidos para a Receita, ou seja, são números que jamais existirão em um documento desse porte. Sobre isso já passei comunicação ao Sr. Manzano que fora extremamente simpático e educado, pois o algoritmo publicado não está incorreto, apenas não verifica algumas condições a mais existentes. Recentemente vi que ele considerou essas questões num trabalho recentemente publicado.

    Espero que você tenha agora me entendido, pois foi essa a impressão que tive anteriormente e até sinalizei sobre, mas com seu último recado um tanto desagradável percebi que você está confundindo as coisas.

    Eu gosto de participar, de colaborar, de auxiliar, Não gosto de ser mal interpretado, não gosto que atribuam a mim palavras que eu não disse. Procuro ser senhor das minhas palavras para não ser escravo delas.

    Quem não gosta de discutir sou eu. Eu encerro está discussão e não vou mais interagir sobre este assunto com você. Poderemos conversar sobre outros temas e outros artigos aqui publicados, mas para o tema de dígitos verificadores estou fechado em relação a você. Será um prazer conversar sobre outros assuntos da área da Computação, pois tenho mais de 30 anos de experiência em programação, desde grande porte até micro informática em empresas nacionais e também fora do país.

    Um grande abraço para ti.

    P.S. Se não sabe brincar, não brinca.

  • Plinio Cruz 15 de março de 2012em23:04

    Sullivan a proposta do Clube da Informática é a divulgação do conhecimento e a discussão em torno do tema, em nenhum artigo bloqueio a discussão, portando elas são intermináveis, então aqui é o lugar justamente para quem sabe brincar, portanto ninguém pode encerrar uma discussão, pode simplesmente, como você propos, deixar de interagir.

    Eu cursei Engenharia na UFF nos anos 90, na época, cursava a cadeira de informática, estávamos apredendo linguagem estruturada e um dos trabalho era algotimos de validação, um amigo (que a princípio teve acesso ao livro do Manzano e de uma instrução normativa) escreveu um trabalho de sala sobre o tema, que eu tive acesso e estava com uma cópia na época que o Clube da Informática foi criado.

    Depois da sua primeira postagem fui atrás do livro do Manzano que eu já tinha e fui atrás da instrução normativa no ministério da fazenda, achei outras instruções, só que atualmente não está lá as que nos interessam, achei várias instruções sobre validação, mas a do CPF,CNPJ e PIS não tem está em lugar algum no site. Então entrei em contato com a Receita por intermédio da Ouvidoria e estou aguardando a resposta.

    Como tenho certeza que vi o documento na receita federal, apesar de não ter a biografia no trabalho que eu guardei da época, acredito que o documento ainda deve ser acessado pelo público, por isso citei as fontes oficiais. De qualquer modo continuo investigando, pois nesses mais de 20 anos de experiência semelhantes aos seus na área de programação, o que mais fiz foi pesquisar, pesquisar, pesquisar… a exaustão os temas ligados ao meu trabalho.

    Se fui desagrádavel, desculpe não era a intenção, estava respondendo as suas colocações, dando satisfação sobre o que é publicado e comentado aqui no Clube da Informática, pois sou resposável como único administrador do conteúdo que é enviado para a publicação.

    Fico feliz com a sua participação aqui no nosso espaço, gosto de publicar tudo que é postado, ainda mais quando temos oportunidade de ter uma discussão de nível, com um visitante disposto como você. Portanto o site está livre para você discutir qualquer artigo e quem sabe dividir conosco um pouco desses 30 anos de experiência como eu e vários amigos que publicam aqui para os nossos visitantes escrevendo um artigo para nós.

    abraço
    Plínio Cruz

  • Raquel Feitosa de Araújo 14 de dezembro de 2012em16:55

    massa… ajudou demais, a professora num vai mais me matar! kkkk

  • Renata 14 de maio de 2013em22:14

    Plinio, me ajude por favor.

    Nunca trabalhei com carteira assinada, sempre fui estagiária. Hoje sou uma estagiária em uma empresa que cadastra ponto pelo PIS. Eu não tenho, e quem solicita o PIS é o primeiro empregador, por eu ser estagiária, eles não podem solicitar PIS para mim.
    O fato é que tentnado bolar um PIS genérico que eu possa usar, apenas pra cadastrar o ponto. Eu baixei um programa da net que calcula, mas o PIS que aparece tem 12 digitos, o que é estranho pois na empresa o aparelho de ponto só reconhece PIS com 11 dig.
    Eu peguei uma numeração e fiz o calculo acima.
    Deu o numero de PIS: 48976617089

    Pra validar um PIS, os números anteriores ao digito verificador, podem ser qualquer um? e o que vc me orienta a fazer nessa situação?

  • Leonardo Buzatto 23 de junho de 2016em17:30

    Boa tarde pessoal,

    Muito boa a explicação, e gostaria de saber se alguém sabe como ficaria a validação quando o PIS é de 12 dígitos? pois em alguns estados do Brasil já esta sendo gerado o documento com 12 dígitos.

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *