' ' 2003-05-28 Carlo Marchesini ' function ControllaCF(cf) if cf = "" then controllaCF = "" else '------------------------------------------ if Len(cf) <> 16 then controllaCF = "La lunghezza del codice fiscale non è " &_ "corretta: il codice fiscale dovrebbe essere " &_ "lungo esattamente 16 caratteri." else '-------------------------------------------------- cf = Ucase(cf) Dim objER, result ' istanzia l'oggetto REGULAR EXPRESSION Set objER = New RegExp ' cerca il pattern in tutta la stringa di input objER.Global = True ' nessuna differenza fra maiuscole/minuscole objER.IgnoreCase = True ''''''''''''''''''''''''''''''''''''''''''''''''' objER.Pattern = "^[\w]+$" ''''''''''''''''''''''''''''''''''''''''''''''''' ' verifica la corrispondenza con il pattern result = objER.Test(cf) 'response.write(result) if result <> true then controllaCF = "Il codice fiscale contiene dei caratteri non validi:" &_ "i soli caratteri validi sono le lettere e le cifre." Set objER = Nothing else '----------------------------------------------------------- Dim s, c, s1, s2, i s1 = 0 i = 0 '''''''''''''''''''''''''''''''''''''' 'prima versione - meno elegante ' for i = 1 to 14 ' i = i + 1 '''''''''''''''''''''''''''''''''''''' for i = 2 to 14 step 2 c = Mid(cf, i, 1 ) if( "0" <= c AND c <= "9" ) then s1 = s1 + Asc(c) - Asc("0") '''''''''''''''''''''''' 'controlla il loop ' response.write("c= "& c & " s1= "& s1 &"
") '''''''''''''''''''''''' else s1 = s1 + Asc(c) - Asc("A") '''''''''''''''''''''''' 'controlla il loop ' response.write("c= "& c & " s1= "& s1 &"
") '''''''''''''''''''''''' end if next ''''''''''''''''''''' 'controlla la somma delle cifre pari ' response.write("s1="&s1&"
") '''''''''''''''''''''' s2 = 0 ''''''''''''''''''''''''''''''' 'prima versione - meno elegante ' for i = 0 to 14 ' i = i + 1 ''''''''''''''''''''''''''''' for i = 1 to 15 step 2 c = Mid(cf, i, 1 ) select Case (c) case "0" s2 = s2 + 1 case "1" s2 = s2 + 0 case "2" s2 = s2 + 5 case "3" s2= s2 + 7 case "4" s2 = s2 + 9 case "5" s2 = s2 + 13 case "6" s2 = s2 + 15 case "7" s2 = s2 + 17 case "8" s2 = s2 + 19 case "9" s2 = s2 + 21 case "A" s2 = s2 + 1 case "B" s2 = s2 + 0 case "C" s2 = s2 + 5 case "D" s2 = s2 + 7 case "E" s2 = s2 + 9 case "F" s2 = s2 + 13 case "G" s2 = s2 + 15 case "H" s2 = s2 + 17 case "I" s2 = s2 + 19 case "J" s2 = s2 + 21 case "K" s2 = s2 + 2 case "L" s2 = s2 + 4 case "M" s2 = s2 + 18 case "N" s2 = s2 + 20 case "O" s2 = s2 + 11 case "P" s2 = s2 + 3 case "Q" s2 = s2 + 6 case "R" s2 = s2 + 8 case "S" s2 = s2 + 12 case "T" s2 = s2 + 14 case "U" s2 = s2 + 16 case "V" s2 = s2 + 10 case "W" s2 = s2 + 22 case "X" s2 = s2 + 25 case "Y" s2 = s2 + 24 case "Z" s2 = s2 + 23 End select '''''''''''''''''''''''' 'controlla il loop ' response.write("c= "& c & " s2= "& s2 &"
") '''''''''''''''''''''''' next s= s1+s2 '''''''''''''''''''''''' 'controlla la somma dispari ' response.write("s2="&s2&"
") 'controlla il totale ' response.write(s&"
") '''''''''''''''''''''''' if chr((s Mod 26) + Asc("A")) <> Mid(cf, 16, 1) then controllaCF = "Il codice fiscale non è corretto: " &_ "il codice di controllo non corrisponde." else controllaCF = "" end if '----------------------------------------------------------- end if '-------------------------------------------------- end if '------------------------------------------ end if end function