PDA

View Full Version : Refresh-Funktion für Trigger-Upgm. (ILE RPG)



WeKaSys
12-06-07, 12:37
Hallo zusammen,

wir wollen für den Fall einer Programmänderung eine Refresh-Funktion für ein ILE RPG Programm schaffen, das im selben Job von einem Trigger re-entrant aufgerufen wird, ohne daß LR gesetzt wird.

Problem: Mit RCLRSC bzw. RCLACTGRP *eligible wird das alte Programm wohl aus dem Speicher entfernt, beim erneuten Aufruf durch den Trigger wird aber nicht das neue Programm geladen, sondern wieder das alte Programm, das noch in der QRPLOBJ des Jobs steht.

Frage: Welche Maßnahmen sind erforderlich, damit der Trigger beim nächsten Mal das neue Unterprogramm aufruft?
System: V5R3

Freundliche Grüße aus Hamburg (28° C)

Fuerchau
12-06-07, 15:17
Einzige Lösung:
Der Trigger ist ein CLP, dass dann das Original-PGM aufruft.
CLP merkt sich keine Adressen sondern sucht das Programm immer neu, was allerdings drastisch an die Laufzeit geht.

Im CLP können alle Parameter als CHAR(1) deklariert werden, da ja nur Adressen übergeben werden.

WeKaSys
12-06-07, 17:44
Wir haben jetzt folgendes festgestellt:

Wenn der Trigger mit LR geschlossen wird, dann wird beim nächsten Auslösen der Trigger und auch das von ihm aufzurufende geänderte Upgm. geladen.

Wegen der Performance wollen wir den Trigger aber nicht jedes Mal mit LR schließen, sondern nur dann, wenn das Upgm. geändert und ersetzt wurde. Dies kann man feststellen, indem man im Stack abfragt, ob eine Version aus der QRPLOBJ geladen ist.