HiHo miteinander!

Meine Frage bezieht sich auf die OPM Umgebung und lautet wie folgt:

"Welche (RPG-)Programme sind von einem RCLRSC Aufruf mit LVL(*) betroffen?"

Ich möchte das etwas verdeutlichen:


  1. CL-Program 'CL1' ruft per CALL RPG-Programm 'R1' auf.
  2. R1 ruft per CALL RPG-Programm R2 auf
  3. R2 kehrt zurück, ohne LR zu setzen.
  4. Wenn ich nun aus R1 wiederholt R2 aufrufe, hat dieses seine alten Werte, *INZSR wird nicht durchlaufen.
  5. Wenn ich nun aus R1 QCMDEXC RCLRSC aufrufe, wird R2 freigegeben.
  6. Beim nächsten Aufruf von R2 wird dieses neu gestartet, inklusive Ausführung von *INZSR.

Soweit so gut.

Was ich aber nicht verstehe ich dieses Verhalten:


  1. CL-Program 'CL1' ruft per CALL RPG-Programm 'R1' auf.
  2. R1 ruft per CALL RPG-Programm R2 auf
  3. R2 kehrt zurück, ohne LR zu setzen.
  4. R1 kehrt ebenfalls zurück, und zwar zu CL1, auch ohne LR zu setzen.
  5. Wenn ich nun aus CL1 (es ist immer noch aktiv) wieder R1 aufrufe, und dann von dort ein RCLRSC absetze, bleibt R2 davon völlig unbeeindruckt.

Ich kann R2 ab dem Moment, wo ich einmal R1 verlassen habe, nur noch vom Ursprungsskript aus freigeben.

In der Literatur habe ich dazu keine für mich klar interpretierbare Erklärung gefunden.

Wer weiss Rat?

Viele Grüße,
Edgar