-
CCSID Problem
Hallo, ich habe mal wieder ein Problem.
Und zwar habe ich ein deutsches OS400 und einen englischen ILE C++ Compiler. Wenn ich nun ein Programm schreibe und dieses mir eine Datei einlesen und wieder ausgeben soll. Bekomme ich den Code für die englischen Zeichen angezeigt. Kann man den Compiler und das System auf die gleiche CCSID einstellen, damit dieses Problem behoben wird.
Beispiel: Im Programm steht:
unsigned char k = '[';
printf ("0x%X\n", k);
Ausgabe sollte sein: 0x63 (deutsche Tabelle)
Ist aber : 0xBA (amerikanische Tabelle)
Hat da jemand eine Lösung???
-
Hallo,
ich würde das C++ Programm in einem Job mit der CCSID 273 oder (1141 für die deutschen Zeichen und EURO)laufen lassen.
Standardmäßig sollten die Jobs mit CCSID 65535 laufen, d.h. es wird keine Umsetzung für den NLS durchgeführt.
Gruss Thomas
-
Wichtig bei Programmen mit Zeichenkonstanten ist folgendes:
Nur bei Datenbankzugriffen wird entsprechend der eingestellten CCSID's eine Zeichenumsetzung durchgeführt. Dies gilt auch für die Compiler. Läuft also der Compiler in einem Job mit einer anderen CCSID als die Quelldatei, so erfolgt eine Zeichenumsetzung in die CCSID des Job's !
Wenn das erstellte Programm dann mit diesen Zeichenkonstanten arbeitet erfolgt KEINE Umsetzung mehr, da das Programm selbst keine CCSID-Information besitzt und Konstanten mit ihrem, zum Umwandlungsze***unkt gültigen, Hexwert verarbeitet werden.
Wichtig ist also, dass die Programme IMMER mit der selben CCSID im Job laufen unter der sie auch erstellt wurden.
Achtung: Ist auf irgend einer Ebene (Datei bzw. Job) die CCSID 65535 eingestellt, wird generell KEINE Umsetzung durchgeführt. Dies führt leider immer wieder zu unerwünschten Ergebnissen.
IBM liefert z.B. die Include-Dateien mit CCSID 285 aus. Der Systemwert QCCSID steht meistens auf 65535, so dass neue SRC-Dateien (CRTSRCPF) auch ohne CCSID erstellt werden, es sollte aber generell eine CCSID in JEDER Datei und in JEDEM Job verwendet werden.
Dann funktioniert es meistens (aber leider nicht bei allen Objekttypen), in Deutschland also 273.
Bei Spools z.B. erfolgt die CCSID-Umetzung zum Ze***unkt der Erstellung. Wird also in eine OUTQ ausgegeben, die noch keinem Drucker zugeordnet ist, gilt die CCSID der PRTF. Ist ein Drucker zugeordnet, gilt die CHRID des Druckers.
Wird nun eine Liste auf verschiedenen Druckern ausgegeben (insbesonders bei mehrsprachigen Umgebungen) werden auch hier teilweise unerwünschte Ergebnisse erzielt, da eine Umsetzung von OUTQ zu Drucker NICHT mehr erfolgt !
Similar Threads
-
By codierknecht in forum NEWSboard SAP
Antworten: 32
Letzter Beitrag: 09-02-18, 13:00
-
By Stoeberl in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 10-01-07, 10:58
-
By Stoeberl in forum NEWSboard Programmierung
Antworten: 11
Letzter Beitrag: 26-10-06, 10:07
-
By b.horstmann in forum NEWSboard Programmierung
Antworten: 15
Letzter Beitrag: 12-10-05, 11:26
-
By Ralle in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 25-07-05, 14:58
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