EXPAND

EXPAND

dynamic-clause

[GIVING operand5]
array-clause

Dieses Dokument behandelt folgende Themen:

Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.

Verwandte Statements: REDUCE | RESIZE

Gehört zur Funktionsgruppe: Speicherverwaltungskontrolle für dynamische Variablen/X-Arrays


Funktion

Das Statement EXPAND dient dazu,

  • die zugewiesene Länge einer dynamischen Variable (dynamic-clause) oder

  • die Anzahl der Ausprägungen von X-Arrays (array-clause)

Weitere Informationen entnehmen Sie den folgenden Abschnitten im Leitfaden zur Programmierung:

Syntax-Beschreibung

Operanden-Definitionstabelle:

Operand Mögliche Struktur Mögliche Formate Referenzierung erlaubt Dynam. Definition
operand1   S A     A U         B             nein nein
operand2 C S               I                 nein nein
operand3     A G   A U N P I F B D T L C G O ja nein
operand4 C S           N P I                 nein nein
operand5   S               I4                 nein ja

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
dynamic-clause
DYNAMIC-Klausel:

Mit dem Statement EXPAND DYNAMIC VARIABLE können Sie die Länge des aktuell zugewiesenen Speicherplatzes einer dynamischen Variable (operand1) auf den mit operand2 angegebenen Wert erweitern.

Siehe DYNAMIC-Klausel weiter unten.

operand1
Zu erweiternde Variable:

operand1 ist die dynamische Variable, für die die zugewiesene Länge erweitert werden soll.

operand2
Erweiterungswert:

operand2 dient dazu, die Länge anzugeben, auf die die dynamische Variable erweitert werden soll. Der angegebene Wert muss eine nicht negative, numerische Ganzzahl-Konstante oder eine Variable des Typs Integer4 (I4) sein.

array-clause
Array-Klausel:

Mit dem Statement EXPAND ARRAY können Sie Anzahl der Ausprägungen des X-Arrays (operand3) auf die mit (dim[,dim[,dim]]) angegebene Ober- und Untergrenze erweitern.

Siehe Array-Klausel weiter unten.

operand3
Zu erweiterndes X-Array:

operand3 ist das X-Array, für das die Anzahl der Ausprägungen erweitert werden kann. Die Index-Notation des Arrays ist optional. Als Index-Notation ist nur die Stern-Notation (*) für den vollständigen Bereich für jede Dimension zulässig.

dim

operand4

Ober-/Untergrenze der Erweiterung:

Die Notation für die Ober- und Untergrenze (operand4 oder Stern-Notation), auf die das X-Array erweitert werden sollte, wird hier angegeben. Wenn der aktuelle Wert für die Ober- oder Untergrenze benutzt werden sollte, kann ein Stern-Notation (*) anstatt operand4 angegeben werden.

Siehe Dimension weiter unten.

GIVING operand5
GIVING-Klausel

Wenn diese Klausel nicht angegeben wird, wird die Natural-Laufzeitfehlerverarbeitung angestoßen, wenn ein Fehler auftritt.

Wenn die Klausel angegeben wird, enthält operand5 die Natural- Fehlernummer, wenn vorher ein Fehler aufgetreten ist, oder Null (0) bei Erfolg.

DYNAMIC-Klausel

[SIZE OFDYNAMIC [VARIABLE]   operand1   TO    operand2

Mit dem Statement EXPAND DYNAMIC VARIABLE können Sie die Länge des aktuell zugewiesenen Speicherplatzes einer dynamischen Variable (operand1) auf den mit operand2 angegebenen Wert erweitern.

Ist operand2 kleiner als die aktuell zugewiesene Länge von operand1, wird das Statement für diese dynamische Variable ignoriert. Die aktuell benutzte Länge (*LENGTH) der dynamischen Variable wird nicht geändert.

Array-Klausel

[AND RESET] [OCCURRENCES OF] ARRAY operand3 TO (dim[,dim [,dim]])

Mit dem Statement EXPAND ARRAY können Sie die Anzahl der Ausprägungen des X-Arrays (operand3) auf die mit TO (dim [,dim[,dim]]) angegebene Ober- und Untergrenze erweitern, wobei jede Angabe von dim sich auf eine Dimension bezieht, die mittels der weiter unten beschriebenen Syntax definiert wird.

Mit der RESET-Option setzen Sie alle Ausprägungen des größenmäßig angepassten X-Arrays auf ihren standardmäßigen Nullwert zurück. Als Voreinstellung (keine RESET-Option) werden die Direktwerte beibehalten und die erweiterten (neuen) Ausprägungen zurückgesetzt.

Verwenden Sie das EXPAND-Statement, ist es nur möglich, die Anzahl der Ausprägungen zu erhöhen. Wenn die erforderliche Anzahl kleiner ist als die aktuell zugewiesene Anzahl der Ausprägungen, wird dies einfach ignoriert.

Eine bei einem EXPAND-Statement eingesetzte Ober- oder Untergrenze muss genau der betreffenden, für das Array definierten Ober- oder Untergrenze entsprechen.

Beispiel:

DEFINE DATA LOCAL
1 #a(I4/1:*)
1 #g(1:*)
  2 #ga(I4/1:*)

1 #i(i4)
END-DEFINE
...
/* allocating #a(1:10)
EXPAND ARRAY #a TO (1:10)       /* #a is allocated 10
EXPAND ARRAY #a TO (*:10)       /* occurrences.


/* allocating #ga(1:10,1:20)
EXPAND ARRAY #g TO (1:10)       /* 1st dimension is set to (1:10)
EXPAND ARRAY #ga TO (*:*,1:20)  /* 1st dimension is dependent and 
                                /* therefore kept with (*:*)
                                /* 2nd dimension is set to (1:20)
 
EXPAND ARRAY #a TO (5:10)       /* This is rejected because the lower index
                                /* must be 1 or *
EXPAND ARRAY #a TO (#i:10)      /* This is rejected because the lower index
                                /* must be 1 or *

EXPAND ARRAY #ga TO (1:10,1:20) /* (1:10) for the 1st dimension is rejected
                                /* because the dimension is dependent and 
                                /* must be specified with (*:*).

Weitere Informationen siehe

Dimension

Jede der in der Array-Klausel angegebenen Dimensionen (dim) wird mittels der folgenden Syntax definiert:

operand4

:

operand4

* *

Die Notation für Ober- und Untergrenzen (operand4 oder Stern-Notation), auf die das X-Array erweitert werden sollte, wird hier angegeben. Wenn der aktuelle Wert der Ober- oder Untergrenze benutzt werden soll, kann ein Stern (*) anstelle von operand4 angegeben werden. Anstatt *:* können Sie auch einen einzelnen Stern verwenden.

Die Anzahl der Dimensionen (dim) muss genau mit der definierten Anzahl der Dimensionen des X-Arrays (1, 2 oder 3) übereinstimmen.

Wenn die Anzahl der Ausprägungen für eine angegebene Dimension kleiner ist als die Anzahl der aktuell zugewiesenen Ausprägungen, wird die Anzahl der Ausprägungen nicht für die betreffende Dimension aktualisiert.