Clé INSEE : un modulo sur un nombre trop grand !!!

Programmation d'applications complexes
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Clé INSEE : un modulo sur un nombre trop grand !!!

Message par Golfy »

Méthode :
CLE = 97 - NoINSEE % 97

Problème :
NoINSEE contient 13 chiffres, Purebasic ne calcule que sur 4 octets (10 chiffres au mieux).

Question :
Comment contourner ce problème ?
Pourquoi depuis la version 3.90 il n'y a pas d'évolution sur la wishlist de ce site (voir http://www.xs4all.nl/~bluez/datatalk/pure30.htm ) ?

Damned :cry:
Dernière modification par Golfy le lun. 28/févr./2005 18:09, modifié 1 fois.
Oliv
Messages : 2117
Inscription : mer. 21/janv./2004 18:39

Message par Oliv »

Tu as oublié de laisser un espace entre l'url et la parenthèse :wink:
C'est quoi une clef INSEE ? :oops:
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Message par Golfy »

Merci pour l'info, j'ai corrigé le lien.

Un numéro INSEE est un numéro national (France) unique par personne : il comporte 13 chiffres avec une structure simple :
1er chiffre : 1=homme / 2=femme (ça laisse d'autres chiffres pour les clones ;) )
2 chiffres suivants : année de naissance
2 chiffres suivants : mois de naissance
2 chiffres suivants : .... et non, pas le jour mais le département !
etc.

Ensuite il y a une clé pour vérifier si le nombre complet ne comporte pas d'erreur : un simple modulo 97. Voilà !

Bon, sinon j'ai réglé mon problème avec la librairie F64 (j'ai rien trouvé de plus simple :oops: )

Ci-dessous le code complet (tout bête je suppose mais je reprend la programmation depuis le GFABasic de l'ATARI ST alors je suis un peu rouillé... quoiqu'entre temps j'ai fait un peu de RapidQ Basic sur PC aussi) :

Code : Tout sélectionner

; Calculer la clé d'un numéroINSEE : 
; cle = 97 - (NoINSEE modulo 97)
;
; Utilisation de la librairie F64 car le numéro INSEE dépasse la capacité d'un double (4 oct)
;

;- Window Constants
Enumeration
  #Window_0
  #INSEE
  #cle
  #Calculer
  #Text_0
EndEnumeration

numero_insee.double
modulo.double

Procedure Open_Window_0()
  If OpenWindow(#Window_0, 343, 133, 282, 30,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "Clé INSEE")
    If CreateGadgetList(WindowID())
      StringGadget(#INSEE, 60, 5, 110, 20, "1730107019050",#PB_String_Numeric)
      StringGadget(#cle, 240, 5, 35, 20, "0",#PB_String_Numeric | #PB_String_ReadOnly)
      ButtonGadget(#Calculer, 175, 5, 55, 20, "Calculer")
      TextGadget(#Text_0, 5, 10, 55, 15, "N° Insee")
    EndIf
  EndIf
EndProcedure

Open_Window_0()
Repeat
  EventID.l = WaitWindowEvent()
  If EventID = #PB_Event_CloseWindow  ; If the user has pressed on the close button
    Quit = 1
  EndIf
  If EventID = #PB_Event_Gadget
    If EventGadgetID() = #Calculer
      If Len(GetGadgetText(#INSEE)) = 13
        F64_Val(numero_insee.double, GetGadgetText(#INSEE))
        F64_Val(modulo.double, "97")
        F64_Mod(numero_insee.double, modulo.double)
        c = F64_toInt(numero_insee.double)
        c = 97 - c
        SetGadgetText(#cle, Str(c))
      EndIf
    EndIf
  EndIf
Until Quit = 1
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

Un numéro INSEE est un numéro national (France) unique par personne
oui et sais tu que la CNIL a stipulé depuis déjà plusieurs années que toute utilisation dans un programme informatique de ce numéro est interdit.

Je suis incapable de vous trouver le texte mais mon prof d'info à l'époque nous avait mis en garde à ce sujet. :roll: m'enfin ya pas de mal là...
Image
Frenchy Pilou
Messages : 2194
Inscription : jeu. 27/janv./2005 19:07

Message par Frenchy Pilou »

On en cause dans ce post de ces fameux décrets et de leurs contraintes juridiques :roll:
Est beau ce qui plaît sans concept :)
Speedy Galerie
Golfy
Messages : 423
Inscription : mer. 25/août/2004 15:14
Localisation : Grenoble
Contact :

Message par Golfy »

Frenchy Pilou -> ton document me montre que je ne sais pas traiter les Corses :oops: je vais me faire dynamiter :lol:

Flype -> je ne savais pas... mais mon programme ne stockant, ni n'émettant d'information sur ce numéro, je crois qu'il dois pouvoir être publiable... :roll:
Mais je vérifierai plus en détail :)
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message par Flype »

3.2.Contraintes juridiques
L'utilisation du NIR dans les applications informatiques est soumise à de fortes contraintes juridiques, dont (la liste n'étant pas exhaustive) :

la loi n° 78-17 du 6 janvier 1978 relative à l'informatique, aux fichiers et aux libertés dont l'article 18 subordonne l'utilisation du NIR à une autorisation par décret en Conseil d'État pris après avis de la CNIL. L'utilisation du NIR sans cette autorisation peut être sanctionnée pénalement d'une peine de 5 ans d'emprisonnement et 2 000 000 francs d'amende.
Le décret n° 82-103 du 22 janvier 1982 modifié précise les modalités de constitution par l'INSEE du RNIPP et du NIR et leurs conditions d'utilisation.
Le décret n° 85-420 du 3 avril 1985 donne la liste des organismes liés à la sécurité sociale et aux caisses de retraites pouvant utiliser le NIR et dans quelles conditions.
Le décret n° 91-1404 du 27 décembre 1991 autorise employeurs publics et privés "à utiliser le NIR dans les traitements automatisés de données relatives à la paie et à la gestion de leur personnel pour la réalisation d'opérations résultant de dispositions légales ou réglementaires et de conventions collectives concernant les déclarations, les calculs de cotisations et de versements destinés aux organismes mentionnés à l'article 1er du décret du 3 avril 1985 susvisé".
La délibération n° 83-058 du 29 novembre 1983 de la CNIL recommande "que l'emploi du numéro d'inscription au répertoire comme identifiant des personnes dans les fichiers, ne soit ni systématique, ni généralisé" et "qu'en conséquence, les responsables de la conception d'applications informatiques se dotent d'identifiants diversifiés et adaptés à leurs besoins propres".
le decret pointé par French Pilou m'amène en lisant mieux à cet article...
Image
Répondre