(ps. penso che la cosa potrebbe essere utile a moltissimi)
> Qualcuno mi potrebbe cortesemente suggerire dove trovare routine per il
> controllo della validita' del codice fiscale e della partita iva? Anche in
> basic, pascal, cobol, c, .. qualunque linguaggio insomma.
Mi hanno giust'appunto richiesto un controllo del checksum
da aggiungere al controllo "quasiformale" che già facevo...
Se trovi qualcosa mi farebbe comodo... Anche uno schema, un
diagramma a blocchi, un disegno... ;-)
--
____
__/\/ando
=========================================================
Per favore, eliminare tutti gli underscore dall'indirizzo
e-mail prima di rispondere (misura anti-spam).
=========================================================
>|Zortek,
>|
>|> Qualcuno mi potrebbe cortesemente suggerire dove trovare routine per il
>|> controllo della validita' del codice fiscale e della partita iva? Anche in
>|> basic, pascal, cobol, c, .. qualunque linguaggio insomma.
>|
>|Mi hanno giust'appunto richiesto un controllo del checksum
>|da aggiungere al controllo "quasiformale" che già facevo...
>|Se trovi qualcosa mi farebbe comodo... Anche uno schema, un
>|diagramma a blocchi, un disegno... ;-)
>|--
questo l'algoritmo del CF:
--------------------------
c=consonanti v=vocali
- COGNOME 3 Byte
a) Se >3c : 1c,2c,3c
b) Se =2c : 1c,2c,1v
c) Se =1c >=2v : 1c,1v,2v
d) Se =1c 1v : 1c,1v,X
e) Se =2v : 1v,2v,X
I cognomi doppi vanno considerati una parola intera (es DE VECCHI = DEVECCHI)
- NOME (3 byte)
a) Se >4c : 1c,3c,4c
b) Se =3c : 1c,2c,3c
c) Se =2c : 1c,2c,1v
d) se =1c >2v : 1c,1v,2v
e) Se =1c 1v : 1c,1v,X
f) Se =2v : 1v,2v,X
Il nome va considerato come un'unica parola (es Rita Rachele = RITARACHELE =
RRC)
- Anno di NASCITA (2 byte)
Primo Byte : decine
Secondo Byte : unita
- MESE di Nascita 1 Byte
1 2 3 4 5 6 7 8 9 10 11 12
A B C D E H L M P R S T
- Giorno di nascita (2 Byte)
Primo Byte : decine
Secondoo Byte : unita
Per le Femmine + 40 (es. 15 => 55)
COMUNE DI NASCITA (4 Byte)
1 Lettera + 3 cifre secondo una tabella codici comuni : quando mi dai l'OK te lo
passo via e-mail
NUMERO di controllo (1 Byte)
E` una specie di CRC
Somma secondo la Tabella A per le posizioni pari, Tabella B per le posizioni
dispari, poi fai MOD 26: la lettera e` quella corrispondente a quel numero
sempre secondo la tabella A.
TABELLA A TABELLA B
A o 0 => 0 => 1
B o 1 => 1 => 0
C o 2 => 2 => 5
D o 3 => 3 => 7
E o 4 => 4 => 9
F o 5 => 5 => 13
G o 6 => 6 => 15
H o 7 => 7 => 17
I o 8 => 8 => 19
J o 9 => 9 => 21
K => 10 => 2
L => 11 => 4
M => 12 => 18
N => 13 => 20
O => 14 => 11
P => 15 => 3
Q => 16 => 6
R => 17 => 8
S => 18 => 12
T => 19 => 14
U => 20 => 16
V => 21 => 10
W => 22 => 22
X => 23 => 25
Y => 24 => 24
Z => 25 => 23
-----------------------------
e questo quello della P.Iva in VB
Public Function chkPI(parPassed As String) As Integer
Dim i As Integer, tNum As Integer, t1 As Integer
Dim t2 As Integer, t3 As String, t5 As Integer, cin As String
tNum = 0
For i = 1 To 10
t1 = CInt(Mid(parPassed, i, 1))
If i Mod 2 > 0 Then
tNum = tNum + t1
Else
t2 = t1 * 2
If t2 < 10 Then
tNum = tNum + t2
Else
t3 = CStr(t2)
tNum = tNum + CInt(Mid(t3, 1, 1)) + CInt(Mid(t3, 2, 1))
End If
End If
Next
If tNum / 10 <> tNum \ 10 Then
t5 = (tNum \ 10 + 1) * 10 - tNum
Else
t5 = 0
End If
cin = Mid(CStr(t5), 1, 1)
If cin = Mid(parPassed, 11, 1) Then
chkPI = -1
Else
chkPI = cin
End If
Peppo
ICQ : UIN 5709387
Fidonet: 2:331/301.45
Ludonet: 222:400/1.26
> questo l'algoritmo del CF:
<SNIP>
> NUMERO di controllo (1 Byte)
> E` una specie di CRC
> Somma secondo la Tabella A per le posizioni pari, Tabella B per le posizioni
> dispari, poi fai MOD 26: la lettera e` quella corrispondente a quel numero
> sempre secondo la tabella A.
<SNIP>
Grazie Peppo! In effetti è quest'ultima parte che mi
interessava; posso fare solo un controllo formale perché non
ho i dati anagrafici (data di nascita, sesso, ecc.). Mi ero
già arrangiato con una libreria inviatami da Gus, però ora
so come funziona.
Grazie ancora.
>Zortek,
>
>> Qualcuno mi potrebbe cortesemente suggerire dove trovare routine per il
>> controllo della validita' del codice fiscale e della partita iva? Anche in
>> basic, pascal, cobol, c, .. qualunque linguaggio insomma.
>
>Mi hanno giust'appunto richiesto un controllo del checksum
>da aggiungere al controllo "quasiformale" che già facevo...
>Se trovi qualcosa mi farebbe comodo... Anche uno schema, un
>diagramma a blocchi, un disegno... ;-)
C'e' un tread del 15/01/98 con titolo :'Carattere di controllo partita iva'
con tanto di sorgenti. Se non bastano posso postare la mia che e'
ridotta male perche' e' stata (stra)passata da QBasic a Clipper ed infine
in OP, pero' e' gia' stata collaudata da uno studio commerciale.
Per il codice fiscale credo se ne possa trovare una gratis su
www.softres.com.
Ciao,
Eugenio Belli.
-
Sicuramente e' utilissima...
a me servirebbe un qualche algoritmo per controllare la validità dei
numeri di partita iva esteri.. nessuno ha qualche cosa?
Grazie
Stefano
>Sicuramente e' utilissima...
>a me servirebbe un qualche algoritmo per controllare la validità dei
>numeri di partita iva esteri.. nessuno ha qualche cosa?
So di sicuro che alcune p.i. cee hanno 12 caratteri (non tutti numerici).
Non so neppure se hanno il carattere di controllo come noi (che poi non
serve quasi a nulla).
Ciao Uberto
>|
>|Grazie Peppo! In effetti è quest'ultima parte che mi
>|interessava; posso fare solo un controllo formale perché non
>|ho i dati anagrafici (data di nascita, sesso, ecc.). Mi ero
>|già arrangiato con una libreria inviatami da Gus, però ora
>|so come funziona.
che` e` l'unica che serve realmente ;-)
Tenete presente che sebbene avendo gli elementi, si possa cosi determinare il
codice fiscale, non si avra` mai la certezza che sia quello giusto attribuito
alla persona.
Siccome non e` escluso che si possano generare CF uguali (soprattutto nelle
grandi citta`) ci sono ulteriori criteri di aggiustamento per renderlo univoco.