public static String getIBANForKonto ( Konto k ) { String konto = k . number ; // Die Unterkonto-Nummer muss mit eingerechnet werden. // Aber nur, wenn sie numerisch ist. Bei irgendeiner Bank wurde // "EUR" als Unterkontonummer verwendet. Das geht natuerlich nicht, // weil damit nicht gerechnet werden kann // Wir machen das auch nur dann, wenn beide Nummern zusammen max. // 10 Zeichen ergeben if ( k . subnumber != null && k . subnumber . length ( ) > 0 && k . subnumber . matches ( "[0-9]{1,8}" ) && k . number . length ( ) + k . subnumber . length ( ) <= 10 ) konto += k . subnumber ; ///////////////// // Pruefziffer berechnen // Siehe http://www.iban.de/iban-pruefsumme.html String zeros = "0000000000" ; String filledKonto = zeros . substring ( 0 , 10 - konto . length ( ) ) + konto ; // 10-stellig mit Nullen fuellen StringBuffer sb = new StringBuffer ( ) ; sb . append ( k . blz ) ; sb . append ( filledKonto ) ; sb . append ( "1314" ) ; // hartcodiert fuer "DE sb . append ( "00" ) ; // fest vorgegeben BigInteger mod = new BigInteger ( sb . toString ( ) ) . mod ( new BigInteger ( "97" ) ) ; // "97" ist fest vorgegeben in ISO // 7064/Modulo 97-10 String checksum = String . valueOf ( 98 - mod . intValue ( ) ) ; // "98" ist fest vorgegeben in ISO 7064/Modulo 97-10 if ( checksum . length ( ) < 2 ) checksum = "0" + checksum ; // ///////////////// StringBuffer result = new StringBuffer ( ) ; result . append ( "DE" ) ; result . append ( checksum ) ; result . append ( k . blz ) ; result . append ( filledKonto ) ; return result . toString ( ) ; }
Berechnet die IBAN fuer ein angegebenes deutsches Konto .