Zitat Zitat von B.Hauser Beitrag anzeigen
Der Compiler verarbeitet per Default die Quelle in der CCSID der Quelle.
Über den Parameter TGTCCSID in den Compile Commands kann eine andere CCSID (z.B. *JOB oder numerischer Wert) angegeben werden. Bei einer von der Quelle abweichenden CCSID wird zunächst die Quelle in die entsprechende CCSID konvertiert und anschließend compiliert.

Schlimmer ist, was zur Laufzeit passiert. Zur Laufzeit werden per Default alle CHAR/VARCHAR Variablen und Spalten in Tabellen/phys./log.Dateien (für native I/O) oder externen Datenstrukturen in die Job-CCSID konvertiert. Zeichen, die nicht umgesetzt werden können, werden durch ein Substitutions-Zeichen x'FE' ersetzt, wodurch Daten verloren gehen können. Das gleiche geschieht i.Ü. auch mit hardcodierten Sonderzeichen. Deshalb sollte man soweit möglich Sonderzeichen in Quellen vermeiden. Nur manchmal sind Sonderzeichen doch notwendig z.B. wenn Regular Expressions verwendet werden müssen ... und dann kann man sich ganz schön wundern. Spätestenfalls wenn das (Service-)Programm in einer Umgebung mit einer anderen CCSID laufen muss.
... dem kann man natürlich gegensteuern, durch entsprechende Schlüssel-Worte in den H- und D-Bestimmungen.
... die Quelle hat dann utf8, wenn dann eine Quelle auf einer deutschen Maschine einen Knast in einem Namen hat geht es, auf einer Ami-Büchse fliegt einem das dann um die Ohren.