Validação de CRC

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Validação de CRC

Mensagem por Maligno »

CRC = Conselho Regional de Contabilidade

O mais correto seria validar inicialmente a máscara contra o número do CRC. Eu até faço isso, mas não pude anexar minha função de validação de máscara.

Código: Selecionar todos

//**************************************************************************************************
function ValidCRC(cCRC)
local cSig := "AC,AL,AM,AP,BA,CE,CF,DF,ES,FR,GB,GO,LG,MA,MG,MS,MT,NI,NR,PA,PB,PE,PF,PI,PJ,PR,RJ,RN,RO,RR,RS,SC,SE,SP,TO"
local cCod := "26,09,01,25,11,05,24,21,12,99,22,20,30,03,18,23,19,98,21,02,07,08,50,04,51,15,13,06,29,27,17,16,10,14,28"
local cSit := "OTSPK"
local nMul := 2
local nTot := 0
local cStr
local i
cCRC := Upper(AllTrim(cCRC))
if At(Left(cCRC,2),cSig) > 0
   cStr := "1" + SubStr(cCod,At(Left(cCRC,2),cSig),2) + SubStr(cCRC,3,6) + Str(At(SubStr(cCRC,9,1),cSit),1)
   for i := Len(cStr) to 1 step -1
       nTot += Val(SubStr(cStr,i,1)) * nMul
       nMul := if((++nMul) > 10, 3, nMul)
   next
   return if(nTot%11 < 2, "0", Str(11-(nTot%11),1)) == Right(cCRC,1)
end
return .F.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Responder