| Formato da Inscrição: NNNNNNNN-DD Cálculo do Primeiro Dígito: Módulo 11 com pesos de 2 a 7, aplicados da direita para esquerda, sobre as 8 primeiras posições. 
    Cálculo do Segundo Dígito: Módulo 11 com pesos de 2 a 7, aplicados da direita para esquerda, sobre as 9 primeiras posições (inclui o primeiro dígito). 
    1º Passo: Multiplicar, da direita para esquerda, cada algarismo por pesos de 2 a 7, respectivamente, somar os resultados, calcular o módulo 11 e subtrair de 11. Se resto for 1 ou 0, veja observação abaixo. 
    
      1 2 3 4 5 6 7 8 (CAD) 
      3 2 7 6 5 4 3 2 (pesos) 
      => 8x2 + 7x3 + 6x4 + 5x5 + 4x6 + 3x7 + 2x2 + 1x3 
      => 16 + 21 + 24 + 25 + 24 + 21 + 4 + 3 = 138 
      Cálculo de módulo 11 (resto da divisão por 11) 
      138 / 11 = 12 => resto 6 (módulo11) 
      11 - 6 = 5 (1º dígito verificador) 
     
    2º Passo: Acrescentar o 1º dígito calculado ao CAD. 
    
      123.45678-5 
     
    3º Passo: Repetir 2º passo ao CAD do 3º passo. 
    
      1 2 3 4 5 6 7 8 5 (CAD) 
      4 3 2 7 6 5 4 3 2 (pesos) 
      => 5x2 + 8x3 + 7x4 + 6x5 + 5x6 + 4x7 + 3x2 + 2x3 1x4 
      => 10 + 24 + 28 + 30 + 30 + 28 + 6 + 6 + 4 = 166 
      Cálculo de módulo 11 (resto da divisão por 11) 
      166 / 11 = 15 => resto 1 (módulo 11) 
      11 - 1 =  10 
      Obs: Como cada dígito significa um algarismo, no caso do resto ser 1 ou 0, gerando "dígitos" 10 e 11, definimos o dígito como sendo 0. 
     
    4º Passo: Reslutado final - CAD 123.45678-50 
    
      
        | Exemplo do algoritmo em Access Visual Basic Public Function verifica_CAD_PR(CAD As Variant) As Boolean  | 
       
      
         | 
         
        Dim Cad1 As String, CAD2 As String 
        Dim Soma As Integer, Digito As Integer 
        Dim i As Integer, j As Integer  
        Dim Controle As String , Mult As String 
         
        'Identifica as 2 partes do CAD 
        CAD = Format (CAD,"0000000000") 
        CAD1 = Left$ (CAD, 8) 
        CAD2 = Right$ (CAD,2 
         
        'Inicializa a variável Controle 
        Controle = "" 
         
        ' Multiplicadores que fazem parte do algoritmo de checagem 
        Mult = "32765432" 
         
        'Loop de verificação 
        For j = 1 To 2 | 
       
      
         | 
         | 
        Soma = 0 
        For i = 1 To 8  | 
       
      
         | 
         | 
         | 
        Soma = Soma + (Val(Mid$(CAD1,i,1)) * (Val(Mid$(Mult,i,1))) | 
       
      
         | 
         | 
        Next i  
        If (j  = 2) Then Soma = Soma + (2 * Digito) 
        Digito = 11 - (Soma Mod 11) 
        If (Digito = 10 Or Digito = 11) Then Digito = 0  
        Controle = Controle + Trim$(Str$(Digito)) 
        'Sequência de multiplicadores para Cálculo do segundo dígito 
        Mult = "43276543" | 
       
      
         | 
        Next j | 
       
      
         | 
         
        'Compara dígitos calculados (Controle) com dígitos informados (CAD2) 
        If (Controle <> CAD2) Then  | 
       
      
         | 
         | 
        verifica_CAd_Pr = False | 
       
      
         | 
        Else  | 
       
      
         | 
         | 
        verifica_CAD_PR = True | 
       
      
         | 
        End If | 
       
      
         
        End Function | 
       
     
     |