Newsgroup: it.comp.lang.c++
Titolo: Checsum COD.FISCALE

Come funziona il checksum del codice fiscale ??? 
(l'ultimo digit)
esiste una routine in C già fatta ??
Se possibile, risposta per E-MAIL, Grazie !
Marco Grignoli
-- 
s.info.@tread.it

Il Jun 11 22:11 97, Francesco Brollo scrisse:
 FB> Non esiste un algoritmo che ti possa servire, in quanto il carattere di
 FB> controllo è scelto casualmente (almeno è quello che il ministero delle
 FB> imposte vuole farci credere...) ed evita che persone con lo stesso nome e
 FB> data di nascita abbiano lo stesso codice fiscale.
Errato. L'algoritmo e` NOTO e stabilito per legge ! L'unica cosa che non si
puo` fare e` GENERARE un codice fiscale con la certezza che sia corretto. Per
farlo infatti bisognerebbe aver accesso al database di tutti i CF generati.
Ecco la legge relativa appunto al CF. Se interessa ho anche quella relativa
alla Partita Iva.
- -8<- - - - -8<- - - - -C-U-T- -H-E-R-E- - - - - - - -
    Anagrafe tributaria e codice fiscale dei contribuenti
    D.M. 23 dicembre 1976
    Pubblicato nel Supplemento Ordinario alla Gazzetta Ufficiale
    29 dicembre 1976, n. 345.
    Sistemi di codificazione dei soggetti da iscrivere
    all'anagrafe tributaria
                       IL MINISTRO PER LE FINANZE
    Visto il decreto del Presidente della  Repubblica  29  settembre
    1973, n. 605,  concernente  disposizioni  relative  all'anagrafe
    tributaria ed al codice fiscale dei contribuenti;
      Visto l'art. 2, comma primo, del decreto del Presidente  della
    Repubblica 2 novembre 1976, n.  784,  recante  modificazioni  ed
    integrazioni al citato decreto del Presidente  della  Repubblica
    29 settembre 1973, n. 605;
      Considerato che si rende necessario  stabilire  i  sistemi  di
    codificazione  da  adottare  per  la   iscrizione   all'anagrafe
    tributaria delle persone fisiche e dei  soggetti  diversi  dalle
    persone fisiche;
                                Decreta:
      1. Sistemi di codificazione. Ä Le persone fisiche, le  persone
    giuridiche e le societa', associazioni ed altre organizzazione di
    persone o di beni prive di personalita' giuridica  sono  iscritte
    all'anagrafe   tributaria   secondo    appositi    sistemi    di
    codificazione.
      2. Numero di codice fiscale delle persone fisiche. Ä Il numero
    di codice delle persone fisiche e' costituito da una  espressione
    alfanumerica di sedici caratteri.
      I primi quindici caratteri sono indicativi dei dati anagrafici
    di ciascun soggetto secondo l'ordine seguente:
        tre caratteri alfabetici per il cognome;
        tre caratteri alfabetici per il nome;
        due caratteri numerici per l'anno di nascita;
        un carattere alfabetico per il mese di nascita;
        due caratteri numerici per il giorno di nascita ed il sesso;
        quattro caratteri (uno alfabetico e  tre  numerici)  per  il
    comune italiano o per lo Stato estero di nascita.
      Il sedicesimo carattere, alfabetico, ha funzione di controllo.
      3. Caratteri indicativi del cognome. Ä I cognomi che risultano
    composti da piu' parti o comunque separati od interrotti, vengono
    considerati  come  se  fossero  scritti  secondo   un'unica   ed
    ininterrotta successione di caratteri.
      Per i soggetti di  sesso  femminile  coniugati  si  prende  in
    considerazione soltanto il cognome da nubile.
      Se il cognome contiene tre o piu' consonanti, i  tre  caratteri
    da rilevare sono, nell'ordine, la prima, la seconda e  la  terza
    consonante.
      Se il cognome contiente due consonanti,  i  tre  caratteri  da
    rilevare sono, nell'ordine, la prima e la seconda  consonante  e
    la prima vocale.
      Se il  cognome  contiene  una  consonante  e  due  vocali,  si
    rilevano, nell'ordine, quella consonante e quindi la prima e  la
    seconda vocale.
      Se il  cognome  contiene  una  consonante  e  una  vocale,  si
    rilevano la consonante e la vocale,  nell'ordine,  e  si  assume
    come terzo carattere la lettera x (ics).
      Se il cognome  e'  costituito  da  due  sole  vocali,  esse  si
    rilevano, nell'ordine, e  si  assume  come  terzo  carattere  la
    lettera x (ics).
      4. Caratteri indicativi del nome. Ä I nomi doppi,  multipli  o
    comunque composti, vengono considerati come scritti  per  esteso
    in  ogni  loro  parte  e  secondo   un'unica   ed   ininterrotta
    successione di caratteri.
      Se il nome contiene quattro o piu' consonanti, i tre  caratteri
    da rilevare sono, nell'ordine, la prima, la terza  e  la  quarta
    consonante.
      Se il  nome  contiene  tre  consonanti,  i  tre  caratteri  da
    rilevare sono, nell'ordine, la prima,  la  seconda  e  la  terza
    consonante.
      Se il  nome  contiene  due  consonanti,  i  tre  caratteri  da
    rilevare sono, nell'ordine, la prima e la seconda  consonante  e
    la prima vocale.
      Se il nome  contiene  una  consonante  e  due  vocali,  i  tre
    caratteri da rilevare  sono,  nell'ordine  quella  consonante  e
    quindi la prima e la seconda vocale.
      Se il nome contiene una consonante e una vocale,  si  rilevano
    la consonante e la vocale, nell'ordine, e si assume  come  terzo
    carattere la lettera x (ics).
      Se il nome e' costituito da due sole vocali, esse  si  rilevano
    nell'ordine, e si assume  come  terzo  carattere  la  lettera  x
    (ics).
      5. Data, sesso e luogo di nascita. Ä I due caratteri  numerici
    indicativi dell'anno di  nascita  sono,  nell'ordine,  la  cifra
    delle decine e la cifra delle unita' dell'anno stesso.
      Il carattere alfabetico corrispondente al mese  di  nascita  e'
    quello stabilito per ciascun mese nella seguente tabella:
       Gennaio   = A         Maggio    = E         Settembre = P
       Febbraio  = B         Giugno    = H         Ottobre   = R
       Marzo     = C         Luglio    = L         Novembre  = S
       Aprile    = D         Agosto    = M         Dicembre  = T
      I due caratteri numerici indicativi del giorno  di  nascita  e
    del sesso vengono determinati nel modo seguente:
        per  i  soggetti  maschili  il  giorno  di  nascita   figura
    invariato, con i numeri da uno  a  trentuno,  facendo  precedere
    dalla cifra zero i giorni del  mese  dall'uno  al  nove.  Per  i
    soggetti femminili il  giorno  di  nascita  viene  aumentato  di
    quaranta unita', per cui esso figura con i numeri da quarantuno a
    settantuno.
      I  quattro  caratteri  alfanumerici  indicativi   del   comune
    italiano o dello Stato  estero  di  nascita,  costituiti  da  un
    carattere alfabetico  seguito  da  tre  caratteri  numerici,  si
    rilevano rispettivamente dal volume ®Codice dei comuni d'Italia¯
    o dal volume ®Codice degli Stati esteri¯, redatti a  cura  della
    Direzione generale del catasto e dei servizi tecnici erariali.
      All'aggiornamento  dei  volumi  di  cui  al  precedente  comma
    provvede la Direzione generale del catasto e dei servizi tecnici
    erariali.
      6. Persone fisiche con identica  espressione  alfanumerica.  Ä
    Quando l'espressione alfanumerica  relativa  ai  primi  quindici
    carattere del codice risulta comune a due  o  piu'  soggetti,  si
    provvede a differenziarla per ciascuno dei  soggetti  successivi
    al  primo  soggetto  codificato.  A  tal  fine,  si  effettuano,
    nell'ambito dei sette caratteri numerici contenuti  nel  codice,
    sistematiche sostituzioni di uno o piu' cifre a partire da quella
    di destra, con corrispondenti caratteri  alfabetici  secondo  la
    seguente tabella:
                        0  =  L         5  =  R
                        1  =  M         6  =  S
                        2  =  N         7  =  T
                        3  =  P         8  =  U
                        4  =  Q         9  =  V
      7.  Carattere  alfabetico  di  controllo.  Ä   Il   sedicesimo
    carattere ha funzione di controllo della esatta trascrizione dei
    primi  quindici  caratteri.  Esso  viene  determinato  nel  modo
    seguente: ciascuno degli anzidetti quindici caratteri, a seconda
    che occupi posizione  di  ordine  pari  o  posizioni  di  ordine
    dispari, viene convertito in un valore  numerico  in  base  alle
    corrispondenze indicate rispettivamente ai successivi punti 1) e
    2).
      1) Per la conversione dei sette  caratteri  con  posizione  di
    ordine pari:
                  A o zero = zero        O = 14
                     B o 1 = 1           P = 15
                     C o 2 = 2           Q = 16
                     D o 3 = 3           R = 17
                     E o 4 = 4           S = 18
                     F o 5 = 5           T = 19
                     G o 6 = 6           U = 20
                     H o 7 = 7           V = 21
                     I o 8 = 8           W = 22
                     J o 9 = 9           X = 23
                     K     = 10          Y = 24
                     L     = 11          Z = 25
                     M     = 12          Ä    Ä
                     N     = 13          Ä    Ä
      2) Per la conversione degli otto caratteri  con  posizione  di
    ordine dispari:
                     A o zero = 1        O = 11
                     B o 1 =  0          P =  3
                     C o 2 =  5          Q =  6
                     D o 3 =  7          R =  8
                     E o 4 =  9          S = 12
                     F o 5 = 13          T = 14
                     G o 6 = 15          U = 16
                     H o 7 = 17          V = 10
                     I o 8 = 19          W = 22
                     J o 9 = 21          X = 25
                     K     = 2           Y = 24
                     L     = 4           Z = 23
                     M     = 18          Ä    Ä
                     N     = 20          Ä    Ä
      I valori numerici cosi' determinati vengono  addizionati  e  la
    somma si divide per il numero 26.
      Il carattere di controllo si ottiene convertendo il  resto  di
    tale divisione nel carattere alfabetico ad  esso  corrispondente
    nella tabella sottoindicata:
                     zero = A           14 = O
                     1    = B           15 = P
                     2    = C           16 = Q
                     3    = D           17 = R
                     4    = E           18 = S
                     5    = F           19 = T
                     6    = G           20 = U
                     7    = H           21 = V
                     8    = I           22 = W
                     9    = J           23 = X
                    10    = K           24 = Y
                    11    = L           25 = Z
                    12    = M           Ä    Ä
                    13    = N           Ä    Ä
- -8<- - - - -8<- - - - -C-U-T- -H-E-R-E- - - - - - - -
Saluti,
   Diego - No (C) on my words
.. Vieni a fare un giro su Fidonet : ti piacera` !
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ CyberSpace Software Labs Internet Gateway - +39-51-781399
+ User email address:   
D...@bo.dada.it
+ User FidoNet address: 2:332/437.1
+ Disclaimer: The views of this user are strictly his own.

 ...... Se interessa ho anche quella relativa alla Partita Iva.......
Sarei interessato anche a quello della partiva IVA.
Puoi spedirlo al gruppo ad alla mia casella ?
Grazie , Maurizio.
se...@isa.it