Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

KC_CHANGE_APPLICATION - Anwendungsprogramm austauschen

Mit KC_CHANGE_APPLICATION können Sie während des Anwendungslaufs den Austausch des gesamten Anwendungsprogramms einleiten. Damit können ohne Beendigung der Anwendung Teilprogramme ersetzt und neue Teilprogramme zum Anwendungsprogramm hinzugefügt werden. Zum Programmaustausch siehe auch openUTM-Handbuch „Einsatz von UTM-Anwendungen“.

Mit KC_CHANGE_APPLICATION können Sie folgende Aktionen durchführen:

  • Eine UTM-Anwendung auf einem BS2000-System, die mit Lademodulen generiert ist, in allen Prozessen beenden und neu laden.

    Diese Funktion benötigen Sie, um Lademodule in einem Common Memory Pool auszutauschen. Beim Neuladen wird die jeweils aktuelle Version der Lademodule geladen, die zuvor mit einem KC_MODIFY_OBJECT-Aufruf für den Objekttyp KC_LOAD_MODULE vorgemerkt wurde.

    Das Beenden des Anwendungsprogramms in allen Prozessen mit anschließendem Neuladen bewirkt außerdem, dass alle Lademodule entladen werden, die mit Lademodus ONCALL generiert sind.

    Es sind nur subopcode1=KC_NEW und KC_SAME möglich. KC_SAME hat die gleiche Wirkung wie KC_NEW.

  • Das gesamte Anwendungsprogramm einer UTM-Anwendung auf Unix-, Linux- und Windows-Systemen kann durch das Anwendungsprogramm der nächsthöheren Dateigeneration ersetzt werden (subopcode1=KC_NEW), die im Dateigenerationsverzeichnis PROG (im Basisverzeichnis filebase der Anwendung) steht.

    Sie können mit KC_CHANGE_APPLICATION den Programmaustausch auch rückgängig machen, d.h. wieder auf das zuvor geladene Anwendungsprogramm zurückschalten (subopcode1=KC_OLD), oder das Anwendungsprogramm neu laden (subopcode1=KC_SAME), ohne auf eine andere Dateigeneration umzuschalten.


Folgende Voraussetzungen müssen erfüllt sein:

  • Ist eine UTM-Anwendung auf einem BS2000-System mit Lademodulen generiert, müssen Sie die Teile der Anwendung, die in einem Common Memory Pool liegen und ausgetauscht werden sollen, zuvor mit KC_MODIFY_OBJECT-Aufrufen Objekttyp KC_LOAD_MODULE (siehe "obj_type=KC_LOAD_MODULE") zum Austausch vormerken lassen.

  • Für den Austausch eines UTM-Anwendungsprogramms auf Unix-, Linux- und Windows-Systemen sollten die verschiedenen Versionen des Anwendungsprogramms (auch das aktuell geladene) mit Hilfe des UTM-Tools KDCPROG im Dateigenerationsverzeichnis filebase/PROG bzw. filebase\PROG verwaltet werden. Das Dateigenerationsverzeichnis muss mit Hilfe von KDCPROG erstellt worden sein (KDCPROG CREATE).
    Falls das Dateigenerationsverzeichnis nicht existiert, lädt UTM das Anwendungsprogramm filebase/utmwork (auf Unix- und Linux-Systemen) bzw. filebase\utmwork (auf Windows-Systemen) neu.

Der Programmaustausch ist im openUTM-Handbuch „Einsatz von UTM-Anwendungen“ beschrieben.

Beim Austausch des Anwendungsprogramms ist Folgendes zu beachten:

  • Im neuen Anwendungsprogramm hinzugefügte Teilprogramme müssen bei der KDCDEF-Generierung definiert oder durch die Administration dynamisch konfiguriert worden sein.

  • Im neuen Anwendungsprogramm sollten keine Teilprogramme fehlen, die vorher vorhanden waren. Aufträge, die für einen Transaktionscode angenommen wurden, für den nach einem Programmaustausch kein Teilprogramm mehr da ist, werden von UTM bei der Ausführung abnormal beendet (PEND ER).


Ablauf / Wirkungsdauer / Transaktionssicherung / Cluster

Durch den Aufruf wird der Programmaustausch angestoßen, d.h. ein Auftrag zum Programmaustausch erzeugt. Bei Rückkehr in das Teilprogramm ist der Austausch noch nicht durchgeführt. Der Programmaustausch unterliegt nicht der Transaktionssicherung. Er kann nicht durch einen in derselben Transaktion folgenden RSET-Aufruf zurückgesetzt werden.

