DIVIDE

#### Search Results

Search

# DIVIDE

Dieses Dokument behandelt folgende Themen:

- Funktion

- Syntax 1 — DIVIDE-Statement ohne GIVING-Klausel

- Syntax 2 — DIVIDE-Statement mit GIVING-Klausel

- Syntax 3 — DIVIDE-Statement mit REMAINDER-Klausel

- Beispiel

Verwandte Statements: `ADD` | `COMPRESS` | `COMPUTE` | `EXAMINE` | `MOVE` | `MOVE ALL` | `MULTIPLY` | `RESET` | `SEPARATE` | `SUBTRACT`

Gehört zur Funktionsgruppe: Arithmetische Funktionen und Datenzuweisungen

## Funktion

Mit dem Statement `DIVIDE` können Sie einen Operanden durch einen anderen dividieren.

#### Division durch Null:

Wird eine Division durch Null (0) versucht, d.h. wenn der Divisor (operand1), also die Zahl durch die geteilt wird, 0 ist, wird entweder eine entsprechende Fehlermeldung oder als Ergebnis 0 ausgegeben, je nachdem wie der Session-Parameter `ZD` (der in der Parameter-Referenz-Dokumentation beschrieben ist) gesetzt ist.

Dieses Statement hat drei verschiedene Syntax-Strukturen.

## Syntax 1 — DIVIDE-Statement ohne GIVING-Klausel

`DIVIDE` [`ROUNDED`] |  | (arithmetic-expression) operand1 |  | `INTO` operand2

Operanden-Definitionstabelle:

Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition
--- | --- | --- | --- | ---
`operand1` | C | S | A |  | N |  | N | P | I | F |  |  |  |  |  |  |  | yes | no
`operand2` |  | S | A |  | M |  | N | P | I | F |  |  |  |  |  |  |  | yes | no

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

Syntax-Element-Beschreibung:

Syntax-Element | Beschreibung:
--- | ---
`arithmetic-expression` | Siehe Arithmetischer Ausdruck beim `COMPUTE`-Statement.
`operand1` `INTO` `operand2` | Operanden: `operand1` ist der Divisor, `operand2` ist der Dividend. Das Ergebnis wird in `operand2` (Ergebnisfeld) gespeichert. Somit ist das Statement gleichbedeutend mit:
    operand2 := operand2 / operand1
Wenn ein `arithmetischer Ausdruck` benutzt wird, darf `operand2` kein Array-Bereich sein. Die Anzahl der Dezimalstellen für das Ergebnis der Division wird vom Ergebnisfeld (d.h. `operand2`) ausgewertet. Weitere Informationen siehe Genauigkeit von Ergebnissen bei arithmetischen Operationen im Abschnitt Regeln für arithmetische Operationen im Leitfaden zur Programmierung.
`ROUNDED` | ROUNDED-Option: Wird das Schlüsselwort `ROUNDED` angegeben, dann wird das Ergebnis gerundet. Weitere Informationen siehe Abschneiden und Runden von Feldwerten im Abschnitt Regeln für arithmetische Operationen im Leitfaden zur Programmierung.

## Syntax 2 — DIVIDE-Statement mit GIVING-Klausel

`DIVIDE` [`ROUNDED`] |  | (arithmetic-expression) operand1 |  | `INTO` |  | (arithmetic-expression) operand2 |  | `GIVING` operand3

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

Operanden-Definitionstabelle:

Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition
--- | --- | --- | --- | ---
`operand1` | C | S | A |  | N |  |  | N | P | I | F |  |  |  |  |  |  |  | yes | no
`operand2` | C | S | A |  | N |  |  | N | P | I | F |  |  |  |  |  |  |  | yes | no
`operand3` |  | S | A |  |  | A | U | N | P | I | F | B* |  |  |  |  |  |  | yes | yes

* Format B von `operand3` kann nur mit einer Länge von kleiner gleich 4 verwendet werden.

Syntax-Element-Beschreibung:

Syntax-Element | Beschreibung:
--- | ---
`arithmetic-expression` | Siehe Arithmetischer Ausdruck beim `COMPUTE`-Statement.
`operand1` `INTO` `operand2` `GIVING` `operand3` | Operanden: `operand1` ist der Divisor, `operand2` ist der Dividend. Das Ergebnis wird in `operand3` (Ergebnisfeld) gespeichert. Somit ist das Statement gleichbedeutend mit:
    operand3 := operand2 / operand1
Die Anzahl der Dezimalstellen für das Ergebnis der Division wird vom Ergebnisfeld (d.h. `operand3`) ausgewertet. Weitere Informationen siehe Genauigkeit von Ergebnissen bei arithmetischen Operationen im Abschnitt Regeln für arithmetische Operationen im Leitfaden zur Programmierung.
`ROUNDED` | ROUNDED-Option: Wird das Schlüsselwort `ROUNDED` angegeben, dann wird das Ergebnis gerundet. Weitere Informationen siehe Abschneiden und Runden von Feldwerten im Abschnitt Regeln für arithmetische Operationen im Leitfaden zur Programmierung.

## Syntax 3 — DIVIDE-Statement mit REMAINDER-Klausel

