REDUCE

#### Search Results

Search

# REDUCE

`REDUCE` |  | dynamic-clause |  | [`GIVING` operand5]
array-clause

Dieses Dokument behandelt folgende Themen:

- Funktion

- Syntax-Beschreibung

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:

- Dynamische Variablen benutzen

- X-Arrays

- Speicherverwaltung von X-Gruppen-Arrays

## 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:

- Speicherverwaltung von X-Arrays

- Speicherverwaltung von X-Gruppen-Arrays

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

### On this page

- Funktion
- Syntax-Beschreibung