PROCEDURE Controle( LOCAL pIban est une chaîne )
Ind est un entier
pIban = Majuscule( pIban )
pIban = Remplace(pIban, "-","")
pIban = Remplace(pIban, " ", "" )
mPays est une chaine =pIban[[ A 2 ]]
mPaysest une chaine = pIban[[ A 2 ]]
mCle est une chaine = pIban[[ 3 A 4 ]]
mBban est une chaine = pIban[[ 5 A 34 ]]
mIbanWork est une chaine = SansEspace(mBban) + mPays + "00"
//On remplace les lettres par 2 chiffres selon la table de conversion de l'IBAN
POUR Ind = 1 A 26
mIbanWork = Remplace(mIbanWork,Caract(64+Ind),Ind+9)
FIN
//on boucle tant que le nombre de chiffres de l'iban est strictement superieur a la données de calcul
sBuff est une chaîne = SansEspace(:m_IbanWork)
varCalc est une chaîne
tailleVarCalc est un entier = 13
varClac2 est une chaîne fixe de 13
TANTQUE Taille( sBuff ) > tailleVarCalc
//On récupère la portion de chiffre maximum
varCalc = Gauche(sBuff,tailleVarCalc)
//On supprime la portion récupéré de la zone de travail
sBuff = sBuff[[ Taille(varCalc)+1 A ]]
//On calcul le modulo 97 d'une portion de l'IBAN
varClac2 =(PartieEntière(Val(varCalc)/97))
varCalc = Val(varCalc) - (Val(varClac2) *97)
//On ajoute ce modulo 97 devant la donnée restant à traiter( qu'il y ait 1 ou 2 chiffre(s) est égal
sBuff = varCalc + sBuff
FIN
//On récupère la valeur restante en numérique
varCalc = Val(sBuff)
//On calcul le modulo 97 et on soustrait le reste de 98
varClac2 = PartieEntière(Val(varCalc)/97)
varCalc = 98 - (Val(varCalc) - (Val(varClac2) * 97))
//Recadrage sur 2 chiffre toujours significatifs
cleCalc est une chaîne fixe sur 2
cleCalc = Droite(varCalc,2)
cleCalc = Remplace(cleCalc," ","0")
RENVOYER cleCalc
Cette contribution était de : http://old.wdforge.org/newbb/viewtopic.php?forum=17&topic_id=6372&post_id=25193