We use this "modulo 11" function, all comments are in french...:
*-----
function modulo_11
*
* Retourne une chaine de validation selon la méthode
* du modulo 11 PTT (Pour BVR avec numéro d'adhérent à 5 positions)
* Syntaxe: modulo_11('12345678901234')
*
parameters l_numero
private all like l_*
* Nettoye le numero
l_numero = alltrim(l_numero)
l_longueur = len(l_numero)
* Calcule la somme des produits
l_facteur = 1
l_produits = 0
for l_pos = l_longueur to 1 step -1
* Corrige le facteur
l_facteur = l_facteur + 1
if l_facteur = 8
l_facteur = 2
endif
* Produits
l_produits = l_produits + (l_facteur * val(substr(l_numero, l_pos, 1)))
endfor
* Reste de la division
l_reste = mod(l_produits, 11)
* Chiffre clé
if l_reste = 0
l_retval = '00'
else
l_retval = transform(11 - l_reste, '@l 99')
endif
return l_retval
*-----
Gensoft Sàrl
Christian Carron