REDUCE

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.


Funktion

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:

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   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.

DYNAMIC-Klausel

[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.

Array-Klausel

[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.

Beispiel:

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:

Dimension

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.