-
Meine CA-Version ist von IBM:
11.0.8-B20130530
Version: 1.1.5.1
Build id: 6130
March 21, 2016 12:31:47 PM GMT
zu b) richtig, geht auch ohne die Zusatzvariable, ändert aber nichts am Ergebnis.
-
Das kann nur damit zusammenhängen, dass dein Datenpuffer nicht korrekt initialisiert ist.
UCS2-Unterstützung kam im Übrigen bereits mit V5R4.
https://www.ibm.com/support/knowledg...akc/dspfil.htm
Ggf. steht dein Job auch noch auf CCSID 65535 ? Dies kann ebenso zu Problemen führen.
-
in den Sitzungseinstellungen sind sowohl der Unicode-Datenstrom als auch DBCS in Unicodefeldern aktiviert. Gibts da noch mehr Einstellungen zu diesem Thema?
Die Job-CSSID ist 1141 wie im Emulator auch.
-
So, ich habe mir das Thema nochmal angesehen:
Also, wenn du in der Konfiguration Unicode und DBCS ausgeschaltet lässt, dann funktioniert dies mit der DSPF genau so wie von mir beschrieben. Die Unicodedaten im Programm werden in SBCS umgesetzt und bei der Eingabe wieder in UCS2. Eine gleichzeitige Darstellung von anderen Sprachräumen führt u.U. zu falschen Zeichen oder dem Ersatz als "?".
Zubeachten ist, dass die *LEN-Angabe in der CCSID die Anzahl Zeichen und nicht die Anzahl Bytes beschreibt. "DSPUCS 40G B 11 21 CCSID(13488 *LEN 40)" ist korrekt, da sonst 80 Stellen belegt werden (ist zwar blöd, aber es ist so).
Sobald man aber Unicode in der Konfiguration aktiviert, funktioniert das Ganze nun nicht mehr, da die Unicodezeichen nun "as is" an das Device übertragen werden. Hierbei schlägt bereits ein Datenproblem zu, dass die Unicodezeichen ja x'00YY' enthalten und x'00' als ungültig im Datenstrom nun abgelehnt wird.
Da in der Doku nun gar nichts zu finden ist, habe ichdann einfach mal was probiert:
DSPUCS 40G B 11 21 CCSID(1200 *LEN 40)
Man beachte die CCSID 1200, die als UTF-16 definiert ist und im RPGLE auch als Typ C mit CCSID 1200 umgewandelt wird, wobei dann die Hexdaten tatsächlich aber UCS2 und nicht UTF16 sind (verifizeirt),
Und siehe da, dies funktioniert nun auch, da wohl für CCSID 1200 explizit die x'00'-Daten durchgelassen werden.
Um nun auch tatsächlich auf dem Bildschirm alle Zeichen aus-, aber eben auch eingeben zu lassen, muss die Schriftart in der Emulation auf eine Unicode-Schrift geändert werden.
Der Default IBM3270 reicht da nicht, da dies eine SBCS ist. Unbekannte Zeichen werden mit "?" ersetzt.
Wenn man aber z.B. Courier-New wählt, lassen sich nun mit der Client-Solution-5250 auch tatsächlich alle Sprachen von der DB bis zum Terminal in Unicode UCS2 durchreichen, und zwar gleichzeitig!
Noch mal zurück zur klassischen CA-5250.
Unicode mit 1200 wird zwar von der Emulation unterstützt, es erfolgt aber auf jeden Fall eine Codewandlung in die Client-Hostcodepage. Eine gleichzeitige Darstellung verschiedener Sprachräume ist hier definitiv nicht möglich.
-
Schön, dass du dir so viel Mühe gibst. Ich habe die Hoffnung auch noch nicht aufgegeben, das mal zum Laufen zu bringen. Aktuell geht es aber immer noch nicht.
//DB-col: "DSPUCS2" VARGRAPHIC(40) CCSID 13488
dou *inlr = *on;
Exec Sql
Select Dspucs2 Into spucsf From Stestdb3 ;
//dspf-zeile: A DSPUCSF 40G B 9 16CCSID(13488 *LEN 40)
Exfmt Bearbeit;
if *inkc = *on OR *inkl = *on;
leave;
ENDIF;
Exec Sql Update Stestdb3 Set Dspucs2 = spucsf ;
Enddo;
*inlr=*on;
Sitzungseinstellungen:
Verbindung: UCS-Datenstrom aktivieren: nein
DBCS ist dann automatisch "nein" und deaktiv
Schriftart: Courier New
OS: Windows 7
Ergebnisse:
- deutsche Zeichen werden korrekt dargestellt und korrekt gespeichert
- russische Zeiehcn, die ich per RDi in die DB geschrieben habe erscheinen als Farbblock
- russische Zeichen, die ich per 5250 eingebe landen als ? in der DB
Hast du dein Beispiel bei dir mal konkret getestet? Also selbst gesehen und gemacht?
LG, Martin
-
Ja natürlich;-)!
Noch mal zur Korrektur:
- Ändere die CCSID in der DSPF auf jeden Fall auf 1200!
- Aktiviere in der 5250-Konfig den Unicode
- Ändere in der 5250 die Schrift auf "Courier New", sieht zwar nicht so gut aus, ist aber ein Unicode-Font
Und das funktioniert nur mit der Client-Solution-5250 und nicht mit der CA-5250!PS:
Wie hast du denn die russischen Zeichen per RDi in die Datenbank bekommen?
Meist funktioniert dies nämlich nicht. Hast du die auch als russisch wieder per SQL (z.B. in Excel) ausgelesen?
-
ES GEHT!!!
In RDi rufe ich in der Perspektive "Database Development" die Tebllen auf. Rechte Maustaste auf die Tabelle "Daten -> Bearbeiten", Tastatur auf russisch umstellen und irgendwas in das feld schreiben, CTRL-S um zu speichern.
Einen Zugriff mit Excel habe ich noch nie probiert. Mache das dann auch per RDi mit rechter Maustaste aber "Daten -> Alle Zeilen zurückgeben".
DANKE
-
Na denn viel Spaß nun. Andere lassen sich das einen Workshop von mir kosten;-).
Similar Threads
-
By as400frischling in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 12-12-13, 16:07
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