Abgesehen von deinem Test:

Man sollte NIE CCSID-abhängige Zeichen (varianter Zeichensatz) als Programmkonstante verwenden, da zur Laufzeit die eingebetteten Zeichen nicht mehr gewandelt werden.
In diesem Fall ist nämlich das Programm zur Laufzeit immer von dieser CCSID abhängig.

Hier findet man einen Hinweis leider nur auf SRCPF's:
Language compilers CCSID

Ich denke aber, dass der Compiler beim Lesen aus dem IFS in CCSID 037 wandelt, was die Ausgaben deines Tests zeigen.
Hier hast du dann wohl keine andere Chance, als deinen Job zur Compilezeit auf 037 zu stellen.
Dies ist zwar dann für den Compiler zum Erkennen von Sonderzeichen richtig, aber zur Laufzeit erfolgt ja keine Codewandlung und dann hast du wieder die Probleme mit varianten Zeichen.

Helfen kann da warscheinlich nur eine Zwangscodierung zur Laufzeit von der Source-CCSID in die Job-CCSID.

Welche CCSID's tatsächlich verwendet wurden, wirft der Compiler eigentlich am Ende des Spools irgendwo aus.