Dir ist aber schon klar, dass in UTF-8 ein Zeichen 1, 2, 3 oder 4 Byte lang sein kann?
Die RPG Built-In-Funktionen (z.B. %SUBST oder %SCAN ...) arbeiten per Default auf Byte-Ebene.
Ein %SUBSTR() könnte somit mitten in ein Zeichen platzen und dieses halbieren.

Wie man diese Probleme in RPG umgehen kann, werden hier beschrieben:
CHARCOUNT-NATURAL mode