[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte
  1. #1
    Registriert seit
    Nov 2001
    Beiträge
    170

    Question Hexa-Wert eines Zeichens

    Hallo @ all,

    wie ermittele ich den Hexa-Wert eines Zeichens unter RPG mit Bordmitteln ?
    Problem : Wir bekommen von einem Partner Datensätze mit Umlauten gesendet, die die i5 'entstellt' darstellt. Zum Beispiel statt eines 'ü' erhalte ich ein 'e' mit 2 Punkten drauf.
    Nach der Datenübernahme möchte ich die entsprechenden Zeichen umsetzen.
    Oder gibt es einfachere Lösungen als die Prüfung des Hexa-Wertes eines Zeichens ?

    Vielen Dank im Voraus !

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Die Frage ist, wie stellst du die Daten denn ab und kopierst sie in eine PF?

    Beim CPYFRMSTMF kannst du eine andere CCSID (z.B. 1252) angeben.
    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

  3. #3
    Registriert seit
    Nov 2001
    Beiträge
    170
    Danke für die Antwort.
    Das habe ich jetzt auch so eingebaut.
    Mein Problem sind jetzt noch bereits im System vorhandene Sätze, wo ich die Umlaute konvertieren will/muß.

  4. #4
    Registriert seit
    Sep 2004
    Beiträge
    142
    Hallo

    Den Hex-Wert eines Zeiches kannst Du beispielsweise so ermitteln:

    Code:
      d HexToInt        ds
         d  hiChar                        1A
         d  hiInt                         3u 0 overlay(hiChar:1)
    Gruss

    Jan

  5. #5
    Registriert seit
    Mar 2002
    Beiträge
    5.365
    ... das geht am Besten mit SQL, beim Cast kann man da die CCSID angeben, eventuell braucht man da einen Zwischencast nach 65535.

    D*B

    Zitat Zitat von lossin Beitrag anzeigen
    Danke für die Antwort.
    Das habe ich jetzt auch so eingebaut.
    Mein Problem sind jetzt noch bereits im System vorhandene Sätze, wo ich die Umlaute konvertieren will/muß.
    AS400 Freeware
    http://www.bender-dv.de
    Mit embedded SQL in RPG auf Datenbanken von ADABAS bis XBASE zugreifen
    http://sourceforge.net/projects/appserver4rpg/

  6. #6
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Wenn es sich allerdings nur um die Umlaute handelt, kann man mit dem SQL-Befehl Replace die falschen Werte in die richtigen umsetzen:

    PHP-Code:
    Update MySchema/MyTable
    Set  MyField 
    Replace(MyFieldWertAltWertNeu); 
    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  7. #7
    Registriert seit
    Nov 2003
    Beiträge
    2.403
    Oder in RPG mittels XLATE.

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dieters Tipp ist der Beste:

    Z.B.:
    update myfile
    set field = cast(cast(field as char(nn) ccsid 65535) as char(nn) ccsid 273)
    where ...

    Allerdings musst du die Ursprungs-CCSID ja kennen.
    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
    Nov 2001
    Beiträge
    170
    Erst mal Danke für eure Hilfe !

    @Pikachu :
    Wie bekomme ich Folgendes mit XLATE hin ?
    Wenn Hexa-Wert-des-Zeichens = 99 dann Neuer-Zeichen-Wert = 'ß'

    @all
    oder geht das auch anders unter ILERPG ?

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Feld = %xlate(x'99nnmm' : 'ßNM': Feld);

    Schließlich kannst du je Hexkonstanten direkt angeben.

    In SQL:
    update Myfile
    set field = replace(field, x'99nnmm', 'ßNM')
    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

  11. #11
    Registriert seit
    Aug 2001
    Beiträge
    2.928
    Zitat Zitat von Fuerchau Beitrag anzeigen
    In SQL:
    update Myfile
    set field = replace(field, x'99nnmm', 'ßNM')
    Du meinst wahrscheinlich:
    PHP-Code:
    Update MyFile 
    Set Field 
    Translate(Fieldx'99xxyy''ßNM'); 
    Replace ersetzt die Kombination x'99nnmm' durch 'ßNM' und nicht die einzelnen Zeichen!

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 5. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Ok, sorry. Man sollte eben nicht alles aus dem Kopf machen .
    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. Wert aus CSV Datei
    By mk in forum IBM i Hauptforum
    Antworten: 9
    Letzter Beitrag: 21-12-06, 08:56
  2. Können CLLE Module selbst einen Wert halten bzw. zurückgeben?
    By JonnyRico in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 25-04-06, 10:16
  3. Numerischen Wert aufrunden
    By harkne in forum NEWSboard Programmierung
    Antworten: 6
    Letzter Beitrag: 30-03-06, 12:25
  4. Antworten: 3
    Letzter Beitrag: 03-02-05, 14:17
  5. Wert einer 9401-P03
    By Philipp Brenner in forum IBM i Hauptforum
    Antworten: 19
    Letzter Beitrag: 29-11-04, 13:53

Berechtigungen

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