DataTable-Eigenschaften

Sie definieren jeden DataTable-Abschnitt in einer eigenen EGL-Quellendatei, in der Sie jede der folgenden Eigenschaften angeben können. Nur die Eigenschaft contents ist erforderlich.

alias
Eine Zeichenfolge (in Anführungszeichen), die in die Namen generierter Ausgaben aufgenommen wird. Wenn Sie keinen Aliasnamen angeben, wird stattdessen der DataTable-Name verwendet.
contents
Ein Wertebereich für die DataTable-Zellen. Jede Zeile in der Feldgruppe stellt eine Tabellenzeile dar. Jede Zeile wird so formatiert, wie dies in den Spaltendefinitionen angegeben ist. Jeder Wert ist einer der folgenden Literaltypen:
  • Ein numerisches Literal
  • Ein Zeichenfolgeliteral oder eine Verkettung von Zeichenfolgeliteralen
  • Ein boolesches Literal (YES oder NO, TRUE oder FALSE)
Der Inhaltstyp in einer Zeile muss mit den übergeordneten Spaltendefinitionen kompatibel sein.
resident
Ein boolescher Wert, der angibt, ob die Datentabelle (DataTable) im Speicher verbleibt, nachdem alle Programme beendet sind, die auf die Datentabelle zugegriffen haben. Gültige Werte sind YES und NO (Standard). Wenn Sie die Eigenschaft resident auf YES einstellen, wird die Datentabelle (DataTable) gemeinsam genutzt, unabhängig von dem Wert der Eigenschaft shared. Wenn eine Datentabelle als 'resident' definiert wird, hat dies folgende Vorteile:
  • Beibehaltung aller Werte, die von zuvor ausgeführten Programmen für sie geschrieben wurden.
  • Verfügbarkeit für den unmittelbaren Zugriff ohne weitere Ladeprozesse.
Wenn resident auf NO eingestellt wird, wirken sich folgende Faktoren auf das Entladen der Tabelle aus:
  • Wenn die Verarbeitung nicht im VAGen-Kompatibilitätsmodus erfolgt, wird die Datentabelle (DataTable) entladen, wenn das Programm beendet wird.
  • Wen die Ausführung im VAGen-Kompatibilitätsmodus erfolgt, steuert die Eigenschaft deleteAfterUse der Anweisung use für die Datentabelle (DataTable) das Entladen der Datentabelle. Siehe deleteAfterUse.
Das Entladen der Datentabelle (DataTable) wird auch durch das Zielsystem beeinflusst und ist abhängig davon, ob das Programm resident ist; siehe "Kompatibilität" in diesem Abschnitt.
Anmerkung: Eine Datentabelle (DataTable) wird in den Speicher geladen, wenn zum ersten Mal ein Programm auf sie zugreift, und nicht dann, wenn die EGL-Laufzeitumgebung die Anweisung use verarbeitet.
shared
Ein boolescher Wert, der angibt, ob dieselbe Instanz einer Datentabelle (DataTable) von jedem Programm in der Ausführungseinheit verwendet wird. Wenn shared auf YES eingestellt ist, verwenden alle Programme in der Ausführungseinheit dieselbe Kopie der Datentabelle gemeinsam. Wenn shared auf NO eingestellt ist (Standardeinstellung), verfügt jedes Programm in der Ausführungseinheit über eine eigene Kopie der Datentabelle.

Kompatibilität

Tabelle 1. Überlegungen zur Kompatibilität für DataTable-Eigenschaften
Plattform Problem
COBOL-Generierung Die maximale Länge für den generierten Namen ist sieben Zeichen.
CICS

Wenn Sie die Eigenschaft resident für eine Datentabelle (DataTable) auf YES einstellen, dürfen Sie das Schlüsselwort RESIDENT in der CICS RDO PROGRAM-Definition für das DataTable-Programm nicht auf YES einstellen.

Eine residente Datentabelle (DataTable) bleibt geladen, bis eine der folgenden Situationen eintritt:
  • Die CICS-Region wird inaktiviert.
  • Ein Administrator aktualisiert die Tabelle und verwendet dazu das Dienstprogramm new copy in IBM® Rational COBOL Runtime for zSeries.
