Auf den ersten Blick kann ich da nichts erkennen.
Da du am Anfang die Pufferdaten per %SUBST herauskopierst, gibt es das Adressproblem nicht.
Du solltest nur darauf achten, dass ja nach Ereignis die Adresse des puffers ungültig ist und du "irgendwas" überrägst.
Sicherlich geht es mit Pointern einfacher, ist hier aber nicht der Grund.

Hier hilft wohl nur der Debugger weiter um das Problem näher einzukreisen.

Noch ein paar Empfehlungen:
Du solltest das Programm nicht mit *INLR=*ON verlassen, sondern es aktiv halten.
Das bringt Performance (Open/Close deiner Log-Dateien).
Auch das QUSRJOBI-API solltest du nur einmal aufrufen, da sich die relevanten infos zur Joblaufzeit nie ändern.

Auch die Aktivierungsgruppe könnte ein Problem sein. Hier wird Standard QILE verwendet.
Ggf. ist *CALLER die bessere Wahl.

Tritt der Fehler auch immer beim 1. Aufruf oder erst später, also beim wiederholten Aufruf, auf?