REBOL [ Sujet: "Calcul de la clé de contrôle du Numéro de Sécurité Sociale" Auteur: "RebolZone" Version: 1.0.0 Commentaires: "Nécessite Rebol/View" ] calculCleNumSecu: func [ "Calcule la clé du Numéro de Secu" pNumSecu [string!]] [ ;*************************************************** ; Rôle : Calcul la clé du NIR ; Param : No sécu ; Retour : La clé ou -1 ou -2 si erreur ; Commentaires : ;*************************************************** ; ; Test si bonne longueur lg: length? pNumSecu if lg <> 13 [ return -1 ] ; Test si valeur numérique if error? try [num: to-decimal pNumSecu] [ return -2 ] numsecuPart1: to-integer copy/part pNumSecu 9 div97: to-integer numsecuPart1 / 97 r1: numsecuPart1 - (97 * div97) numsecuPart2: to-integer copy/part at pNumSecu 10 4 numTmp: join to-string r1 to-string numsecuPart2 numTmp: to-integer numTmp div97: to-integer numTmp / 97 r2: to-integer numTmp - (97 * div97) pcle: 97 - r2 return pcle ] ;Création de la fenêtre wFen1: layout [ ;Affichage du fond backdrop effect[color gradient 38.102.130 177.223.247] ;Affichage logo image http://rebolzone.free.fr/reb/rbzonelogomin.jpg ;Saisie du No de sécu text 255.255.255 "Entrez le No de Sécurité Social sans la clé : " txtnosecu: field 300x20 text 255.255.255 "Clé calculée : " txtcle: text 255.255.255 ".........." button "Calculer Clé" [ ;Appel de la fonction de calcul de clé cle: calculCleNumSecu txtnosecu/text switch/default cle [ -1 [alert "Le numéro n'a pas la bonne longueur (13)"] -2 [alert "Valeur non numérique"] ] [txtcle/text: to-string cle show txtcle] ] button "Fermer" [ quit ] ] ;Affichage de la fenêtre view/title wFen1 "RebolZone : Calcul de clé"