codice:
pagina = request.serverVariables("PATH_INFO")
submit = request.serverVariables("REQUEST_METHOD") = "POST"
if submit then
nome = request.form("nome")
nn = uCase(nome)
cognome = request.form("cognome")
cc = uCase(cognome)
data = request.form("data")
genere = request.form("genere")
codice = request.form("codice")
codice = uCase(codice)
if len(nome) > 0 and len(cognome) > 0 and isDate(data) and len(codice) = 4 then
nome = uCase(nome)
nome = replace(nome,"'","")
nome = replace(nome," ","")
cognome = uCase(cognome)
cognome = replace(cognome,"'","")
cognome = replace(cognome," ","")
vocali = array("A","E","I","O","U")
dim mesi(12)
mesi(0) = null
mesi(1) = "A"
mesi(2) = "B"
mesi(3) = "C"
mesi(4) = "D"
mesi(5) = "E"
mesi(6) = "H"
mesi(7) = "L"
mesi(8) = "M"
mesi(9) = "P"
mesi(10) = "R"
mesi(11) = "S"
mesi(12) = "T"
function caratteriValidi(stringa)
for i = 1 to len(stringa)
caratteriValidi = false
for j = 65 to 90
if mid(stringa,i,1) = chr(j) then
caratteriValidi = true
exit for
end if
next
if not caratteriValidi then exit for
next
end function
function fixStringa(stringa,salto)
stringaOriginale = stringa
if len(stringa) > 3 then
for i = 0 to uBound(vocali)
stringa = replace(stringa,vocali(i),"")
next
if len(stringa) > 3 then
if salto = true then
' per il nome
stringa = left(stringa,1) & mid(stringa,3,1) & mid(stringa,4,1)
else
' ' per il cognome
stringa = left(stringa,1) & mid(stringa,2,1) & mid(stringa,3,1)
end if
elseIf len(stringa) = 3 then
stringa = stringa
else
for i = 1 to len(stringaOriginale)
for j = 0 to uBound(vocali)
if mid(stringaOriginale,i,1) = vocali(j) then
stringa = stringa & vocali(j)
exit for
end if
next
if len(stringa) = 3 then exit for
next
end if
' nel caso in cui nome o cognome è composto da tre carateri
elseif len(stringa) = 3 then
' elimino tutte le vocali
for i = 0 to uBound(vocali)
stringa = replace(stringa,vocali(i),"")
next
' verifica se i tre caratteri sono tutte consonamnti
'*******************************************************
' una volta eliminate tutte le vocali verifico se la lunghezza della stringa è sempre 3 in questo caso vuyol dire che sono tutte consonanti e le prendo.
if len(stringa) = 3 then
stringa = stringaOriginale
end if
'********************************************************
' Caso in cui le consonanti sono inferiori a 3
'*******************************************************
if len(stringa) <= 2 then
for i = 1 to len(stringaOriginale)
for j = 0 to uBound(vocali)
if mid(stringaOriginale,i,1) = vocali(j) then
stringa = stringa & vocali(j)
exit for
end if
next
if len(stringa) = 3 then exit for
next
end if
'********************************************************
' nel caso in cui nome o cognome è composto da - di tre carateri
elseif len(stringa) < 3 then
lunghezzaStringa = len(stringa)
for x = lunghezzaStringa to 2
stringa = stringa & "X"
next
end if
fixStringa = stringa
end function
function fixData(data,genere)
giorno = datePart("d",data)
if genere = "F" then giorno = giorno + 40
if giorno < 10 then giorno = "0" & giorno
mese = mesi(datePart("m",data))
anno = right(datePart("yyyy",data),2)
fixData = anno & mese & giorno
end function
function carattereControllo(stringa)
if len(stringa) = 15 then
somma = 0
for d = 1 to 15 step 2
carattereTemporaneo = mid(stringa,d,1)
select case carattereTemporaneo
case "0","A"
somma = somma + 1
case "1","B"
somma = somma + 0
case "2","C"
somma = somma + 5
case "3","D"
somma = somma + 7
case "4","E"
somma = somma + 9
case "5","F"
somma = somma + 13
case "6","G"
somma = somma + 15
case "7","H"
somma = somma + 17
case "8","I"
somma = somma + 19
case "9","J"
somma = somma + 21
case "K"
somma = somma + 2
case "L"
somma = somma + 4
case "M"
somma = somma + 18
case "N"
somma = somma + 20
case "O"
somma = somma + 11
case "P"
somma = somma + 3
case "Q"
somma = somma + 6
case "R"
somma = somma + 8
case "S"
somma = somma + 12
case "T"
somma = somma + 14
case "U"
somma = somma + 16
case "V"
somma = somma + 10
case "W"
somma = somma + 22
case "X"
somma = somma + 25
case "Y"
somma = somma + 24
case "Z"
somma = somma + 23
end select
next
for p = 2 to 14 step 2
carattereTemporaneo = mid(stringa,p,1)
select case carattereTemporaneo
case "0","A"
somma = somma + 0
case "1","B"
somma = somma + 1
case "2","C"
somma = somma + 2
case "3","D"
somma = somma + 3
case "4","E"
somma = somma + 4
case "5","F"
somma = somma + 5
case "6","G"
somma = somma + 6
case "7","H"
somma = somma + 7
case "8","I"
somma = somma + 8
case "9","J"
somma = somma + 9
case "K"
somma = somma + 10
case "L"
somma = somma + 11
case "M"
somma = somma + 12
case "N"
somma = somma + 13
case "O"
somma = somma + 14
case "P"
somma = somma + 15
case "Q"
somma = somma + 16
case "R"
somma = somma + 17
case "S"
somma = somma + 18
case "T"
somma = somma + 19
case "U"
somma = somma + 20
case "V"
somma = somma + 21
case "W"
somma = somma + 22
case "X"
somma = somma + 23
case "Y"
somma = somma + 24
case "Z"
somma = somma + 25
end select
next
somma = somma mod 26
select case somma
case 0
carattereControllo = "A"
case 1
carattereControllo = "B"
case 2
carattereControllo = "C"
case 3
carattereControllo = "D"
case 4
carattereControllo = "E"
case 5
carattereControllo = "F"
case 6
carattereControllo = "G"
case 7
carattereControllo = "H"
case 8
carattereControllo = "I"
case 9
carattereControllo = "J"
case 10
carattereControllo = "K"
case 11
carattereControllo = "L"
case 12
carattereControllo = "M"
case 13
carattereControllo = "N"
case 14
carattereControllo = "O"
case 15
carattereControllo = "P"
case 16
carattereControllo = "Q"
case 17
carattereControllo = "R"
case 18
carattereControllo = "S"
case 19
carattereControllo = "T"
case 20
carattereControllo = "U"
case 21
carattereControllo = "V"
case 22
carattereControllo = "W"
case 23
carattereControllo = "X"
case 24
carattereControllo = "Y"
case 25
carattereControllo = "Z"
end select
end if
end function
A = fixStringa(cognome,false)
B = fixStringa(nome,true)
C = fixData(data,genere)
D = carattereControllo(A & B & C & codice)
codiceFiscale = A & B & C & codice & D
else
codiceFiscale = "Dai non validi"
end if
end if