Alguns algorítimos são de uso muito comum e frequente, para esses é comum utilizarmos a velha técnica do copy/past. Um deles é o de validação de CNPJ. Segue então um código de validação de CNPJ em VB.NET. Esse código pode ser utilizado, por exemplo, em um customValidator de uma aplícação web.
Public Function IsCNPJ(ByVal strCNPJ As String) As Boolean
IsCNPJ = False
Dim a, j, d1, d2 As Double
Dim i As Integer
If Len(strCNPJ) <> 14 Then
IsCNPJ = False
Exit Function
End If
If Not IsOnlyNumber(strCNPJ) Then
IsCNPJ = False
Exit Function
End If
a = 0
i = 0
d1 = 0
d2 = 0
j = 5
For i = 1 To 12 Step 1
a = a + (Val(Mid(strCNPJ, i, 1)) * j)
j = Convert.ToDouble(IIf(j > 2, j - 1, 9))
Next i
a = a Mod 11
d1 = Convert.ToDouble(IIf(a > 1, 11 - a, 0))
a = 0
i = 0
j = 6
For i = 1 To 13 Step 1
a = a + (Val(Mid(strCNPJ, i, 1)) * j)
j = Convert.ToDouble(IIf(j > 2, j - 1, 9))
Next i
a = a Mod 11
d2 = Convert.ToDouble(IIf(a > 1, 11 - a, 0))
If (d1 = Val(Mid(strCNPJ, 13, 1)) And d2 = Val(Mid(strCNPJ, 14, 1))) Then
IsCNPJ = True
Else
IsCNPJ = False
End If
End Function