Der Austausch des Anwendungsprogramms wird für jeden Prozess der Anwendung einzeln durchgeführt, indem das laufende Anwendungsprogramm für diesen Prozess beendet und das neue Anwendungsprogramm geladen wird. Zu einem Zeitpunkt wird das Anwendungsprogramm nur in einem Prozess ausgetauscht, um zu vermeiden, dass der laufende Betrieb durch den Programmaustausch erheblich gestört wird. In der Zeit, in der das Anwendungsprogramm in einem Prozess ausgetauscht wird, werden Aufträge von den anderen Prozessen bearbeitet. Diese Aufträge können dann auch Prozesse erhalten, in denen noch das alte Anwendungsprogramm abläuft. Dadurch werden in der Austauschphase Aufträge entweder noch vom alten oder schon vom neuen Anwendungsprogramm bearbeitet.

In UTM-Cluster-Anwendungen gilt (Unix-, Linux- und Windows-Systeme):
Der Aufruf wirkt Cluster-global, d.h. ein Anwendungsaustausch wird in jeder laufenden Knoten-Anwendung angestoßen.

Nach der Bearbeitung des Auftrags informiert UTM Sie mit einer Meldung über Erfolg bzw. Misserfolg des Programmaustausches. UTM erzeugt die Meldung K074, wenn der Programmaustausch erfolgreich durchgeführt werden konnte. Konnte UTM den Programmaustausch nicht durchführen, wird die Meldung K075 erzeugt. Treten Fehler auf, dann wird zusätzlich zu K074 bzw. K075 die Meldung K078 ausgegeben, die als Insert die Fehlerursache enthält.

Versorgung der zu übergebenden Bereiche

Funktion des Aufrufs

Angabe im

Parameterbereich1

Identifikations-
bereich

Selektions-
bereich

Datenbereich

In UTM-Anwendungen auf Unix-, Linux- und Windows-Systemen mit Shared Objects/DLLs:
Aktuelles Anwendungsprogramm gegen das Anwendungsprogramm der nächsthöheren Version austauschen.

subopcode1:
KC_NEW

                                          

——

——

——

(Beim Aufruf muss der Zeiger auf einen Datenbereich für die Rückgaben von UTM übergeben werden.)


In UTM-Anwendungen auf Unix-, Linux- und Windows-Systemen mit Shared Objects/DLLs:
Programmaustausch rückgängig machen, d.h. das aktuell geladene Anwendungsprogramm gegen das Anwendungsprogramm der nächstniedrigeren Version austauschen.

subopcode1:
KC_OLD

——

——

In UTM-Anwendungen auf Unix-, Linux- und Windows-Systemen mit Shared Objects/DLLs:
Anwendungsprogramm aus derselben Dateigeneration neu laden.

subopcode1:
KC_SAME

——

——

In UTM-Anwendungen auf BS2000-Systemen mit Lademodulen:

Das Anwendungsprogramm in allen Prozessen beenden und neu starten, um Anwendungsteile im Common Memory Pool auszutauschen. Statische Anwendungsteile lassen sich damit auch austauschen, wenn man die Anwendung zuvor neu bindet.

subopcode1:
KC_NEW /
KC_SAME

——

——

——

1

In allen Fällen muss im Parameterbereich der Operationscode KC_CHANGE_APPLICATION angegeben werden.

Versorgung der Parameter

Parameterbereich

Feldname

Inhalt

version

KC_ADMI_VERSION_1

retcode

KC_RC_NIL

version_data

KC_VERSION_DATA_11

opcode

KC_CHANGE_APPLICATION

subopcode1

KC_NEW / KC_SAME / KC_OLD (Unix-, Linux- und Windows-Systeme)

id_lth

0

select_lth

0

data_lth

Länge  des Datenbereichs / 0

Identifikationsbereich

Selektionsbereich

Datenbereich

KDCADMI-Aufruf

KDCADMI (&parameter_area, NULL, NULL, &data_area)

Rückgaben von UTM

Parameterbereich

Feldname

Inhalt

retcode

Returncodes

data_lth_ret

tatsächliche Länge der Daten im Datenbereich

Datenbereich

Datenstruktur kc_change_application_str / —


subopcode1

Mit subopcode1 legen Sie fest, welche Art des Programmaustauschs durchgeführt werden soll. Folgende Angaben sind möglich:


KC_NEW

Beim Programmaustausch einer UTM-Anwendung auf Unix-, Linux- oder Windows-Systemen lädt UTM das Anwendungsprogramm aus der nächsthöheren Dateigeneration.

Bei einer UTM-Anwendung auf einem BS2000-System, die mit Lademodulen generiert ist, beendet UTM das Anwendungsprogramm nacheinander in allen Prozessen und lädt es sofort wieder. Dabei wird die jeweils aktuelle Version der Lademodule geladen, d.h. die durch KC_MODIFY_OBJECT-Aufrufe vorgemerkten Lademodule im Common Memory Pool werden ausgetauscht.

