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