Hi!
Laut
Bundesbankseite wird für die Gläubiger-ID dasselbe PZ-Verfahren wie für die IBAN's verwendet.
Allerdings ohne die Geschäftsbereichskennung. Also nur die Stellen 8 bis 18.
Nun habe ich hier ein Beispiel, wo die nationale ID (Stellen 8 bis 18) so lauten: 11768
Die zugehörige PZ müsste eigentlich 72 ergeben.
Das mache ich mit diesem Code:
use warnings;
use strict;
use Math::BigFloat;
my $id = 11768;
my $land = 'DE';
my $wert = Math::BigFloat->new($id.(ord(substr($land,0,1))-55).(ord(substr($land,1,1))-55));
print sprintf('%02d',98 - ($wert->bmod(97)));
Leider kommt 57 raus.
Der selbe Code bringt aber beim Bundesbank-Beispiel mit der ID 9999999999 korrekterweise 98 raus.
Jemand eine Idee, was ich falsch mache?
Den Code verwende ich bei IBAN's dauernd und hatte noch keine Fehler.
10 print "Hallo"
20 goto 10