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

)
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