|
|
IBAN prüfen- #24264 in section [743425] |
Sec: |
(1) Allgemeines |
Von: |
Harro Schippan |
An: |
Christian Isberner |
Am/Um: |
28.01.2022 10:40:54 gelesen |
|
|
Hallo Christian, es hat mir keine Ruhe gelassen. Habe die Prüfziffer jetzt mit einer kleinen Routine selbst errechnet. Sind ja nur wenige Zeilen. Danke für Deine Antwort. Viele Grüße Harro
|
Das hört sich gut an! Ich hatte die CMath Klasse geerbt, es gab aber einige Probleme damit, z.B. konnte sie nicht mit Dezimalkomma arbeiten, oder mit negativen Werten rechnen. Es war ziemlich schwierig das alles anzupassen (deshalb hatte die ursprüngliche Klasse wohl auch diese Probleme), wenn Du das also ohne diesem Overhead machen kannst ist es natürlich besser.
|
Hallo Christian, hab das jetzt so gemacht: Die IBAN-Nr ist natürlich nicht korrekt. Gruß Harro ********************************************************************************* * Überprüfung der Prüfziffer in einer IBAN-Nr ********************************************************************************* CLEAR ? REPLICATE("*",80) lcIBAN = "DE52 3006 0110 0029 2428 67" ? "IBAN:", lcIBAN at 15 ********************************************************************************* * Felder aufbereiten lcIBANn = CHRTRAN(lcIBAN," ","") && entferne Leerstellen lcLand = substr (lcIBANn ,1,2) && Land separieren lcLandN = TRANSFORM(ASC(SUBSTR(lcLand,1,1)) - 55) + TRANSFORM(ASC(SUBSTR(lcLand,2,1)) - 55) && Buchstaben im Land ersetzen lcPZ = SUBSTR (lcIBANn, 3,2) && Prüfziffer extrahieren lcRest = SUBSTR (lcIBANn,5) && IBAN Ohne Land Und PZ ********************************************************************************* * Zu prüfender String lcIBAN = lcRest+lcLandN+"00" && IBAN-Prüfstring lnLenGrZ = LEN(lcIBAN) && Länge IBAN ? "IBAN:", lcIBAN at 15 lnDivisor = 97 lnKonstante = 98 ****************************************************************** * Schleife über alle Stellen lcDividend = SUBSTR(lcIBAN,1,1) FOR lni = 1 TO lnLenGrZ lnDividend = VAL(lcDividend) lnErgGanzZahl = INT(lnDividend/lnDivisor) lnErgRest = INT(lnDividend - (lnErgGanzZahl * lnDivisor)) IF lnErgGanzZahl > 0 lcDividend = STR(lnErgRest) ENDIF lcDividend = lcDividend + SUBSTR(lcIBAN,lni+1,1) ENDFOR ****************************************************************** ? REPLICATE("*",80) ? "Prüfziffer aus Eingabe:", lcPZ at 25 ? "Prüfziffer errechnet:", ALLTRIM(TRANSFORM(98 - lnErgRest )) at 25 ? REPLICATE("*",80) IF lnKonstante - lnErgRest = VAL(lcPZ) ? "Die Prüfziffer ist korrekt" ELSE ? "Die Prüfziffer ist falsch" ENDIF ? REPLICATE("*",80) ****************************************************************** ******************************************************************
|
|
|
|