Da gibt es der Möglichkeiten einige.

Programm A ruft Programm B auf. Programm B wird mit *INLR = *On verlassen. Dann befindet sich Programm B nicht mehr im Aufrufstapel und auch der Speicher mit den Variablen ist weg.

Programm A ruft Programm B auf. Programm B wird mit *INLR = *Off und "Return" verlassen. Dann befindet sich Programm B nicht mehr im Aufrufstapel, jedoch ist der Speicher mit den Variablen noch vorhanden. Jetzt ruft Programm A noch einmal Programm B auf. Dann haben die Variablen die gleichen Werte, die sie hatten, als das Programm B mit *INLR = *Off und "Return" verlassen wurde.

Programm A ruft Programm B auf. Programm B ruft Programm A auf. In RPG II und RPG III werden rekursive Aufrufe grundsätzlich mit einem Fehler belohnt. In RPG IV gibt es nur dann einen Abbruch, wenn sich die Programme, die sich rekursiv aufrufen in der gleichen Aktivierungsgruppe befinden. Bei unterschiedlichen Aktivierungsgruppen funktionieren auch rekursive Aufrufe. Jedes Programm hat dann seinen eigenen Speicher für Variablen und beim Aufruf des Programms wird dieser initialisiert und nicht vom vorhergehenden Aufrufstapeleintrag des gleichen Programms übernommen.