Funktion VESR10 in Clipper
Verfahren Modulo10 rekursiv für Prüfzifferberechnung bei Postcheckkonto-Nummern und ESR
FUNCTION VESR10(vesr10text)
LOCAL prfziff := {"0","9","8","7","6","5","4","3","2","1"}
LOCAL reihe := {"","","","","","","","","",""}
LOCAL retwert := ""
LOCAL spalte := 0
LOCAL stelle := 1
LOCAL txt := ""
LOCAL uebertrag := 0
LOCAL ziffer := ""
txt=UPPER(vesr10text)
reihe[ 1]="0946827135"
reihe[ 2]="9468271350"
reihe[ 3]="4682713509"
reihe[ 4]="6827135094"
reihe[ 5]="8271350946"
reihe[ 6]="2713509468"
reihe[ 7]="7135094682"
reihe[ 8]="1350946827"
reihe[ 9]="3509468271"
reihe[10]="5094682713"
DO WHILE stelle<(LEN(txt)+0.5)
ziffer=SUBSTR(txt,stelle,1)
IF ziffer$"0123456789"
spalte=INT(VAL(ziffer)+1.5)
uebertrag=VAL(SUBSTR(reihe[INT(uebertrag+1.5)],spalte,1))
ENDIF
stelle=stelle+1
ENDDO
retwert=prfziff[INT(uebertrag+1.5)]
RETURN(retwert)