-
IBAN prüfen / berechnen
Hallo zusammen,
ich möchte IBAN-Prüfung und ggf. -Berechnung in ein Programm einbauen. Bevorzugt mit RPGLE oder SQL.
Hat jemand Beispielcode zur Hand?
Welchen (möglichst kostenlosen) Webservice kann man nutzen?
-
Hier ist die Definition und der Aufbau:
https://www.iban.de/iban-pruefsumme.html
Stichwort Modulo 97.
-
Code:
D $Letters S 26A INZ('ABCDEFGHIJKLMNOPQRSTUVWXYZ')
D $LrgNbr S 63S 0 Maximum des Systems
D $Rest S 2S 0
D $PrfZif S 2S 0
D $Pos S 2S 0
D $In S 10I 0
D $Out S 10I 0
D $KTO S 15A
D $NumKto S 15S 0
D $BLZA S 8A
D $STRG S 34A
D $STML S 70A IBAN mit Leerstellen
D DS
D $String1 1 70
D $St1 1 70 DIM(70)
D DS
D $String2 1 70
D $St2 1 70 DIM(70)
C *ENTRY PLIST
C PARM $LR 1
C PARM $IBAN 34 IBAN aus Bildschirm
C PARM $STRG 34 IBAN ohne Leerstel.
C PARM $COMP 1 Ind. IBAN falsch
/Free
//---------------------------------------------------------------------
// P R Ü F R O U T I N E I B A N
//---------------------------------------------------------------------
If $IBAN <> *Blanks;
// Die übergebene IBAN wird links ausgerichtet und ggf. von
// Leerstellen befreit (diverse Schreibweisen, z.B. 'DE12 3456 ...')
$String1 = %Trim($IBAN);
$String2 = *Blanks;
$Out = 1;
For $In = 1 to 34;
If $St1($In) <> *Blank;
$St2($Out) = $St1($In);
$Out += 1;
EndIf;
EndFor;
$STRG = %Trim($String2);
// Erster Schritt: die ersten vier Stellen ans Ende stellen
$String1 = %Trim(%Subst($STRG:5:30)) + %Trim(%Subst($STRG:1:4));
// Zweiter Schritt: Buchstaben durch Ziffern ersetzen
$Out = 1;
For $In = 1 to 34;
Select;
When $St1($In) >= '0' and $St1($In) <= '9';
// Ziffern werden einfach übertragen
$St2($Out) = $St1($In);
$Out += 1;
When $St1($In) >= 'A' and $St1($In) <= 'Z';
// Position des Buchstaben im Alphabet suchen
$Pos = %Scan($St1($In):$Letters:1);
// Position + 9 = Wert (A=10, B=11; Z=35)
$Pos += 9;
// den zweistelligen Wert in zwei Schritten übertragen
$St2($Out) = %Subst(%EditC($Pos:'X'):1:1);
$Out += 1;
$St2($Out) = %Subst(%EditC($Pos:'X'):2:1);
$St2($Out) = %Subst(%EditC($Pos:'X'):2:1);
$Out += 1;
Other;
// Leerstellen und alles andere ignorieren
EndSl;
EndFor;
// Dritter Schritt: Ziffernfolge in numerisches Feld stellen
$LrgNbr = %Dec(%Trim($String2):63:0);
// Vierter Schritt: Rest 1 aus der Division durch 97 = IBAN gültig
If (%Rem($LrgNbr:97)) <> 1;
$COMP = *On;
EndIf;
// Fünfter Schritt: IBAN in Papierform aufbereiten
$STML = %Subst($STRG:1:4)+' '+%Subst($STRG:5:4)+' '+
%Subst($STRG:9:4)+' '+%Subst($STRG:13:4)+' '+
%Subst($STRG:17:4)+' '+%Subst($STRG:21:4)+' '+
%Subst($STRG:25:4)+' '+%Subst($STRG:29:4);
// Letzter Schritt: IBAN je nach Länge ohne Aufbereitung übernehmen
If %Len(%Trim($STML)) < 35;
$IBAN = $STML;
EndIf;
EndIf;
*InLr = $LR;
Return;
/End-Free
-
Hallo zusammen,
vielen Dank für die sehr hilfreichen Antworten!
Similar Threads
-
By dibe in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 14-09-16, 14:59
-
By msost in forum IBM i Hauptforum
Antworten: 13
Letzter Beitrag: 03-09-15, 16:42
-
By j.k. in forum NEWSboard Programmierung
Antworten: 12
Letzter Beitrag: 15-11-10, 16:31
-
By wdom in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 19-05-03, 13:58
-
By malzusrex in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 23-07-02, 10:07
Tags for this Thread
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks