deleteAfterUse

Wenn Sie in einer EGL-Anweisung use auf einen Datentabellenabschnitt verweisen, können Sie die Eigenschaft deleteAfterUse in die Anweisung einfügen. Die Eigenschaft beeinflusst, wie lange eine Datentabelle für Anwendungen, die für COBOL generiert wurden, im Speicher verbleibt. Die Eigenschaft wirkt sich nicht auf Java™-Programme aus.

Geben Sie den Wert YES für die Eigenschaft an, wenn die Tabelle einen großen Teil des Speichers belegt, aber nur in einem einzigen Programm in einer Reihe von aufgerufenen Programmen in COBOL-Umgebungen verwendet wird.

Der Standardwert NO bewirkt, dass die Tabelle offen gehalten wird, sodass sie von mehreren Programmsegmenten verwendet werden kann.

Die Eigenschaft wirkt sich auf den Nutzungszähler für die Datentabelle aus. Die Datentabelle wird gelöscht, wenn der Nutzungszähler den Wert null erreicht. Der Nutzungszähler wird erhöht, wenn eine sekundäre Funktion (d. h. eine Funktion, die direkt von der Funktion main() aufgerufen wird) in einem Programm auf die Datentabelle verweist. Wenn mehrere Programme von sekundären Funktionen auf die Datentabelle verweisen, wird der Nutzungszähler entsprechend erhöht.

Der Nutzungszähler wird entsprechend den Regeln in der folgenden Tabelle vermindert:

Tabelle 1. Wann wird der Nutzungszähler vermindert?
Wert von deleteAfterUse Ist das Programm segmentiert? Nutzungszähler wird unter folgenden Bedingungen vermindert:
NO Ja Die Funktion main() wird beendet oder ein converse tritt ein.
NO Nein Die Funktion main() wird beendet.
YES Ja Die sekundäre Funktion wird beendet oder ein converse tritt ein.
YES Nein Die sekundäre Funktion wird beendet.

Die Regeln scheinen komplex zu sein, doch ist ihre Wirkungsweise einfach. Wenn deleteAfterUse auf YES eingestellt wird, löscht EGL die Datentabelle, sobald sie von keiner sekundären Funktion aktiv genutzt wird. Wenn deleteAfterUse auf NO eingestellt wird, hält EGL die Datentabelle im Speicher, bis alle Programme, die die Tabelle nutzen, beendet sind.

Dabei ist zu beachten, dass die Eigenschaft resident der Datentabelle Vorrang vor der Eigenschaft deleteAfterUse der zugehörigen Anweisung use hat. Wenn resident auf YES eingestellt wird, hält EGL die Datentabelle im Speicher, bis alle Programme, die die Tabelle nutzen, beendet sind.

Beispiel

Das folgende Beispiel zeigt die Eigenschaft deleteAfterUse in einer Anweisung use.

use myMessageTable {deleteAfterUse = YES};

Kompatibilität

Tabelle 2. Überlegungen zur Kompatibilität für deleteAfterUse
Plattform Problem
Java-Generierung Java verhält sich immer so, als wäre deleteAfterUse auf NO eingestellt.
JavaScript-Generierung DataTable wird nicht unterstützt.

Feedback