Ich will ja nicht meckern, glaube aber noch nicht, dass das die Lösung ist.
Und zwar, weil der INPUT-Parameter iv_uv_xml heißt.
Das klingt sehr nach einem XML-Stream.
Und da hängt der bei der Konvertierung anzugebene Zeichensatz davon ab, was im Header des XML-Streams definiert ist.
Hier ist das offenbar utf-8.
Aber auch mit einer anderen Kodierung wäre das valides XML, wenn denn die tatsächlich verwendete Kodierung zu der im Header angegebenen Kodierung passt.
Das heißt, dass Dein Programm jetzt mit XML-Streams, die UTF-8 verwenden oder nur ASCII-Daten enthalten, funktiiert.
Aber mit iso-latin1 versagt (obwohl das vor Deiner Änderung "funktioniert" hat).
Was passiert den nach Konvertierung des Inputs iv_uv_xml (Typ X oder XSTRING) nach Typ C/STRING?
Warum kann man nicht einfach mit iv_uv_xml weiterarbeiten?
CALL TRANSFORMATION usw. kommen damit problemlos zurecht (und kümmern sich intern um die korrekte Kodierung).
Und wenn man den XML-Stream als Datei erzeugen will, kann man einfach eine Datei in BINARY MODE öffnen und iv_uv_xml da reinschreiben, und hat eine valide XML-Datei.
Wenn Du Deinen konvertierten STRING (mit im System korrekt dargestellten Umlauten) in eine Datei schreiben willst, musst Du hingegen wieder die Kodierung angeben, die im XML-Header steht, sonst ist das kein gültiges XML...