Bei der successiven Umstellung von Alt nach Neu hat sich *NEW nach meiner Erfahrung als pragmatische Übergangslösung bewährt.
Häufig findet man in alten Programmen Commit in den F-Bestimmungen aber beim Verlassen eines Programmes wird schon mal ein Commit-Aufruf vergessen.
Da wundert man sich jahrelang, warum ein Job, der nur ein Menü anzeigt immer noch Satzsperren hält.
Auch wenn man keinen, bzw. kaum, Zyklus anwendet, so ist *INLR beim Verlassen eines Programmes ohne Main() immer noch wichtig, was aber ebenso häufig nicht angewendet wird.
Klar, zu OPM-Zeiten war der Open noch teuer, ins besonders als dei Platten noch langsam waren und z.T. mehr als 100 Dateien geöffnet wurden.
Ins besonders sog. File-Handler, die ihre Dateien geöffnet halten müssen, da sie im Jobleben aus zig anderen Programmen aufgerufen werden und den anderen Aufrufern z.T. die Dateipointer verbogen.
Da hat man dann dankenswerter weise den RCLRSC aufgerufen und alles war erst mal wieder OK.
Im OPM-Umfeldfunktionierte das dann auch.

Nun schnell noch alle Programme und Copystrecken mit CVTRPGSRC umgewandelt und alles neu erstellt. Der RCLRSC bleibt erhalten und die ACTGRP ist immer *CALLER, denn da hat man ja nicht gedreht.
Nur, die Programme laufen nun in QILE und RCLRSC ist erst mal wirkungslos.

Verwendet man dann aber z.B. RCLRSC *CALLER, kann man sogar dem Aufrufer aller Ressourcen wegnehmen ohne dass das Programm das mitbekommt. Wenn es dann auch noch weitermacht, wirds ganz fatal.

Um also nicht neu konzeptionieren zu müssen und so nach und nach neue Verfahren einzuführen hat sich ein SQL-Wrapper mit *NEW aus dem Menü bewährt.
Sobald das eine oder andere neue Programm erstellt wird, fängt man langsam mit benannten ACTGRP's an, baut Services mit *CALLER und sorgt dafür, dass beim Verlassen des Programmes aufgeräumt wird.

Soweit nun die Theorie.