Statische Anwendungsteile lassen sich damit auch austauschen, wenn man die Anwendung zuvor neu bindet.

KC_OLD

Beim Programmaustausch einer UTM-Anwendung auf Unix-, Linux- oder Windows-Systemen lädt UTM das Anwendungsprogramm aus der nächstniedrigeren Dateigeneration.

Damit kann wieder das alte Anwendungsprogramm geladen werden, wenn nach Umschalten auf eine neue Dateigeneration Fehler im Anwendungsprogramm entdeckt werden.

KC_SAME

Auf Unix-, Linux- und Windows-Systemen lädt openUTM das Anwendungsprogramm aus der derselben Dateigeneration.

Auf BS2000-Systemen wirkt KC_SAME wie KC_NEW.


data_lth

Im Feld data_lth geben Sie die Länge des Datenbereichs an, der für die Rückgaben von UTM zur Verfügung stehen soll.

Beim Programmaustausch einer UTM-Anwendung auf Unix-, Linux- oder Windows-Systemen müssen Sie data_lth >= sizeof (kc_change_application_str) setzen.

Beim Aufruf der Funktion müssen Sie den Zeiger auf den Datenbereich übergeben.

Beim Programmaustausch einer UTM-Anwendung auf einem BS2000-System, die mit Lademodulen generiert ist, können Sie data_lth=0 angeben. UTM liefert dann keine Daten zurück.

retcode

Im Feld retcode liefert UTM den Returncode des Aufrufs zurück. Neben den im Abschnitt „Returncodes" aufgelisteten Returncodes können beim Austausch des Anwendungsprogramms zusätzlich folgende Returncodes auftreten:


Maincode = KC_MC_REJECTED

Der Aufruf wurde von UTM abgewiesen.

Subcodes:

KC_SC_NOT_CHANGEABLE

Die Anwendung wurde im Dialog gestartet. Ein Programmaustausch ist nicht möglich.

KC_SC_FILE_ERROR (nur auf Unix-, Linux- und Windows-Systemen)

Beim Zugriff auf die Dateigeneration des zu ladenden Anwendungsprogramms ist ein Fehler aufgetreten. UTM hat die Meldung K043 mit dem DMS-Returncode erzeugt.

KC_SC_NOT_GEN (nur auf BS2000-Systemen)

Die UTM-Anwendung ist ohne Lademodule generiert.

KC_SC_NO_GLOB_CHANG_POSSIBLE

Nur bei UTM-Cluster-Anwendungen:
Keine globalen Administrationsänderungen möglich, da die Generierung der Knoten-Anwendungen zur Zeit nicht konsistent ist.

KC_SC_JFCT_RT_CODE_NOT_OK

Nur bei UTM-Cluster-Anwendungen:
UTM-interner Fehler.
Bitte wenden Sie sich an die Systembetreuung.

Maincode = KC_MC_REJECTED_CURR

Der Aufruf kann zur Zeit nicht bearbeitet werden.

Subcode:

KC_SC_CHANGE_RUNNING

Es läuft gerade ein Programmaustausch, d.h. ein zuvor gestarteter Programmaustausch ist noch nicht abgeschlossen.

KC_SC_INVDEF_RUNNING

Nur bei UTM-Cluster-Anwendungen:
Es läuft gerade ein inverser KDCDEF, d.h. der Auftrag kann z.Zt. nicht bearbeitet werden.

Maincode = KC_MC_RECBUF_FULL

Nur bei UTM-Cluster-Anwendungen.

Subcode:

KC_SC_NO_INFO

Der Puffer mit Wiederanlauf-Information ist voll. (Siehe openUTM-Handbuch „Anwendungen generieren“, KDCDEF-Steueranweisung MAX, Parameter RECBUF).


data_lth_ret

Im Feld data_lth_ret des Parameterbereichs liefert UTM die tatsächliche Länge der Daten im Datenbereich zurück.

Datenbereich

Beim Programmaustausch einer UTM-Anwendung auf Unix-, Linux- oder Windows-Systemen liefert UTM im Datenbereich die Datenstruktur kc_change_application_str zurück, sofern beim Aufruf von KDCADMI der Zeiger auf einen Datenbereich übergeben wurde.


struct  kc_change_application_str

char program_fgg_new[4];

char program_fgg_old[4];

program_fgg_new

In diesem Feld liefert UTM die Dateigenerationsnummer des Anwendungsprogrammes zurück, das durch den Programmaustausch geladen wird.

program_fgg_old

In diesem Feld liefert UTM die Dateigenerationsnummer des Anwendungsprogrammes zurück, das vor dem Programmaustausch geladen war.