Die CCSID eines Programmes ist zur Laufzeit vollkommen unbedeutend!

Ein OPM-Programm hat keine CCSID, beim ILE-Programm ist die CCSID auf Modulebene zu sehen und deutet nur auf die CCSID der Quelle hin.

Wenn ein OPM-Programm erstellt wird, wird die CCSID der Quelle in die CCSID des Job's umgewandelt und damit dann der Programmcode erstellt.
Alle Textkonstanten des Programmes behalten dann zur Laufzeit ihren Hexwert. Das ist insbesonders bei "varianten" Zeichen wie "!", "#" u.ä. problematisch wenn die CCSID der PF später eine andere als die Quelle ist.

Das Selbe gilt auch für ILE-Programme, nur sieht man hier, für welche CCSID das Modul entwickelt wurde.
Dies ist aber auch nicht relevant, wenn keine varianten Zeichen in der Quelle vorhanden sind.

Laut RPGLE-Handbuch wandelt der Compiler alle Copy-Strecken / Include's in die CCSID der Hauptquelle um bevor die Umwandlung in die Job-CCSID stattfindet.

Dies ist gegenüber OPM nur bedingt von Vorteil, da ja zur Laufzeit später keine Codewandlung stattfindet.