PDA

View Full Version : ACTGRP zumachen



ILEMax
17-08-18, 15:16
Hallo *all
um recursive aufrufe zu ermöglichen, rufen wir ab uns an ein in *caller laufendes RPGPGM
über ein in *NEW laufendes CL.

Das läuft schon ewig so und führt auch selten zu Problemen.
Aktuel habe ich einen Abbruch. (MCH3601 aber alle Paramerter passen, es ist zu dem Zeitpunkt schon mehrere 10.000 mal durch diese Routine gelaufen)

Lt. "Offene Dateien" sind ca 12 Dateien offen, in 5 ACTGRP's, die meisten benannt.
Einige Dateien sind in einer ACTGRP mit der Nr 784335 offen.
Da das Pgm (eigendlich) problemlos läuft und immer nur abbricht, wenn die zu verarbeitende Datei solch ein Brocken ist, vermute ich einen zusammenhang mit der hohen actgrp Nr.

Wenn das CL (das in *new läuft) verlassen wird, ist dann die ACTGRP zu?
Ich denke nicht. Also frag ich mich ob das gerufene Pgm 'irgendwoher' die ActgrpNr auslesen kann und ich diese actgrp gezielt mit rclactgrp zumachen kann?
Ein *eligible soll ja nicht so gut sein.

Anny Tipps?
Danke
der ILEMax

Fuerchau
17-08-18, 15:42
"Ein *eligible soll ja nicht so gut sein."
Stimmt bei Serviceprogrammen. Die werden als inaktiv rausgeschmissen. Wird aber ein impliziter Open in einem Modul gemacht, merkt die Runtime nicht, dass da ein Close vom System gemacht wurde und ein neuer Open erfolgt nicht.
*new wird zugemacht, wenn die oberste Ebene verlassen wird.
Alle Programme mit *CALLER werden ebenso deaktiviert.
Programme benannter ACTGRP's werden nicht deaktiviert auch wenn sie von *NEW aufgerufen werden.
Problematisch sind u.U. Serviceprogramme mit *CALLER, da hier die RPG-Runtime zu spinnen anfängt.

MCH3601 könnte auf einen Zugriff einer geschlossenen Datei hindeuten, die aber von der ACTGRP zwangsgeschossen wurde.