Zitat Zitat von Fuerchau Beitrag anzeigen
Ein Service-Programm kann auch ACTGRP(*CALLER) haben. Dann wird das Programm eben zusammen mit der ACTGRP des Aufrufers rausgeschmissen.
Das hat auch den Effekt, dass das Programm mehrfach, eben je ACTGRP, im Speicher liegen kann.
Zu bedenken ist, dass Serviceprogramme ja von verschiedenen Hauptprogrammen aufgerufen werden und somit SQL-Cursor vom Einen durch Andere zerstört werden können.

Ein RCLACTGRP ACTGRP(*ELIGIBLE) hat ggf. bei Triggerprogrammen in eigenen ACTGRP's die Auswirkung, dass der Job beendet werden muss.
Die weitere Ausführung der Trigger ist nicht mehr möglich. Dies könnte jedoch releaseabhängig und durch PTFs behoben sein.
Datenbankmodule, wie vom OP angeführt, müssen ACTGRP(*CALLER), was üblicherweise default ist, haben, sonst wären sie nicht Transaktionsfähig (commit) und der Transaktionsmaster muss eine eigenen benannte ACTGRP oder *NEW haben - dann funzt das auch mit Cursor etc. wie gewollt.

Bei den Trigger Programmen ist das ähnlich: ein Triggerprogramm in einer eigenen ACTGRP ist ein Kunstfehler, die müssen immer *CALLER haben - trotzdestonichts ist das beschrieben Verhalten für den abstrusen Fall (es gibt immer wieder Leute, die es gerne kompliziert haben) als Bug anzusehen.

D*B