% ' By Atari (http://www.dadamax.net) - 10 Settembre 2003
Response.Buffer = True
Response.Expires = 0
If Request.Form("isSubmit") = "true" Then
' Cognome
CF_Cognome = ""
Cognome = Replace(UCase(Request.Form("cf_cognome")), " ", "")
Cognome = Replace(Replace(Replace(Cognome, """", ""), "'", ""), ".", "")
Consonanti = "[b-d]|[f-h]|[j-n]|[p-t]|[v-z]"
Vocali = "a|e|i|o|u"
Set RE_Consonanti = New RegExp
RE_Consonanti.Global = True
RE_Consonanti.IgnoreCase = True
RE_Consonanti.Pattern = Consonanti
Set Matches = RE_Consonanti.Execute(Cognome)
For Each Match in Matches
CF_Cognome = CF_Cognome & Match.Value
Next
If Len(CF_Cognome) < 3 Then
Set RE_Vocali = New RegExp
RE_Vocali.Global = True
RE_Vocali.IgnoreCase = True
RE_Vocali.Pattern = Vocali
Set Matches = RE_Vocali.Execute(Cognome)
For Each Match in Matches
CF_Cognome = CF_Cognome & Match.Value
Next
End If
Set RE_Consonanti = Nothing
Set RE_Vocali = Nothing
If Len(CF_Cognome) < 3 Then
CF_Cognome = CF_Cognome & String(3, "X")
End If
Codice_Fiscale = Left(CF_Cognome, 3)
' Nome (ris. 3 caratteri)
CF_Nome = ""
' Pulisce il nome ricevuto [via spazi, apici, minuscole -> maiuscole]
Nome = Replace(UCase(Request.Form("cf_nome")), " ", "")
Nome = Replace(Replace(Replace(Nome, """", ""), "'", ""), ".", "")
' Cerca tutte le consonanti presenti nel nome ricevuto
Set RE_Consonanti = New RegExp
RE_Consonanti.Global = True
RE_Consonanti.IgnoreCase = True
RE_Consonanti.Pattern = Consonanti
Set Matches = RE_Consonanti.Execute(Nome)
For Each Match in Matches
CF_Nome = CF_Nome & Match.Value
Next
' Scarta la seconda consonante dal nome (se il nome possiede piu' di 3 consonanti)
If Len(CF_Nome) > 3 Then
CF_Nome = Left(CF_nome, 1) & Mid(CF_Nome, 3, 2)
End If
' Se il nome ricevuto non possiede almeno tre consonanti, aggiunge alla stringa
' le vocali presenti
If Len(CF_Nome) < 3 Then
Set RE_Vocali = New RegExp
RE_Vocali.Global = True
RE_Vocali.IgnoreCase = True
RE_Vocali.Pattern = Vocali
Set Matches = RE_Vocali.Execute(Nome)
For Each Match in Matches
CF_Nome = CF_Nome & Match.Value
Next
End If
Set RE_Consonanti = Nothing
Set RE_Vocali = Nothing
' Per i nomi con meno di 3 caratteri, aggiungi una 'X' fino ad avere una stringa di 3 caratteri.
' Nello specifico vengono aggiunte sempre 3 'X', dato che alla fine il nome inserito nel codice
' fiscale viene troncato a 3 caratteri
If Len(CF_Nome) < 3 Then
CF_Nome = CF_Nome & String(3, "X")
End If
' Concatena i primi 3 caratteri del nome codificato alla stringa del codice_fiscale
Codice_Fiscale = Codice_Fiscale & Left(CF_Nome, 3)
' Anno
Codice_Fiscale = Codice_Fiscale & Right(Request.Form("Anno"), 2)
' Mese
Select Case Request.Form("mese")
Case 1
Mese = "A"
Case 2
Mese = "B"
Case 3
Mese = "C"
Case 4
Mese = "D"
Case 5
Mese = "E"
Case 6
Mese = "H"
Case 7
Mese = "L"
Case 8
Mese = "M"
Case 9
Mese = "P"
Case 10
Mese = "R"
Case 11
Mese = "S"
Case 12
Mese = "T"
End Select
Codice_Fiscale = Codice_Fiscale & Mese
' Giorno
CF_Giorno = Request.Form("giorno")
If(Request.Form("sesso") = "F") Then _
CF_Giorno = CF_Giorno + 40
If(Len(CF_Giorno) < 2) Then _
CF_Giorno = "0" & CF_Giorno
Codice_Fiscale = Codice_Fiscale & CF_Giorno
' Codice comune
Codice_Fiscale = Codice_Fiscale & Request.Form("comune")
' Carattere di controllo
Set Controllo = New RegExp
With Controllo
.Global = True
.IgnoreCase = True
.Pattern = "[A-Z]|[0-9]"
End With
Set Matches = Controllo.Execute(Codice_Fiscale)
For Each Match In Matches
vMod = Match.FirstIndex Mod 2
' Sa di molto palloso quest'ultimo passaggio...
If vMod = 0 Then
' Dispari
Select Case CStr(Match.Value)
Case "A"
Incremento = Incremento + 1
Case "0"
Incremento = Incremento + 1
Case "B"
' Incremento di 0
Case "1"
' Incremento di 0
Case "C"
Incremento = Incremento + 5
Case "2"
Incremento = Incremento + 5
Case "D"
Incremento = Incremento + 7
Case "3"
Incremento = Incremento + 7
Case "E"
Incremento = Incremento + 9
Case "4"
Incremento = Incremento + 9
Case "F"
Incremento = Incremento + 13
Case "5"
Incremento = Incremento + 13
Case "G"
Incremento = Incremento + 15
Case "6"
Incremento = Incremento + 15
Case "H"
Incremento = Incremento + 17
Case "7"
Incremento = Incremento + 17
Case "I"
Incremento = Incremento + 19
Case "8"
Incremento = Incremento + 19
Case "J"
Incremento = Incremento + 21
Case "9"
Incremento = Incremento + 21
Case "K"
Incremento = Incremento + 2
Case "L"
Incremento = Incremento + 4
Case "M"
Incremento = Incremento + 18
Case "N"
Incremento = Incremento + 20
Case "O"
Incremento = Incremento + 11
Case "P"
Incremento = Incremento + 3
Case "Q"
Incremento = Incremento + 6
Case "R"
Incremento = Incremento + 8
Case "S"
Incremento = Incremento + 12
Case "T"
Incremento = Incremento + 14
Case "U"
Incremento = Incremento + 16
Case "V"
Incremento = Incremento + 10
Case "W"
Incremento = Incremento + 22
Case "X"
Incremento = Incremento + 25
Case "Y"
Incremento = Incremento + 24
Case "Z"
Incremento = Incremento + 23
Case Else
Response.Write("Uhmmmm...")
End Select
Else
' Pari
Select Case Cstr(Match.Value)
Case "A"
' Incremento di 0
Case "0"
' Incremento di 0
Case "B"
Incremento = Incremento + 1
Case "1"
Incremento = Incremento + 1
Case "C"
Incremento = Incremento + 2
Case "2"
Incremento = Incremento + 2
Case "D"
Incremento = Incremento + 3
Case "3"
Incremento = Incremento + 3
Case "E"
Incremento = Incremento + 4
Case "4"
Incremento = Incremento + 4
Case "F"
Incremento = Incremento + 5
Case "5"
Incremento = Incremento + 5
Case "G"
Incremento = Incremento + 6
Case "6"
Incremento = Incremento + 6
Case "H"
Incremento = Incremento + 7
Case "7"
Incremento = Incremento + 7
Case "I"
Incremento = Incremento + 8
Case "8"
Incremento = Incremento + 8
Case "J"
Incremento = Incremento + 9
Case "9"
Incremento = Incremento + 9
Case "K"
Incremento = Incremento + 10
Case "L"
Incremento = Incremento + 11
Case "M"
Incremento = Incremento + 12
Case "N"
Incremento = Incremento + 13
Case "O"
Incremento = Incremento + 14
Case "P"
Incremento = Incremento + 15
Case "Q"
Incremento = Incremento + 16
Case "R"
Incremento = Incremento + 17
Case "S"
Incremento = Incremento + 18
Case "T"
Incremento = Incremento + 19
Case "U"
Incremento = Incremento + 20
Case "V"
Incremento = Incremento + 21
Case "W"
Incremento = Incremento + 22
Case "X"
Incremento = Incremento + 23
Case "Y"
Incremento = Incremento + 24
Case "Z"
Incremento = Incremento + 25
Case Else
Response.Write("Uhmmmm...")
End Select
End If
Next
Set Controllo = Nothing
Select Case Incremento Mod 26
Case 0
Carattere = "A"
Case 1
Carattere = "B"
Case 2
Carattere = "C"
Case 3
Carattere = "D"
Case 4
Carattere = "E"
Case 5
Carattere = "F"
Case 6
Carattere = "G"
Case 7
Carattere = "H"
Case 8
Carattere = "I"
Case 9
Carattere = "J"
Case 10
Carattere = "K"
Case 11
Carattere = "L"
Case 12
Carattere = "M"
Case 13
Carattere = "N"
Case 14
Carattere = "O"
Case 15
Carattere = "P"
Case 16
Carattere = "Q"
Case 17
Carattere = "R"
Case 18
Carattere = "S"
Case 19
Carattere = "T"
Case 20
Carattere = "U"
Case 21
Carattere = "V"
Case 22
Carattere = "W"
Case 23
Carattere = "X"
Case 24
Carattere = "Y"
Case 25
Carattere = "Z"
Case Else
Response.Write("ERRORE (resto) : " & Incremento Mod 26 & "
")
End Select
Codice_Fiscale = Codice_Fiscale & Carattere
End If %>