IBAN Prüfziffer berechnen fehlerhaft

  • Kann AutoIt nicht mit so großen Zahlen umgehen.
    Auch mit der UDF BigNum bekomme ich das gleiche falsch Ergebnis.

    Jemand 'ne Idee. Gruß Paule

    [autoit]

    #cs
    Die Berechnung erfolgt in mehreren Schritten. Zuerst wird die Länderkennung um zwei Nullen ergänzt.
    Danach wird aus Kontonummer und Bankleitzahl die BBAN kreiert.
    Also beispielsweise Bankleitzahl 70090100 und Kontonummer 1234567890 ergeben die BBAN 700901001234567890.

    [/autoit][autoit][/autoit][autoit]

    Anschließend werden die beiden Alpha-Zeichen der Länderkennung sowie weitere eventuell in der
    Kontonummer enthaltene Buchstaben in rein numerische Ausdrücke umgewandelt.
    Die Grundlage für die Zahlen, die aus den Buchstaben gebildet werden sollen,
    bildet ihre Position der jeweiligen Alpha-Zeichen im lateinischen Alphabet.
    Zu diesem Zahlenwert wird 9 addiert. Die Summe ergibt die Zahl, die den
    jeweiligen Buchstaben ersetzen soll. Dementsprechend steht für A (Position 1+9) die Zahl 10,
    für D (Position 4+9) die 13 und für E (Position 5+9) die 14.
    Der Länderkennung DE entspricht also die Ziffernfolge 1314.

    [/autoit][autoit][/autoit][autoit]

    Im nächsten Schritt wird diese Ziffernfolge, ergänzt um die beiden Nullen,
    an die BBAN gehängt. Hieraus ergibt sich 700901001234567890131400.
    Diese bei deutschen Konten immer 24-stellige Zahl wird anschließend Modulo 97 genommen.
    Das heißt, es wird der Rest berechnet, der sich bei der Teilung der 24-stelligen Zahl durch 97 ergibt.
    Das ist für dieses Beispiel 90. Dieses Ergebnis wird von der nach ISO-Standard festgelegten Zahl 98 subtrahiert.
    Ist das Resultat, wie in diesem Beispiel, kleiner als Zehn, so wird der Zahl eine Null vorangestellt,
    sodass sich wieder ein zweistelliger Wert ergibt. Somit ist die errechnete Prüfziffer 08. Aus der Länderkennung,
    der zweistelligen Prüfsumme und der BBAN wird nun die IBAN generiert.
    Die ermittelte IBAN lautet in unserem Beispiel: DE08700901001234567890.

    [/autoit][autoit][/autoit][autoit]

    Zur besseren Veranschaulichung das ganze noch einmal zusammengefasst:

    [/autoit][autoit][/autoit][autoit]

    Bankleitzahl 70090100
    Kontonummer 1234567890
    BBAN 700901001234567890
    alphanumerische Länderkennung DE
    numerische Länderkennung 1314 (D = 13, E = 14)
    numerische Länderkennung ergänzt um 00 131400
    Prüfsumme 700901001234567890131400
    Prüfsumme Modulo 97 90
    Prüfziffer 08 (98 - 90, ergänzt um führende Null)
    Länderkennung +Prüfziffer + BBAN = IBAN DE08700901001234567890
    #ce

    [/autoit][autoit][/autoit][autoit]

    $iIBAN=700901001234567890131400
    ConsoleWrite("|0000| " & StringFormat("%.0f", $iIBAN) & @LF)
    ConsoleWrite("|0000| " & Mod($iIBAN, 97) & @LF)

    [/autoit]


    edit gtaspider: AutoIt code graphisch hervorgehoben. Bitte AutoIt Code mit [ autoit][ /autoit] (ohne Leerzeichen) posten

    2 Mal editiert, zuletzt von GtaSpider (15. November 2013 um 17:34)

  • Hi,
    mit der bignum.udf ist das doch kein Thema...

    [autoit]

    #include <bignum.au3>

    [/autoit][autoit][/autoit][autoit]

    $iBBAN="700901001234567890131400"

    [/autoit][autoit][/autoit][autoit]

    $Bban_mod97 =_BigNum_Mod($iBBAN,"97")
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Bban_mod97 = ' & $Bban_mod97 & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

    [/autoit][autoit][/autoit][autoit]

    $Pruefziffer=stringformat("%02s",98-int($Bban_mod97))
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $Pruefziffer = ' & $Pruefziffer & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

    [/autoit][autoit][/autoit][autoit]

    $Laenderkennung = "DE"

    [/autoit][autoit][/autoit][autoit]

    $IBAN = $Laenderkennung & $Pruefziffer & $iBBAN
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $IBAN = ' & $IBAN & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

    [/autoit]


    Ich vermute mal, du hast die Bignum-Funktionen nicht mit Strings gefüttert....

  • GtaSpider
    Danke, ich wusste nicht mehr die genaue Syntax. Wo kann man das auf die schnelle nachlesen?
    Vielleicht sollte man das auf der Webseite mit anzeigen.

    Andy
    Danke, Du hattest Recht mit Deiner Vermutung. Ich hatte die Übergabe als Zahl gewählt.

    Gruß Paule.

    PS: Wie lauten denn die Tags für zum zusammenklappen?

  • Zitat

    Wie lauten denn die Tags für zum zusammenklappen?


    Du meinst um im Editor die Scripte einzupacken?
    Das ist der Spoiler-Tag, links neben dem AutoIt-Tag!
    SP klicken, dann AutoIt, dann Ctrl-v, absenden, fettich^^

    ciao
    Andy


    "Schlechtes Benehmen halten die Leute doch nur deswegen für eine Art Vorrecht, weil keiner ihnen aufs Maul haut." Klaus Kinski
    "Hint: Write comments after each line. So you can (better) see what your program does and what it not does. And we can see what you're thinking what your program does and we can point to the missunderstandings." A-Jay

    Wie man Fragen richtig stellt... Tutorial: Wie man Script-Fehler findet und beseitigt...X-Y-Problem

    Einmal editiert, zuletzt von Andy (17. November 2013 um 08:37)