Powerbuilder pour les completement Geeks !

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: 4659
Pépites: 945
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