Dieses Dokument behandelt folgende Themen:
Verwandte Statements: ADD
| COMPRESS
|
COMPUTE
|
EXAMINE
|
MOVE
|
MOVE ALL
|
MULTIPLY
|
RESET
|
SEPARATE
|
SUBTRACT
Gehört zur Funktionsgruppe: Arithmetische Funktionen und Datenzuweisungen
Mit dem Statement DIVIDE
können Sie einen Operanden durch
einen anderen dividieren.
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.
Für dieses Statement sind verschiedene Strukturen möglich:
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
DIVIDE [ROUNDED ]
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 | ja | nein | |||||||||
operand2 | C | S | A | M | N | P | I | F | ja | nein |
Syntax-Element-Beschreibung:
operand1 INTO operand2 |
Operanden:
operand1 ist der Divisor, operand2 ist der Dividend. Das Ergebnis wird in operand2 (Ergebnisfeld) ausgegeben, daher sieht das Statement wie folgt aus: <oper2> := <oper2> / <oper1> Das Ergebnisfeld kann ein Datenbankfeld oder eine Benutzervariable
sein. Wenn operand2 eine Konstante oder eine nicht
änderbare Natural- Systemvariable ist, ist die
|
---|---|
ROUNDED | Wenn Sie das Schlüsselwort ROUNDED angeben, wird
das Ergebnis gerundet.
|
DIVIDE [ROUNDED ]
operand1
INTO
operand2 [GIVING
operand3 ]
|
Operanden-Definitionstabelle:
Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | A | N | N | P | I | F | ja | nein | ||||||||||
operand2 | C | S | A | N | N | P | I | F | ja | nein | ||||||||||
operand3 | S | A | A | U | N | P | I | F | B* | T | ja | ja |
* Format B von operand3 kann nur mit einer Länge von kleiner gleich 4 verwendet werden.
Syntax-Element-Beschreibung:
operand1 INTO operand2 GIVING operand3 |
Operanden:
operand1 ist der Divisor, operand2 ist der Dividend. Das Ergebnis wird in operand3 (Ergebnisfeld) ausgegeben, folglich sieht das Statement wie folgt aus: <oper3> := <oper2> / <oper1> Wird ein Datenbankfeld als Ergebnisfeld verwendet, ändert sich durch die Division lediglich der programmintern verwendete Wert des Feldes; der in der Datenbank gespeicherte Wert des Feldes wird davon nicht berührt. Die Anzahl der Dezimalstellen für das Ergebnis der Division wird vom Ergebnisfeld (d.h. operand3) ausgewertet. Informationen zur Genauigkeit der Ergebnisse siehe Abschnitt Genauigkeit von Ergebnissen bei arithmetischen Operationen im Leitfaden zur Programmierung. |
---|---|
ROUNDED | Wenn Sie das Schlüsselwort ROUNDED angeben, wird
das Ergebnis gerundet.
|
DIVIDE
operand1
INTO
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 | ja | nein | |||||||||||
operand2 | C | S | A | N | N | P | I | ja | nein | |||||||||||
operand3 | S | A | A | U | N | P | I | F | B* | T | ja | ja | ||||||||
operand4 | S | A | A | U | N | P | I | F | B* | T | ja | ja |
* Format B von operand3 und operand4 kann nur mit einer Länge von kleiner gleich 4 verwendet werden.
Syntax-Element-Beschreibung:
operand1 |
Divisor:
operand1 ist der Divisor, d.h. die Anzahl oder Menge, durch die der Dividend dividiert werden soll, um den Quotienten zu erhalten. |
---|---|
operand2 |
Ergebnisfeld:
Wird die Wenn operand2 eine Konstante oder eine
nicht änderbare Natural- Systemvariable ist, ist die
|
ROUNDED |
Wenn Sie das Schlüsselwort |
GIVING operand3 |
Wenn das Schlüsselwort Wird ein Datenbankfeld als Ergebnisfeld verwendet, ändert sich durch die Division lediglich der programmintern verwendete Wert des Feldes; der in der Datenbank gespeicherte Wert des Feldes wird davon nicht berührt. Die Anzahl der Dezimalstellen für das Ergebnis der Division wird
vom Ergebnisfeld (d.h. operand2, wenn keine
Informationen zur Genauigkeit der Ergebnisse siehe Abschnitt Genauigkeit von Ergebnissen bei arithmetischen Operationen im Leitfaden zur Programmierung. |
REMAINDER operand4 |
Das Schlüsselwort Wenn Intern wird der Rest wie folgt berechnet:
Für jeden dieser Schritte gelten die im Abschnitt Genauigkeit von Ergebnissen bei arithmetischen Operationen im Leitfaden zur Programmierung beschriebenen Regeln. |
** 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