[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Apr 2002
    Beiträge
    792

    Post RPG: Variablen Inhalt "ab584" in "AB584" wandeln??

    Hallo,

    kann mir jemand sagen wie ich in RPG aus kleinen Buchstaben große mache? Gibt es dafür einen Befehl oder wie kann ich das am besten lösen? Es wird beim starten des Programms die Variable als Parameter übergeben und dann im RPG in eine Datei geschrieben. Wenn in dem Parameter aber kleine Buchstaben vorhanden sind sollen Sie durch große ersetzt werden und in anschluss weggeschrieben werden. Geht sowas? Vielen Dank im Voraus.

    mfg

    Sascha

  2. #2
    Registriert seit
    Jan 2003
    Beiträge
    759

    Post

    Hallo Sascha,

    das geht mit XLATE und zwei Konstanten (I-Zeilen) mit den auszutauschenden Zeichen:

    I 'abcdefghijklmnopqrst-C LO
    I 'uvwxyzéäöü'

    I 'ABCDEFGHIJKLMNOPQRST-C HI
    I 'UVWXYZEÄÖÜ'

    C LO:HI XLATEvonFeld nachFeld

    Gruß, Robert

  3. #3
    Registriert seit
    May 2002
    Beiträge
    1.121

    Post

    Hallo Sascha,
    ich habe da ein kleines Tool in RPGLE zum Umsetzen von Text. Ist nur so als Anregung
    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                 
     *                                          'Ö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                 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 = 'Ö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                                                                           
     *                                                                                                  
     *                                                                                                  
     ****************** 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

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.695

    Post

    Bei der Übersetzung von Umlauten kann es zu Problemen kommen, wenn die CCSID der Quelle des RPG-Programmes abweicht von der CCSID des ausführenden Job's !
    Programmkonstanten unterliegen NICHT der automatischen Konvertierung in die korrekte CCSID.
    Da die Umlaute aber je nach CCSID einen anderen Hex-Code haben, kann es später dazu kommen, dass Umlaute nicht übersetzt werden.

    Als Ergänzung zum obigen Programmvorschlag sollte man daher die Konstanten "ABC...ÄÖÜ" und "abc...äöü" aus eienm Objekt mit CCSID lesen (Erstinitialisierung). Hierzu eignet sich entweder eine Datei oder eine MSGF mit korrekter CCSID.
    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

Similar Threads

  1. Rückgabewert vom RPG Programm
    By mk in forum NEWSboard Java
    Antworten: 8
    Letzter Beitrag: 21-04-11, 21:51
  2. RPG: Client Infos lesen?
    By robertki in forum NEWSboard Programmierung
    Antworten: 25
    Letzter Beitrag: 19-01-07, 08:42
  3. Bibliotheksliste in RPG IV abfragen
    By timeless in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 11-01-07, 12:04
  4. Problem mit Java-Methoden Aufruf aus ILE RPG?
    By Stoeberl in forum NEWSboard Programmierung
    Antworten: 8
    Letzter Beitrag: 10-01-07, 10:58
  5. RPG goes Web
    By jth in forum NEWSboard Programmierung
    Antworten: 1
    Letzter Beitrag: 21-12-06, 11:13

Berechtigungen

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