Da machst du gar nichts falsch.
Im CLP liegen die Fehlerbehandlungen zentral am Ende. Daher springt der Debugger halt mal auf ENDPGM.

Da CLP nur jeden Befehl einzeln debuggen kann, ist der CHGVAR im MONMSG nicht einzeln überwachbar.

Dein Programm bricht ja nicht ab, deine Variable wird geändert.

Möchtest du gezielt stoppen, dann pack den CHGVAR in ein DO/ENDDO:

MONMSG ... EXEC(DO)
CHGVAR ...
ENDDO