Répétez apres moi :J'aime PBAdonf. J'aime PBAdonf. J'aime PBAdonf.

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 23-12-2006 20:35:36

frichmout  
Membre Geek
Date d'inscription: 13-12-2006
Messages: 54
Pépites: 260
Banque: 0

[RESOLU] calcul clé rib

L'un de vous aurait-il une fonction qui vérifie/calcule la clé rib (modulo 97).
J'ai fait ça dans le temps en clipper mais en ce temsp là, y'avait pas les forums !! ;-)

Hors ligne

 

#2 26-12-2006 08:20:56

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] calcul clé rib

Bonjour,

l'explication du calcul de la clé est détaillée sur : http://fr.wikipedia.org/wiki/Cl%C3%A9_RIB


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#3 04-01-2007 21:04:55

pick ouic  
La bourse ou la vie ^^
Award: gearotter
Lieu: Massy-Verrières
Date d'inscription: 29-05-2006
Messages: 4658
Pépites: 942
Banque: 2,147,483,647
Site web

Re: [RESOLU] calcul clé rib

j'avais ca qui trainait sur mon ordi...

une fonction globale qui permet de verifier la clé rib modulo97

Code: pb

$PBExportHeader$clerib.srf
$PBExportComments$Verification cle RIB
global type clerib from function_object
end type

forward prototypes
global function int clerib (string banque, string guichet, string compte)
end prototypes

global function int clerib (string banque, string guichet, string compte);string c1="",c2="",convert="1234567890ABCDEFGHI@JKLMNOPQR@@STUVWXYZ"
int i
long b,g,lc,rc,m,r

if IsNull(banque) or IsNull(guichet) or IsNull(compte) then
//  messagebox("ERREUR!","Mauvais format!")
  return -1
end if
if len(banque) <> 5 or len(guichet) <> 5 or len(compte) <> 11 then
//  messagebox("ERREUR!","Mauvais format!")
  return -1
end if
if not isnumber(banque) or not isnumber(guichet) then
//  messagebox("ERREUR!","Mauvais format!")
  return -1
end if
c1 = upper(compte)
if pos(c1,"@") <> 0 then
//  messagebox("ERREUR!","Mauvais format!")
  return -1
end if
for i = 1 to 11
  c2 = c2+char(asc("0")+mod(pos(convert,mid(c1,i,1)),10))
next
if not isnumber(c2) then
//  messagebox("ERREUR!","Mauvais format!")
  return -1
end if

c1=mid(c2,1,6)
c2=mid(c2,7,5)
b=long(banque)
g=long(guichet)
lc=long(c1)
rc=long(c2)
m=mod( ( (mod(b,97)*62) + (mod(g,97)*5) + (mod(lc,97)*90) + mod(rc,97) ),97)
m=mod(m*3,97)
r=mod((97 - m),97)

// cas particulier du reste = à 0
if r = 0 then
  r = 97
end if

return r

end function

Connaitre son ignorance est une grande part de la connaissance.
http://animegifs.free.fr/anime/mazinger/mazinger.gif

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22