Einen Austausch von Anwendungsteilen müssen Sie explizit über das Administrationskommando KDCPROG anfordern. Dabei müssen Sie Angaben zur Version des neu zu ladenden Lademoduls machen. openUTM prüft die Zulässigkeit der Angaben und veranlasst den Programmaustausch. openUTM verifiziert beim Programmaustausch nicht, ob die mit KDCDEF definierte Zuordnung in der LOAD-MODULE-, AREA- und PROGRAM-Anweisung der tatsächlichen Aufteilung der Lademodule in den Bibliotheken entspricht.
Die Änderungen, die sich durch die Administrationsaktionen zum Programmaustausch in dem geladenen Anwendungsprogramm ergeben haben, werden von openUTM über das Ende des Anwendungslaufs hinaus gesichert; d.h. beim nächsten Start werden die Versionen der Lademodule geladen, die durch die Administrationsaktionen geändert wurden. Auch bei einer Änderungsgenerierung mittels KDCUPD können die Versionsnummern der ausgetauschten Lademodule in die neue KDCFILE übernommen werden, so dass bei dem nächsten Start der Anwendung wieder die zuletzt geladenen Module geladen werden.
Als Einzelmodul kann beim Programmaustausch nur ein Programmteil ausgetauscht werden, der mit einem Ladevorgang geladen wurde; d.h. als Teil kann jeweils nur ein LLM oder OM ausgetauscht werden. Es wird nur das bei openUTM generierte Modul ausgetauscht, nicht die gesamte Ladeeinheit, d.h. wenn die Ladeeinheit Teile des Laufzeitsystems enthält, die per Autolink dazugeladen wurden, so werden diese beim Austausch nicht entladen.
Beispiel
Das Lademodul A-LLM steht in der Bibliothek OWN-LIB und ist generiert mit
LOAD-MODULE A-LLM,LIB=OWN-LIB - ,VERSION=001 - ,LOAD-MODE=STARTUP - ,ALTERNATE-LIBRARIES=YES
A-LLM enthält beispielsweise ein Teilprogramm APU, das eine Funktion bfunc aufruft. Diese Funktion ist in B-LLM, das sich weder in A-LLM noch in der Bibliothek OWN-LIB befindet. In diesem Fall wird A-LLM beim Start des Anwendungsprogramms mit B-LLM per Autolink-Funktion geladen. Bei einem Austausch des A-LLM mit KDCPROG bleibt B-LLM mit bfunc im Speicher. Dies kann zu Inkonsistenzen führen, wenn B-LLM Unterprogramme von Anwendungsprogrammen und nicht ausschließlich Laufzeitmodule enthält. Enthält B-LLM auch Anwendungslogik, dann sollten A-LLM und B-LLM zu einem LLM gebunden werden.
Bei einem Austausch von einzelnen Lademodulen werden die Event-Exits SHUT bzw. START nicht durchlaufen. Diese werden nur dann aktiviert, wenn bedingt durch einen Programmaustausch in einer Task das gesamte Anwendungsprogramm beendet und neu geladen wird.
Der Austausch verläuft unterschiedlich, je nachdem, zu welchem Zeitpunkt (STARTUP oder ONCALL) und wohin (Common Memory Pool oder nicht) das Lademodul geladen wird.