REDUCE
|
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: EXPAND
| RESIZE
Gehört zur Funktionsgruppe: Speicherverwaltungskontrolle für dynamische Variablen/X-Arrays.
Das Statement REDUCE
dient zum Verringern
der zugewiesenen Länge einer dynamischen Variable (dynamic-clause) oder
der Anzahl der Ausprägungen von X-Arrays (array-clause).
Weitere Informationen entnehmen Sie den folgenden Abschnitten im Leitfaden zur Programmierung:
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 | N | P | I | F | B | D | T | L | C | G | O | ja | nein | ||||
operand4 | C | S | U | N | P | I | nein | nein | ||||||||||||
operand5 | S | I4 | nein | ja |
Syntax-Element-Beschreibung:
Syntax-Element | Beschreibung |
---|---|
dynamic-clause
|
Das Statement REDUCE DYNAMIC VARIABLE dient dazu,
die Länge des aktuell zugewiesenen Speicherplatzes einer dynamischen Variablen
(operand1) auf die angegebene Länge
(operand2) zu verringern. Weitere Informationen,
siehe DYNAMIC-Klausel
weiter unten.
|
operand1
|
operand1 ist die dynamische Variable, für die die zugewiesene Länge verringert werden soll. |
operand2
|
operand2 dient dazu, die verringerte Länge der dynamischen Variable anzugeben. Der angegebene Wert muss eine nicht negative, numerische Ganzzahl-Konstante oder eine Variable des Typs Integer4 (I4) sein. |
array-clause
|
Mit dieser Klausel wird die Anzahl der Ausprägungen des
X-Arrays (operand3) auf die mit
(dim[,dim[,dim]])
angegebene Ober- und Untergrenze verringert. Weitere Informationen siehe
Array-Klausel
weiter unten.
|
operand3
|
operand3 ist das X-Array. Die Ausprägungen des X-Arrays können verringert werden. Die Index-Notation des Arrays ist optional. Als Index-Notation ist für jede Dimension nur die Stern-Notation (*) für den vollständigen Bereich zulässig. |
dim
operand4
|
Die Notation für die Ober- und Untergrenze (operand4 oder Stern), auf die das X-Array verringert werden sollte, wird hier angegeben. Wenn der aktuelle Wert der Ober- oder Untergrenze verwendet werden sollte, kann ein Stern (*) anstatt operand4 angegeben werden. Weitere Informationen siehe Dimension weiter unten. |
GIVING
operand5
|
Wenn die GIVING -Klausel nicht angegeben wird, wird
die Natural-Laufzeitfehlerverarbeitung angestoßen, wenn ein Fehler auftritt.
Wenn die GIVING -Klausel angegeben wird, enthält
operand5 die Natural-Fehlernummer, wenn vorher ein
Fehler aufgetreten ist, oder Null (0) bei Erfolg.
|
[SIZE OF ]
DYNAMIC [VARIABLE ]
operand 1
TO operand2
|
Das Statement REDUCE DYNAMIC VARIABLE
dient dazu, die
Länge des aktuell zugewiesenen Speicherplatzes einer dynamischen Variablen
(operand1) auf die angegebene Länge
(operand2) zu verringern. Liegt der zugewiesene
Speicherplatz der dynamischen Variable oberhalb der angegebenen Länge
(operand2), wird er sofort freigegeben, d.h. wenn
das Statement ausgeführt wird.
Wenn die aktuell benutzte Länge (*LENGTH
)
der dynamischen Variablen größer als die gegebene Länge ist, wird
*LENGTH
auf die gegebene Größe gesetzt, und der
Inhalt der Variable wird abgeschnitten (aber nicht geändert). Wenn die gegebene
Länge die aktuell zugewiesene Länge der dynamischen Variable überschreitet,
wird das Statement ignoriert.
[OCCURRENCES
OF ] ARRAY
operand3
TO
|
0
|
||
(dim[,dim[,dim]]) |
Mit dem Statement REDUCE ARRAY
wird die Anzahl der
Ausprägungen des X-Arrays (operand3) auf die mit
TO
(dim[,dim[,dim]])
angegebene Ober- und Untergrenze verringert, wobei jedes dim eine mittels der
im Folgenden beschriebenen Syntax definierte Dimension ist.
Wenn REDUCE TO 0
(Null) angegeben wird, werden alle
Ausprägungen des X-Arrays freigegeben. Mit anderen Worten, das gesamte Array
wird verringert.
Eine in einem REDUCE
-Statement benutzte Ober- und
Untergrenze muss genau mit der betreffenden, für das Array definierten Ober-
und Untergrenze identisch sein.
DEFINE DATA LOCAL 1 #a(I4/1:*) 1 #g(1:*) 2 #ga(I4/1:*) 1 #i(i4) END-DEFINE ... */ reducing #a (1:10) REDUCE ARRAY #a TO (1:10) /* #a is reduced REDUCE ARRAY #a TO (*:10) /* to 10 occurrences. */ reducing #ga (1:10,1:20) REDUCE ARRAY #g TO (1:10) /* 1st dimension is set to (1:10) REDUCE ARRAY #ga TO (*:*,1:20) /* 1st dimension is dependent and /* therefore kept with (*:*) /* 2nd dimension is set to (1:20) REDUCE ARRAY #a TO (5:10) /* This is rejected because the lower index /* must be 1 or * REDUCE ARRAY #a TO (#i:10) /* This is rejected because the lower index /* must be 1 or * REDUCE 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:
Jede in der Array-Klausel angegebene Dimension (dim) wird mittels der folgenden Syntax definiert:
* | ||||||||
* | :
|
* | ||||||
operand4 | operand4 |
Die Notation für die Ober- und Untergrenze
(operand4 oder Stern), auf die das X-Array
verringert werden sollte, wird hier angegeben. Wenn der aktuelle Wert der Ober-
oder Untergrenze benutzt werden soll, kann ein Stern (*) anstelle von
operand4 angegeben werden. An Stelle von
*:*
können Sie auch einen einzelnen Stern angeben.
Die Anzahl der Dimensionen (dim) muss genau mit der definierten Anzahl der Dimensionen des X-Arrays (1, 2 oder 3) übereinstimmen.
Wenn Sie das REDUCE
-Statement verwenden, ist es nur
möglich, die Anzahl der Ausprägungen zu verringern. Wenn die erforderliche
Anzahl größer ist als die aktuell zugewiesene Anzahl der Ausprägungen, wird
dies einfach ignoriert.