Se per controllo logico intendi che le cifre siano congruenti con il
CheckDigit finale, questa è la routine in VB60 :
In un Modulo .bas
codice:
Private dIdx As Integer
Private valoriDigit(36, 3) As String
Private peso(26) As String

   

Public Function ValidCF(sCF As String) As Boolean
Dim sCD As String
Dim aCF(15) As String
Dim i As Integer
Dim l As Integer
Dim nCD As Integer
Dim blPari As Boolean
Dim totale As Integer
Dim resto  As Integer
    
    dIdx = 0
    
    ' Carico la tabella dei pesi delle cifre del CF
    Call caricaDigit("A", "0", "1"):    Call caricaDigit("B", "1", "0")
    Call caricaDigit("C", "2", "5"):    Call caricaDigit("D", "3", "7")
    Call caricaDigit("E", "4", "9"):    Call caricaDigit("F", "5", "13")
    Call caricaDigit("G", "6", "15"):    Call caricaDigit("H", "7", "17")
    Call caricaDigit("I", "8", "19"):    Call caricaDigit("J", "9", "21")
    Call caricaDigit("K", "10", "2"):    Call caricaDigit("L", "11", "4")
    Call caricaDigit("M", "12", "18"):    Call caricaDigit("N", "13", "20")
    Call caricaDigit("O", "14", "11"):    Call caricaDigit("P", "15", "3")
    Call caricaDigit("Q", "16", "6"):    Call caricaDigit("R", "17", "8")
    Call caricaDigit("S", "18", "12"):    Call caricaDigit("T", "19", "14")
    Call caricaDigit("U", "20", "16"):    Call caricaDigit("V", "21", "10")
    Call caricaDigit("W", "22", "22"):    Call caricaDigit("X", "23", "25")
    Call caricaDigit("Y", "24", "24"):    Call caricaDigit("Z", "25", "23")
    Call caricaDigit("0", "0", "1"):    Call caricaDigit("1", "1", "0")
    Call caricaDigit("2", "2", "5"):    Call caricaDigit("3", "3", "7")
    Call caricaDigit("4", "4", "9"):    Call caricaDigit("5", "5", "13")
    Call caricaDigit("6", "6", "15"):    Call caricaDigit("7", "7", "17")
    Call caricaDigit("8", "8", "19"):    Call caricaDigit("9", "9", "21")
    

    ' compongo la tabella dei pesi del Check Digit
    Dim speso As String
    speso = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
    For i = 0 To 25
        peso(i) = Mid$(speso, i + 1, 1)
    Next i

    ' ricavo il CheckDigit
    sCD = Mid$(sCF, 16)
    
    ' carico in un array le restanti cifre del CF
    For i = 0 To 14
        aCF(i) = Mid$(sCF, i + 1, 1)
    Next i

    ' ricavo il peso del CheckDigit
    For i = 0 To 25
        If peso(i) = sCD Then
            nCD = i
            Exit For
        End If
    Next i

    blPari = False
    totale = 0
    For i = 0 To 14
        For l = 0 To 35
            If valoriDigit(l, 0) = aCF(i) Then
                If blPari Then
                    totale = totale + CInt(valoriDigit(l, 1))
                    Debug.Print valoriDigit(l, 0), valoriDigit(l, 1)
                Else
                    totale = totale + CInt(valoriDigit(l, 2))
                    Debug.Print valoriDigit(l, 0), valoriDigit(l, 2)
                End If
                blPari = Not blPari
            End If
        Next l
    Next i
    resto = totale Mod 26
    ValidCF = False
    If resto = nCD Then ValidCF = True
End Function

Private Sub caricaDigit(sItem As String, sPari As String, sDispari As String)
    valoriDigit(dIdx, 0) = sItem
    valoriDigit(dIdx, 1) = sPari
    valoriDigit(dIdx, 2) = sDispari
    dIdx = dIdx + 1
End Sub
La funzione di controllo la richiami così :

codice:
    Dim blCheckCF As Boolean
    blCheckCF = ValidCF("<Il-codice-fiscale-che-vuoi-controllare>")
Ciao,