`DIVIDE` |  | (arithmetic-expression) operand1 |  | `INTO` |  | (arithmetic-expression) operand2 |  | [`GIVING` operand3] `REMAINDER` operand4

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

Operanden-Definitionstabelle:

Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition
--- | --- | --- | --- | ---
`operand1` | C | S | A |  | N |  |  | N | P | I |  |  |  |  |  |  |  |  | yes | no
`operand2` | C | S | A |  | N |  |  | N | P | I |  |  |  |  |  |  |  |  | yes | no
`operand3` |  | S | A |  |  | A | U | N | P | I | F | B* |  | T |  |  |  |  | yes | yes
`operand4` |  | S | A |  |  | A | U | N | P | I | F | B* |  | T |  |  |  |  | yes | yes

* Format B von `operand3` und `operand4` kann nur mit einer Länge von kleiner gleich 4 verwendet werden.

Syntax-Element-Beschreibung:

Syntax-Element | Beschreibung:
--- | ---
`arithmetic-expression` | Siehe Arithmetischer Ausdruck beim `COMPUTE`-Statement.
`operand1` `operand2` | Operanden: `operand1` ist der Divisor, `operand2` ist der Dividend. Wird die `GIVING`-Klausel nicht benutzt, wird das Ergebnis in `operand2` gespeichert. Das Ergebnisfeld kann ein Datenbankfeld oder eine Benutzervariable sein. Falls `operand2` eine Konstante oder eine nicht änderbare Natural-Systemvariable ist, dann ist die `GIVING`-Klausel erforderlich.
`GIVING` `operand3` | GIVING-Klausel: Wird diese Klausel benutzt, dann wird `operand2` nicht verändert, und das Ergebnis wird in `operand3` gespeichert. Die Anzahl der Dezimalstellen für das Ergebnis der Division wird vom Ergebnisfeld (d.h. `operand2`, falls keine `GIVING`-Klausel benutzt wird, oder `operand3`, falls die `GIVING`-Klausel benutzt wird) ausgewertet. Weitere Informationen siehe Genauigkeit von Ergebnissen bei arithmetischen Operationen im Abschnitt Regeln für arithmetische Operationen im Leitfaden zur Programmierung.
- `REMAINDER` `operand4` | REMAINDER-Klausel: Der nach der Division verbleibende Rest wird in das in `operand4` angegebene Feld gestellt. Wenn die `GIVING`-Klausel benutzt wird, ist das Statement gleichbedeutend mit:
      operand3 := operand2 / operand1
      operand4 := operand2 - (operand3 * operand1)
- Keiner der vier Operanden darf ein Array-Bereich sein. Wenn die `GIVING`-Klausel nicht benutzt wird, ist das Statement gleichbedeutend mit:
      temporary := operand2
      operand2 := operand2 / operand1
      operand4 := temporary - (operand2 * operand1)
dabei ist `temporary` ein temporäres Feld mit Format/Länge wie bei `operand2`. Für jeden dieser Schritte gelten die unter Genauigkeit von Ergebnissen bei arithmetischen Operationen im Abschnitt Regeln für arithmetische Operationen im Leitfaden zur Programmierung beschriebenen Regeln.

## Beispiel

    ** Example 'DIVEX1': DIVIDE
    ************************************************************************
    DEFINE DATA LOCAL
    1 #A (N7) INIT <20>
    1 #B (N7)
    1 #C (N3.2)
    1 #D (N1)
    1 #E (N1) INIT <3>
    1 #F (N1)
    END-DEFINE
    *
    DIVIDE 5 INTO #A
    WRITE NOTITLE 'DIVIDE 5 INTO #A' 20X '=' #A
    *
    RESET INITIAL #A
    DIVIDE 5 INTO #A GIVING #B
    WRITE 'DIVIDE 5 INTO #A GIVING #B' 10X '=' #B
    *
    DIVIDE 3 INTO 3.10 GIVING #C
    WRITE 'DIVIDE 3 INTO 3.10 GIVING #C' 8X '=' #C
    *
    DIVIDE 3 INTO 3.1 GIVING #D
    WRITE 'DIVIDE 3 INTO 3.1 GIVING #D' 9X '=' #D
    *
    DIVIDE 2 INTO #E REMAINDER #F
    WRITE 'DIVIDE 2 INTO #E REMAINDER #F' 7X '=' #E '=' #F
    *
    END

Ausgabe des Programms `DIVEX1`:

    DIVIDE 5 INTO #A                    #A:        4
    DIVIDE 5 INTO #A GIVING #B          #B:        4
    DIVIDE 3 INTO 3.10 GIVING #C        #C:    1.03
    DIVIDE 3 INTO 3.1 GIVING #D         #D:  1
    DIVIDE 2 INTO #E REMAINDER #F       #E:  1 #F:  1

### On this page

- Funktion
- Syntax 1 — DIVIDE-Statement ohne GIVING-Klausel
- Syntax 2 — DIVIDE-Statement mit GIVING-Klausel
- Syntax 3 — DIVIDE-Statement mit REMAINDER-Klausel
- Beispiel