Ganz schön kompliziert und systembelastend.
Ggf. geht es hier auch einfacher:
Für jedes Device gibt es eine eigene MSGQUEUE.
Per CHGMSGQ ... DLVRY(*BREAK) ... PGM(MYLIB/MYPGM) kannst du ein Programm hinterlegen.
Dann machst du ein zentrales (Prestart-Job) Programm, dass per DTAQ mit Timeout die entsprechenden Job's (Datenbank) überwacht.
Da du ja sowieso jedes betroffene Programm anpassen musst reicht hier eine Anmeldung des Jobs am Überwachungsjob sowie ein CHGMSGQ.
Nach jedem Enter/F-Taste sendest du einen Keepalive per QSNDDTAQ an den Überwachungsjob.
Beim Beenden erfolgt (ggf.)noch ein Abmelden am Überwachungsjob.

Der Überwachungsjob sendet per SNDBRKMSG bei Timeout eine Nachricht an die Station.
Nun wird dein Programm aufgerufen, welches nun entscheidet was gemacht wird:
a) eigenen Bildschirm anzeigen
b) ENDJOB/DSCJOB einleiten.

Per JOB-API kann geprüft werden, ob der Job bei Timeout noch aktiv ist um ihn ggf. aus der Liste auszutragen.