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)

 

© 2004 EDV-Beratung L. Heitz