-
Probier doch mal folgendes aus:
select cast(wok9srcl as char(40) ccsid 037) from qusrsys.QAOKP09A
Die Feldinhalte scheinen mit CCSID 037 geschrieben worden zu sein.
Gruß,
KM
-
Das wird nichts bringen, da ein cast von Binär nach CCSID nnn keine Codewandlung vornimmt.
Die Ursache liegt bei C-API's eben häufig daran, dass bei fehlender Job-CCSID dann 037 angenommen wird. In diesem Fall muss ja für das Mail-API von EBCDIC in ASCII umgewandelt werden.
Wenn aber weder Datei noch Job eine CCSID aufweisen schlagen hier eben Defaults zu.
Wir hatten hier aber auch noch einen anderen Fall (C-Api RegEx), dass eine Locale im Job gesetzt sein muss, damit das C-Api korrekt umsetzt.
-
 Zitat von Fuerchau
Das wird nichts bringen, da ein cast von Binär nach CCSID nnn keine Codewandlung vornimmt.
... der erste cast bringt nix, aber der nächste. (Ist bei einem Cast 65535 als Quelle oder Ziel dabei wird transparent übertragen, aber das Ergebnis des Cast hat die Ziel CCSID)
D*B
-
Warum soll das nichts bringen?
Sowohl...
select cast(wok9srcl as char(40) ccsid 037) from qusrsys.QAOKP09A
als auch...
select cast(cast(wok9srcl as char(40) ccsid 037) as char(40) ccsid 1208) from qusrsys.QAOKP09A
bringt bei mir das gewünschte Ergebnis. Einmal in CCSID 37 und einmal in UTF-8.
Gruß,
KM
-
CCSID 65535 => CCSID 037 = Keine Codewandlung, Daten sind nun CCSID 037
CCSID 273 => CCSID 037 = Mit Codewandlung, Daten sind nun CCSID 037
CCSID nnn <> 65535 => CCSID mmm <> 65535 = Mit Codewandlung!
Generell sei also nochmal gesagt:
Zwischen CCSID *HEX (65535) und irgend was anderem erfolgt generell keine Codewandlung!
Daher gibt es ja laufend die Probleme:
Terminal 1141 => Job 65535 => DB 273 = keine Codewandlung
Terminal 870 => Job 65535 => DB 273 = keine Codewandlung
Wie soll nun erkannt werden, ob die Daten der DB 1141 oder 870 sind?
-
 Zitat von Fuerchau
CCSID 65535 => CCSID 037
= Keine Codewandlung, Daten sind nun CCSID 037
CCSID 273 => CCSID 037 = Mit Codewandlung, Daten sind nun CCSID 037
CCSID nnn <> 65535 => CCSID mmm <> 65535 = Mit Codewandlung!
Generell sei also nochmal gesagt:
Zwischen CCSID *HEX (65535) und irgend was anderem erfolgt generell keine Codewandlung!
Daher gibt es ja laufend die Probleme:
Terminal 1141 => Job 65535 => DB 273 = keine Codewandlung
Terminal 870 => Job 65535 => DB 273 = keine Codewandlung
Wie soll nun erkannt werden, ob die Daten der DB 1141 oder 870 sind?
... wenn denn die Daten alle mit derselben Kodierung in dem 65535 Feld gelandet sind:
- oBdA sei die CCSID mit xxx benannt und das Feld sei yyy und die Länge zzz, dann
cast(yyy as char(zzz) ccsid xxx) (keine Wandlung weil 65535 beteiligt, Feld hat jetzt xxx
mit dem nächsten cast kann ich das Feld dann wandeln in was immer ich will, wenn ich also aaa haben will
cast(cast(yyy as char(zzz) ccsid xxx) as char(zzz) ccsid aaa)
D*B
Similar Threads
-
By dibe in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 16-01-15, 08:22
-
By falke34 in forum NEWSboard Programmierung
Antworten: 11
Letzter Beitrag: 11-07-14, 10:32
-
By HelgeNielsen in forum IBM i Hauptforum
Antworten: 12
Letzter Beitrag: 23-04-02, 15:40
-
By HJM in forum NEWSboard Windows
Antworten: 3
Letzter Beitrag: 25-02-02, 22:27
-
By chr in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 01-02-01, 11:00
Tags for this Thread
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks