View Full Version : 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 !
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.
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ß.
Hallo
Den Hex-Wert eines Zeiches kannst Du beispielsweise so ermitteln:
d HexToInt ds
d hiChar 1A
d hiInt 3u 0 overlay(hiChar:1)
Gruss
Jan
... das geht am Besten mit SQL, beim Cast kann man da die CCSID angeben, eventuell braucht man da einen Zwischencast nach 65535.
D*B
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ß.
Wenn es sich allerdings nur um die Umlaute handelt, kann man mit dem SQL-Befehl Replace die falschen Werte in die richtigen umsetzen:
Update MySchema/MyTable
Set MyField = Replace(MyField: WertAlt: WertNeu);
Birgitta
Oder in RPG mittels XLATE.
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.
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 ?
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')