OPM-Cobol läuft immer in der DFTACTGRP, CBLLE per Default in QILE.
Damit Sind 2 ACTGRP's im Spiel und dann geht das so nicht.
Variante 1 (am Einfachsten):

ACTGRP(*CALLER), damit läuft das Programm in der selben ACTGRP und auch der selben RUN UNIT.

Variante 2:
Mit eigener ACTGRP, egal ob QILE oder benannt, ist tatsächlich der Return entscheidend:

EXIT PROGRAM: Falls nicht Hauptprogramm, dann Return.
STOP RUN: Beenden der gesamten Rununit der ACTGRP (gefährlich, da in tiefster Ebene das höchste Programm beendet wird.

GOBACK: versucht zuerst ein EXIT PROGRAM, wenn erfolglos da letztes, dann STOP RUN.

Wenn das höchste Programm der RUN UNIT in eigener ACTGRP aktiv bleiben soll, dann geht das tatsächlich nur per
EXIT PROGRAM AND CONTINUE RUN UNIT.
Dies wird nur auf höchster Aufrufebene ausgewertet und klappt natürlich nicht bei ACTGRP(*NEW).

Den Begriff RUN UNIT kennen die RPG'ler nicht, da hier i.W. alles per *INLR gesteuert wird.
Auch gibt es in RPG/LE keine Möglichkeit in einer Kette von Calls das oberste Programm mit allen dazwischen zu beenden (siehe STOP RUN).
Es ist wirklich so, dass ein STO RUN auch in der 5. Ebene funktioniert solange alle Calls in der selben ACTGRP laufen. Alle CLP's/RPGLE's dazwischen werden gleich mit gecancelt.