Die Anweisung FREE gibt das aufgerufene Programm frei und schließt auch alle Dateien dieses Programmes.

Hinter FREE und Return mit *INLR = *ON verbirgt sich die selbe MI-Anweisung zur Deaktivierung der Instanz, wobei im Programm selber ggf. noch Puffer von O-Dateien weggeschrieben werden.
Free macht das nicht, sondern alle Ressourcen des Programmes werden freigegeben.
Allerdings betrifft das nur diesen Aufruf, Ressourcen, die durch weitere Unterprogramme belegt wurden werden natürlich nicht freigegeben, hier hilft tatsächlich nur RCLRSC.

Call-Stack und Aktivierung sind leider zwei verschiedene Dinge.
Beim 1. Aufruf wird ein Programm aktiviert und bekommt intern halt eine Aktivierungs-ID.
Danach erfolgt der Aufruf, so dass das Programm nun im Callstack steht und nach Return wieder verschwindet.