Da sich SQL ja um den Inhalt nun mal nicht kümmert, wird durch den Cast eines langen Feldes in ein kurzes Feld eben eine Warnung ausgegeben, die zu Verlust von Daten führen könnte.

Solche Dinge sollte man vermeiden, ins besonders wenn bei u.U. Millionen von Sätzen dadurch das Joblog zugemüllt wird und sogar der Job (wenn Systemwerte entsprechend eingestellt sind) angehalten werden kann.
Im Zweifel wird bei *WRAP auch noch jedesmal ein Joblog ausgegeben.
Da geht dann sogar die Performance in die Knie.

Wenn du sicher bist, dass der Inhalt passt, musst du halt mehrere Schritte verwenden:

dec(dec(substr(digits(MyField), Start, Länge), 10, 0) / 100, 8, 2)
* case when MyField < 0 then -1 else 1 end

Start und Länge hängen dann halt von der Ursprungsgröße ab.