codice:
<%
FUNCTION CF_caratteri(cod_f)
Dim carattere
CF_caratteri = False
For carattere = 1 to Len(cod_f)
If NOT IsNumeric( Mid(cod_f, carattere , 1) ) AND (Asc( Mid(cod_f, carattere , 1) ) < 65 OR Asc( Mid(cod_f, carattere , 1) ) > 90) Then
CF_caratteri = True
End If
Next
END FUNCTION
FUNCTION Ctrl_codicefiscale(cf)
CodiceFiscale = Trim(UCASE(cf))
If CF_caratteri(CodiceFiscale) Then
Ctrl_codicefiscale = False
Else
Dim Lettere(35,2)
Dim ConfrontoCarattereControllo(25)
Dim I
Dim J
Dim Carattere
Dim ValorePari
Dim ValoreDispari
Dim SommaCaratteri
Dim PariDispari
Dim Risultato
Dim CarattereControllo
Dim Temp
Dim Test
Lettere(0,0) = "A"
Lettere(0,1) = "0"
Lettere(0,2) = "1"
Lettere(1,0) = "B"
Lettere(1,1) = "1"
Lettere(1,2) = "0"
Lettere(2,0) = "C"
Lettere(2,1) = "2"
Lettere(2,2) = "5"
Lettere(3,0) = "D"
Lettere(3,1) = "3"
Lettere(3,2) = "7"
Lettere(4,0) = "E"
Lettere(4,1) = "4"
Lettere(4,2) = "9"
Lettere(5,0) = "F"
Lettere(5,1) = "5"
Lettere(5,2) = "13"
Lettere(6,0) = "G"
Lettere(6,1) = "6"
Lettere(6,2) = "15"
Lettere(7,0) = "H"
Lettere(7,1) = "7"
Lettere(7,2) = "17"
Lettere(8,0) = "I"
Lettere(8,1) = "8"
Lettere(8,2) = "19"
Lettere(9,0) = "J"
Lettere(9,1) = "9"
Lettere(9,2) = "21"
Lettere(10,0) = "K"
Lettere(10,1) = "10"
Lettere(10,2) = "2"
Lettere(11,0) = "L"
Lettere(11,1) = "11"
Lettere(11,2) = "4"
Lettere(12,0) = "M"
Lettere(12,1) = "12"
Lettere(12,2) = "18"
Lettere(13,0) = "N"
Lettere(13,1) = "13"
Lettere(13,2) = "20"
Lettere(14,0) = "O"
Lettere(14,1) = "14"
Lettere(14,2) = "11"
Lettere(15,0) = "P"
Lettere(15,1) = "15"
Lettere(15,2) = "3"
Lettere(16,0) = "Q"
Lettere(16,1) = "16"
Lettere(16,2) = "6"
Lettere(17,0) = "R"
Lettere(17,1) = "17"
Lettere(17,2) = "8"
Lettere(18,0) = "S"
Lettere(18,1) = "18"
Lettere(18,2) = "12"
Lettere(19,0) = "T"
Lettere(19,1) = "19"
Lettere(19,2) = "14"
Lettere(20,0) = "U"
Lettere(20,1) = "20"
Lettere(20,2) = "16"
Lettere(21,0) = "V"
Lettere(21,1) = "21"
Lettere(21,2) = "10"
Lettere(22,0) = "W"
Lettere(22,1) = "22"
Lettere(22,2) = "22"
Lettere(23,0) = "X"
Lettere(23,1) = "23"
Lettere(23,2) = "25"
Lettere(24,0) = "Y"
Lettere(24,1) = "24"
Lettere(24,2) = "24"
Lettere(25,0) = "Z"
Lettere(25,1) = "25"
Lettere(25,2) = "23"
Lettere(26,0) = "0"
Lettere(26,1) = "0"
Lettere(26,2) = "1"
Lettere(27,0) = "1"
Lettere(27,1) = "1"
Lettere(27,2) = "0"
Lettere(28,0) = "2"
Lettere(28,1) = "2"
Lettere(28,2) = "5"
Lettere(29,0) = "3"
Lettere(29,1) = "3"
Lettere(29,2) = "7"
Lettere(30,0) = "4"
Lettere(30,1) = "4"
Lettere(30,2) = "9"
Lettere(31,0) = "5"
Lettere(31,1) = "5"
Lettere(31,2) = "13"
Lettere(32,0) = "6"
Lettere(32,1) = "6"
Lettere(32,2) = "15"
Lettere(33,0) = "7"
Lettere(33,1) = "7"
Lettere(33,2) = "17"
Lettere(34,0) = "8"
Lettere(34,1) = "8"
Lettere(34,2) = "19"
Lettere(35,0) = "9"
Lettere(35,1) = "9"
Lettere(35,2) = "21"
For I = 0 To 25
ConfrontoCarattereControllo(I) = Chr(65 + I) 'creo in ConfrontoCarattereControllo tutte le lettere maiuscole dalla A (chr(65)) alla Z(chr(90))
Next
Carattere=0
ValorePari=1 'indice della seconda colonna della matrice Lettere
ValoreDispari=2 'indice della terza colonna della matrice Lettere
SommaCaratteri=0
CarattereControllo=Right(CodiceFiscale,1)
for I=1 to len(CodiceFiscale)-1
if (I mod 2)=0 then
PariDispari="P"
else
PariDispari="D"
end if
Temp =mid(CodiceFiscale,I,1)
J=0
do
Test=Lettere(J,Carattere)
J=J+1
loop until Temp=Test
J=J-1
if PariDispari="P" then
SommaCaratteri=SommaCaratteri + CInt(Lettere(J,ValorePari))
else
SommaCaratteri=SommaCaratteri + CInt(Lettere(J,ValoreDispari))
end if
Next
Risultato=SommaCaratteri mod 26
Risultato=ConfrontoCarattereControllo(Risultato)
if Risultato<>CarattereControllo then
Ctrl_codicefiscale = False
else
Ctrl_codicefiscale = True
end if
End If
END FUNCTION
%>