Bei Verwendung des Dienstprogramms new copy verwenden Transaktionen, die bereits aktiv sind und die Tabelle geladen haben, die alte Kopie der Tabelle weiter, bis der Tabellennutzungszähler für die Transaktion auf null eingestellt wird. Die alte Kopie wird gelöscht, wenn die Kopie nicht von anderen Programmen verwendet wird.

Die Eigenschaft shared gibt an, ob dieselbe Instanz einer Datentabelle (DataTable) von allen Programmen in der CICS-Region und von allen Programmen in einer bestimmten Ausführungseinheit verwendet wird. Wenn Sie eine gemeinsam genutzte Tabelle ändern, sind die Änderungen für alle Benutzer der Tabelle in derselben CICS-Region wirksam, bis die Tabelle erneut geladen wird.

Wenn Ihr Programm eine gemeinsam genutzte Tabelle aktualisiert, nehmen Sie die gesamte Aktualisierung zwischen E/A-Anweisungen oder zwischen Programm-, Bibliotheks- oder Serviceaufrufen vor. Rufen Sie erst nach der E/A-Anweisung oder dem Aufruf einen Wert aus der Datentabelle (DataTable) ab. Ändern Sie die Datentabelle dann auf der Basis des Werts, den Sie nach der E/A-Anweisung oder der call-Anweisung abgerufen haben. Eine Transaktion eines anderen Ein-/Ausgabe hat möglicherweise die Steuerung der E/A- oder call-Anweisung übernommen und dieselbe Datentabelle genau während der Verarbeitung Ihrer Aktualisierungsoperation geändert. Wenn eine Synchronisation für eine E/A- oder call-Anweisung erforderlich ist, verwenden Sie hierzu ein externes Serialisierungsverfahren.

IMS BMP
z/OS-Stapel

Eine residente Datentabelle (DataTable) bleibt geladen, bis eine der folgenden Situationen eintritt:
  • Ein Hauptprogramm wird beendet (Rückgabe der Steuerung an das System).
  • Ein Hauptprogramm verwendet eine Anweisung transfer to transaction.
  • Ein Hauptprogramm verwendet eine Anweisung transfer to program für die Übertragung an ein Nicht-EGL-Programm.
  • Ein aufgerufenes Programm gibt die Steuerung an ein Nicht-EGL-Programm zurück.

Wenn die Eigenschaft resident auf NO eingestellt ist, wird die Eigenschaft shared ignoriert. Jeder Jobschritt hat eine separate Kopie der Tabelle.

IMS/VS
Eine residente Datentabelle (DataTable) bleibt geladen, bis eine der folgenden Situationen eintritt:
  • Ein grundlegendes Hauptprogramm wird beendet (Rückgabe der Steuerung an das System).
  • Ein textUI-Hauptprogramm beendet die Verarbeitung aller Nachrichten in der Eingabenachrichtenwarteschlange.
  • Ein aufgerufenes Programm gibt die Steuerung an ein Nicht-EGL-Programm zurück.

Das Ändern gemeinsam genutzter Datentabellen (DataTables) wird nicht unterstützt.

iSeries COBOL
Eine residente Datentabelle (DataTable) bleibt geladen, bis eine der folgenden Situationen eintritt:
  • Ein Hauptprogramm wird beendet (Rückgabe der Steuerung an das System).
  • Ein Hauptprogramm verwendet eine Anweisung transfer to transaction.
  • Ein Hauptprogramm verwendet eine Anweisung transfer to program für die Übertragung an ein Nicht-EGL-Programm.
  • Ein aufgerufenes Programm gibt die Steuerung an ein Nicht-EGL-Programm zurück.
Java™-Generierung Eine Datentabelle (DataTable), die resident ist, bleibt geladen, bis die Ausführungseinheit beendet wird. Eine nicht residente Datentabelle wird aber entladen, wenn das Programm, das sie verwendet, beendet wird.
JavaScript-Generierung DataTable wird nicht unterstützt.

Feedback