PDA

View Full Version : CCSID



Frank Hildebrandt
17-11-03, 14:34
Hallo zusammen,

wann kommt eigentlich die CCSID zum Tragen. Wenn ich mir beispielsweise in der Bibliothek QSYSINC die C-Includes anzeigen will, dann sehe ich an den Stellen an denen die eckigen und die geschweiften Klammern erscheinen sollten nur Unsinn. Die Quellendateien in der QSYSINC haben die CCSID 37. Die Client-Access Sitzung, mit der ich mir die Daten anzeige benutzt CCSID 273 und auch der interaktive Job hat CCSID 273. Müßte jetzt nicht beim Anzeigen der C-Includes eine Umsetzung von CCSID 37 nach CCSID 273 erfolgen ?

Frank

Fuerchau
17-11-03, 14:55
Normalerweise kommt die CCSID sofort zum tragen, wenn die DB und der Job unterschiedlich sind und nicht eine der beiden 65535 ist !

Wichtig ist, dass Job und CA-Sitzung die gleiche CCSID verwenden !!!

Ausnahme ist DSPPFM, da hier die Original-Hexcodes angezeigt werden sollen.

PS: Bei mir werden die Inhalte korrekt angezeigt.

Frank Hildebrandt
17-11-03, 16:57
Kommando zurück,

die CCSID des Jobs ist bei mir nicht 273 sondern 65535. Nach Änderung des Systemwertes QCCSID auf 273 funktioniert es jetzt. Allerdings habe ich jetzt festgestellt, das bei allen Programmen, die ich auf dem System erstellt habe die CCSID 65535 lautet. Könnte es bei der Verarbeitung dieser Programme auf Systemen, die nicht 273 als CCSID in QCCSID haben Probleme geben ?

Sven Schneider
17-11-03, 18:09
Ja, wenn die Programme String-Konstanten verwenden,
und diese Stringkonstanten Zeichen nicht nur aus dem invarianten Zeichensatz enthalten, wie z.B. Umlaute, Sonderzeichen.

Der Hexinhalt dieser Stringkonstanten wird zur Compile-Zeit festgeschrieben!!!

Stringkonstanten also immer aus DB-Tabellen oder MSG-Files lesen. Diese sollten dann natürlich auch die korrekte CCSID enthalten.

DTAARA geht nicht, da hier keine CCSID angegeben werden kann.

Hier hat mir übrigens Fuerchau sehr gut weitergeholfen bzw. mein Wissen vervollständigt.


Sven

Frank Hildebrandt
17-11-03, 18:28
Hallo Sven,

Du schreibst etwas von einem invarianten Zeichensatz. Ich nehme einmal an, das es sich dabei um diejenigen Zeichen handelt, die bei allen CCSID`s die gleichen Hexwerte haben. Wie kann ich herausbekommen, um welche Zeichen es sich bei dem invarianten Zeichensatz handelt.

Frank

Fuerchau
17-11-03, 18:42
Schau mal unter folgendem Link:
http://publib.boulder.ibm.com/iseries/v5r2/ic2924/info/nls/rbagsinvariantcharset.htm

Das ganze Kapitel "Globalization" gehörte mittlerweile zur Pflichtlektüre !


Anmerkung:
Ich kannte mal einen Kunden, der hatte in einem Character-Feld (CCSID 273) eine programminterne Tabelle mit gepackten Feldern !!!

Frage: Was passiert mit den Daten, wenn die Jobccsid z.B. auf 037 gestellt wird ?

Frank Hildebrandt
18-11-03, 08:10
Wenn ein neuer Satz in die Tabelle gestellt wird oder ein alter
Satz aktualisiert wird, dann werden wohl, insofern einzelne Bytes des gepackten Wertes zufälligerweise außerhalb des invarianten Zeichensatzes liegen ganau diese Werte konvertiert, was dann wohl zur Folge hat, dass der ursprüngliche gepackte Wert verändert ist. Danke für die Beiträge. Jetzt bin ich doch etwas schlauer.

Frank