Mit CAST kann man zwar in beliebige CCSID's konvertieren, aber alle SBCS-CCSID's werden schlussendlich wieder in die Job-CCSID umgewandelt!
Einzig UCS2/UTF8/UTF16 und 65535 (*HEX) werden nicht umgewandelt.

Mein Job steht auf CCSID 273.
Caste ich z.B. ein Feld von CCSID 273 direkt in 297 werden die Zeichen für den Job wieder in 273 zurückgewandelt.

Möchte ich explizit die Daten anders interpretieren muss ich mittels Zwischenschritt erst in CCSID 65535 casten und dieses Ergebnis in die Zielccsid, was allerdings wieder in die Jobccsid gewandelt wird.

Dies gilt auch für JDBC/ODBC-Verbindungen.

Ein weiteres Problem besteht wohl noch in der Ausgabe auf STDOUT.
Ich nehme mal an, dass die Ausgabe in eine IFS-Datei umgeleitet wird.
Nun erfolgt, je nach CCSID dieser IFS-Datei auch wiederum eine Umwandlung von der Job-CCSID in die IFS-CCSID bzw., wenn die IFS-Datei auch auf z.B. 273 steht, muss spätestens bei der Anzeige in einem Browser die Konvertierung in z.B. 1252 erfolgen.
Wenn hier nun selber UTF-8 ausgegeben wurde weiß das System das ja nicht, nimmt dann eben EBCDIC an und wandelt die UTF-8 von EBCDIC in die Ziel-CCSID, was zu Schrott führen wird.
Hier gibts leider nur die Lösung, IFS-Dateien per IFS-API's zu erstellen, die Datei ohne Codewandlung mit CCSID 1252 zu erstellen und alle Codewandlungen in UTF-8 dann im Programm durchzuführen.