[NEWSboard IBMi Forum]

Hybrid View

  1. #1
    Registriert seit
    May 2002
    Beiträge
    1.121
    Ich hatte dafür mal ein kleines Proggie gemacht.
    Vielleicht hilft es Dir ja als Gedankenstütze.
    PHP-Code:
     *                                                                                         
     * 
    Programm dient zur Umwandlung von Texten                                                
     
    *                                                                                         
     * 
    Übergabe Parameter                                                                      
     
    *                    text       255        den zu konvertierenten Text                    
     
    *                    art          2        Art der Umwandlung                             
     
    *                                          'KG' klein --> GROß                          
     
    *                                          'GK' GROß  --> Klein                         
     
    *                                          '1G' erster Buchstabe GROß rest klein        
     
    *                                          '2G' 1 Buchstabe aller Wörter groß rest klein
     
    *                                          'ÖO' ö,Ö,ü,Ü,ä,Ä --> oe,OE,ue,UE,ae,AE       
     
    *                                          'OÖ' oe,OE,ue,UE,ae,AE  -->  ö,Ö,ü,Ü,ä,Ä     
     
    *                                                                                         
     *                    
    ret_code     1        Fehlerzeiger  ist 'F' wenn art nicht gültig    
     
    *                                                                                         
     *                                                                                         
    d                sds                                                                       
    d  parmanz          
    *parms                                                                 
    d  job                  244    253                                                         
    d  user                 254    263                                                           
    d                                                                                            
    d                                                                                            
    d art             s              2                                         Umwandluns
    -Kz     
    d ret_code        s              1                                         Fehlerzeiger      
    d text            s            255                                                           
    d pos             s              3  0                                      Position im String
    d Laenge          s              3  0                                      Länge des String  
    d Buchstabe       s              1                                                           
    d Such_was        s               n                                                          
    d                                                                                            
    d False           c                   
    *Off                                                   
    d True            c                   
    *On                                                    
    d                 ds                                                                         
    d xtext                        255                                         Umsetzungstxt     
    d erstes_zei                     1    overlay
    (xtext:1)                                       
    d                                                                                            
    d low             c                   
    const('abcdefghijklmnopqrstuvwxyz')                    
    d upp             c                   const('ABCDEFGHIJKLMNOPQRSTUVWXYZ')                    
    d                                                                        
                                                                             
    c                   Select                                               
    c                   When      art 
    'KG'                                 
    c                   Exsr      klein_gross                                
    c                   When      art 
    'GK'                                 
    c                   Exsr      gross_klein                                
    c                   When      art 
    '1G'                                 
    c                   Exsr      erster_gross                               
    c                   When      art 
    '2G'                                 
    c                   Exsr      erster_gross1                              
    c                   When      art 
    'ÖO'                                 
    c                   Exsr      umlaut_1                                   
    c                   When      art 
    'OÖ'                                 
    c                   Exsr      umlaut_2                                   
    c                   Other                                                
    c                   
    If        parmanz 3                                
    c                   
    Eval      ret_code 'F'                             
    c                   Endif                                                
    c                   Endsl                                                  
    c                                                                          
    c                   
    Eval      text xtext                                 
    c                   
    Eval      *inlr = *on                                  
     
    *                                                                         
     *                                                                         
     ****************** 
    klein_gross *******************************************
     *                                                                         
     *                                                                         
    c     klein_gross   Begsr                                                  
    c
    *                                                                         
    c     low:upp       xlate     xtext         xtext                          
    c
    *                                                                         
    c                   Endsr                                                  
     
    *                                                                         
     *                                                                         
     ****************** 
    gross_klein *******************************************
     *                                                                         
     *                                                                         
    c     gross_klein   Begsr                                                  
    c
    *                                                                         
    c     upp:low       xlate     xtext         xtext                          
    c
    *                                                                         
    c                   Endsr                                                  
     
    *                                                                         
     *                                                                         
     ****************** 
    erster_gross ******************************************
     *                                                                         
     *                                                                         
    c     erster_gross  Begsr                                                  
    c
    *                                                                         
    c     upp:low       xlate     xtext         xtext                          
    c     low
    :upp       xlate     erstes_zei    erstes_zei                     
    c
    *                                                                         
    c                   Endsr                                                  
     
    *                                                                         
     *                                                                         
     ****************** 
    erster_gross1******************************************
     *    
    alle 1. Buchstaben pro Wort groß                                     
     
    *                                                                         
    c     erster_gross1 Begsr                                                  
    c
    *                                                                         
    c     upp:low       xlate     xtext         xtext                          
    c     low
    :upp       xlate     erstes_zei    erstes_zei                     
    c                   
    Eval      Pos  1                                     
    c                   
    Eval      Laenge = %Len( %Trimxtext ) )              
    c                   Eval      Such_Was True                              
    c                   Dow       Such_was                                     
    c                                                                          
    c                   
    Eval      Pos  = %Scan(' ' xtext pos)              
    c                   If        Pos > *Zeros and Pos Laenge                
    c                   
    Eval      pos pos +1                                 
    c                   
    Eval      Buchstabe = %SubStxtext pos 1)         
    c     low:upp       xlate     Buchstabe     Buchstabe                      
    c                   
    Eval      xtext = %ReplaceBuchstabe xtext pos :1)
    c                   Else                                                   
    c                   Eval      Such_Was False                             
    c                   
    EndIf                                                  
    c                   EndDo                                                  
    c
    *                                                                         
    c                   Endsr                                                  
     
    *                                                                         
     *                                                                         
     ****************** 
    umlaut_1 **********************************************
     *                                                                         
     *                                                                         
    c     umlaut_1      Begsr                                                  
    c
    *                                                                         
    c                   Eval      pos = %scan('ö':xtext)                       
    c                   Dow       pos > *zeros                                 
    c                   
    Eval      xtext = %replace('oe':xtext:pos:1)           
    c                   Eval      pos = %scan('ö':xtext)                       
    c                   Enddo                                                  
    c                   
    Eval      pos = %scan('Ö':xtext)                       
    c                   Dow       pos > *zeros                                 
    c                   
    Eval      xtext = %replace('OE':xtext:pos:1)           
    c                   Eval      pos = %scan('Ö':xtext)            
    c                   Enddo                                       
    c                   
    Eval      pos = %scan('ü':xtext)            
    c                   Dow       pos > *zeros                      
    c                   
    Eval      xtext = %replace('ue':xtext:pos:1)
    c                   Eval      pos = %scan('ü':xtext)            
    c                   Enddo                                       
    c                   
    Eval      pos = %scan('Ü':xtext)            
    c                   Dow       pos > *zeros                      
    c                   
    Eval      xtext = %replace('UE':xtext:pos:1)
    c                   Eval      pos = %scan('Ü':xtext)            
    c                   Enddo                                       
    c                   
    Eval      pos = %scan('ä':xtext)            
    c                   Dow       pos > *zeros                      
    c                   
    Eval      xtext = %replace('ae':xtext:pos:1)
    c                   Eval      pos = %scan('ä':xtext)            
    c                   Enddo                                       
    c                   
    Eval      pos = %scan('Ä':xtext)            
    c                   Dow       pos > *zeros                      
    c                   
    Eval      xtext = %replace('AE':xtext:pos:1)           
    c                   Eval      pos = %scan('Ä':xtext)                       
    c                   Enddo                                                  
    c
    *                                                                         
    c                   Endsr                                                  
     
    *                                                                         
     *                                                                         
     ****************** 
    umlaut_2 **********************************************
     *                                                                         
     *                                                                         
    c     umlaut_2      Begsr                                                  
    c
    *                                                                         
    c                   Eval      pos = %scan('oe':xtext)                      
    c                   Dow       pos > *zeros                                 
    c                   
    Eval      xtext = %replace('ö':xtext:pos:1)            
    c                   Eval      pos = %scan('oe':xtext)                      
    c                   Enddo                                                  
    c                   
    Eval      pos = %scan('OE':xtext)                      
    c                   Dow       pos > *zeros                                 
    c                   
    Eval      xtext = %replace('Ö':xtext:pos:1)
    c                   Eval      pos = %scan('OE':xtext)          
    c                   Enddo                                      
    c                   
    Eval      pos = %scan('ue':xtext)          
    c                   Dow       pos > *zeros                     
    c                   
    Eval      xtext = %replace('ü':xtext:pos:1)
    c                   Eval      pos = %scan('ue':xtext)          
    c                   Enddo                                      
    c                   
    Eval      pos = %scan('UE':xtext)          
    c                   Dow       pos > *zeros                     
    c                   
    Eval      xtext = %replace('Ü':xtext:pos:1)
    c                   Eval      pos = %scan('UE':xtext)          
    c                   Enddo                                      
    c                   
    Eval      pos = %scan('ae':xtext)          
    c                   Dow       pos > *zeros                     
    c                   
    Eval      xtext = %replace('ä':xtext:pos:1)
    c                   Eval      pos = %scan('ae':xtext)          
    c                   Enddo                                      
    c                   
    Eval      pos = %scan('AE':xtext)          
    c                   Dow       pos > *zeros                                 
    c                   
    Eval      xtext = %replace('Ä':xtext:pos:1)            
    c                   Eval      pos = %scan('AE':xtext)                      
    c                   Enddo                                                  
    c
    *                                                                         
    c                   Endsr                                                  
     
    *                                                                         
     *                                                                         
     ****************** *
    inzsr ************************************************
     *                                                                         
     *                                                                         
    c     *inzsr        Begsr                                                  
    c
    *                                                                         
    c     *entry        Plist                                                  
    c                   Parm                    text                           
    c                   Parm                    art                            
    c                   Parm                    ret_code                       
    c                                                                          
    c                                                                          
    c                   
    Eval      xtext text      
    c
    *                                              
    c                   Endsr 
    Gruß Ronald

  2. #2
    Registriert seit
    Jul 2007
    Beiträge
    8
    Vielen Dank Roland, ich werde deine ILE versuchen in RPG/IV code umzuschreiben.
    Gruß, Dinie.

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Wie wäre es mit ein wenig SQL ?

    c/exec sql
    c+ set :myvar = replace(:myvar, 'Ö', 'Oe')
    c/end-exec

    Dies ist für jede Kombination zu wiederholen. Man kann es auch verallgemeinern:

    c eval myfrom = 'Ö';
    c eval myto = 'Oe';
    c/exec sql
    c+ set :myvar = replace(:myvar, trim(:myfrom), trim(:myto))
    c/end-exec
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Jul 2007
    Beiträge
    8
    Fuerchau: der Idee mit dem SQL gefällt mir hervoragend! Ich habe es bereits ausprobiert, funktioniert top.
    Danke euch für die schnelle Hilfe,
    Dinie.

  5. #5
    cbe is offline [professional_User]
    Registriert seit
    May 2005
    Beiträge
    392
    klasse Idee!

    Das Problem hatte ich auch erst vor kurzen und habe es "konventionell" programmiert. Hier SQL zu nehmen ist viel eleganter - genial!

    Gruß
    Christian

    "Wer nur einen Hammer hat, für den ist jedes Problem ein Nagel"

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Nicht nur das, sondern SQL verwendet auch die aktuelle Job-CCSID, wenn die umzusetzenden Zeichen auch vorher aus einer Datei gelesen werden.

    Kodierst du hart ein 'Ö' in der Quelle, funktioniert das nur mit der CCSID zum Compile-Zeitpunkt.
    Änderst du später z.B. Job- oder File-CCSID wird dein 'Ö' nicht mehr gefunden !
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Jan 2007
    Beiträge
    1.002
    Nur zuf Info unter V7R1
    PHP-Code:
    /free
    string 
    =%ScanRpl('ö' 'oe' string); 
    /
    end-free 
    geht natürlich auch zum Sonderzeichen eliminieren.

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Bzgl. der CCSID bei Konstanten gilt weiterhin oben gesagtes.
    Rufts du dein Programm nicht mit der selben CCSID deiner Programmquelle bzw. der Job-CCSID zum Erstellzeitpunkt auf, wird ein ganz anderes Zeichen ersetzt !
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  9. #9
    Registriert seit
    Jan 2007
    Beiträge
    1.002
    Hallo Fürchau
    Ist schon klar, es ging mir nur um die neue BIF, bzw. deren Funktionalität.

Similar Threads

  1. Umlaute umsetzen
    By MKl. in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 14-12-06, 15:43
  2. A3 nach A4 umsetzen
    By TARASIK in forum NEWSboard Drucker
    Antworten: 2
    Letzter Beitrag: 14-12-06, 12:14
  3. Antworten: 4
    Letzter Beitrag: 11-08-06, 11:26
  4. Textdatei im IFS hat Sonderzeichen
    By TARASIK in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 29-06-06, 15:59
  5. Umlaute werden im IFS zu Sonderzeichen
    By y-tom in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 29-05-06, 14:31

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •