Dieses Dokument behandelt folgende Themen:
Verwandte Statements: ADD
| COMPRESS
|
COMPUTE
|
DIVIDE
|
EXAMINE
|
MOVE
|
MOVE ALL
|
RESET
|
SEPARATE
|
SUBTRACT
Gehört zur Funktionsgruppe: Arithmetische Funktionen und Datenzuweisungen
Das Statement MULTIPLY
dient dazu, zwei Operanden
miteinander zu multiplizieren. Das Ergebnis der Multiplikation kann, je nach
verwendeter Syntax, entweder in
operand1
oder in
operand3
gespeichert werden.
Wird ein Datenbankfeld als Ergebnisfeld verwendet, so ändert sich durch die Multiplikation nur der programmintern benutzte Wert des Feldes. Der in der Datenbank gespeicherte Feldwert wird davon nicht beeinflusst.
Bezüglich Multiplikationen mit Arrays siehe auch Arithmetische Operationen mit Arrays im Leitfaden zur Programmierung.
Dieses Statement hat zwei verschiedene Syntax-Strukturen.
Wenn Syntax 1 benutzt wird, kann das Ergebnis der Multiplikation in operand1 gespeichert werden.
MULTIPLY
[ROUNDED ]
operand1
BY
|
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Operanden-Definitionstabelle (Syntax 1):
Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | S | A | M | N | P | I | F | ja | nein | ||||||||||
operand2 | C | S | A | N | N | P | I | F | ja | nein |
Syntax-Element-Beschreibung (Syntax 1):
Syntax-Element | Beschreibung |
---|---|
arithmetic-expression |
Siehe Arithmetischer
Ausdruck beim COMPUTE -Statement.
|
operand1 BY
operand2
|
Operanden:
Das Ergebnis wird in
operand1 := operand1 * operand2 |
ROUNDED
|
ROUNDED-Option:
Wird das Schlüsselwort Weitere Informationen siehe Abschneiden und Runden von Feldwerten im Abschnitt Regeln für arithmetische Operationen im Leitfaden zur Programmierung. |
Wenn Syntax 2 benutzt wird, kann das Ergebnis der Multiplikation in
operand3
gespeichert werden.
MULTIPLY
[ROUNDED ]
|
BY |
GIVING
operand3
|
Eine Erläuterung der in dem Syntax-Diagramm verwendeten Symbole entnehmen Sie dem Abschnitt Syntax-Symbole.
Operanden-Definitionstabelle (Syntax 2):
Operand | Mögliche Struktur | Mögliche Formate | Referenzierung erlaubt | Dynam. Definition | ||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
operand1 | C | S | A | M | N | P | I | F | ja | nein | ||||||||||
operand2 | C | S | A | N | N | P | I | F | ja | nein | ||||||||||
operand3 | S | A | M | 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 (Syntax 2):
Syntax-Element | Beschreibung |
---|---|
arithmetic-expression |
Siehe Arithmetischer
Ausdruck beim COMPUTE -Statement.
|
operand1 BY
operand2 GIVING
operand3
|
Operanden:
Das Ergebnis wird in
operand3 := operand1 * operand2 |
ROUNDED
|
ROUNDED-Option:
Wird das Schlüsselwort Weitere Informationen siehe Abschneiden und Runden von Feldwerten im Abschnitt Regeln für arithmetische Operationen im Leitfaden zur Programmierung. |
** Example 'MULEX1': MULTIPLY ************************************************************************ DEFINE DATA LOCAL 1 #A (N3) INIT <20> 1 #B (N5) 1 #C (N3.1) 1 #D (N2) 1 #ARRAY1 (N5/1:4,1:4) INIT (2,*) <5> 1 #ARRAY2 (N5/1:4,1:4) INIT (4,*) <10> END-DEFINE * MULTIPLY #A BY 3 WRITE NOTITLE 'MULTIPLY #A BY 3' 25X '=' #A * MULTIPLY #A BY 3 GIVING #B WRITE 'MULTIPLY #A BY 3 GIVING #B' 15X '=' #B * MULTIPLY ROUNDED 3 BY 3.5 GIVING #C WRITE 'MULTIPLY ROUNDED 3 BY 3.5 GIVING #C' 6X '=' #C * MULTIPLY 3 BY -4 GIVING #D WRITE 'MULTIPLY 3 BY -4 GIVING #D' 14X '=' #D * MULTIPLY -3 BY -4 GIVING #D WRITE 'MULTIPLY -3 BY -4 GIVING #D' 14X '=' #D * MULTIPLY 3 BY 0 GIVING #D WRITE 'MULTIPLY 3 BY 0 GIVING #D' 14X '=' #D * WRITE / '=' #ARRAY1 (2,*) '=' #ARRAY2 (4,*) MULTIPLY #ARRAY1 (2,*) BY #ARRAY2 (4,*) WRITE / 'MULTIPLY #ARRAY1 (2,*) BY #ARRAY2 (4,*)' / '=' #ARRAY1 (2,*) '=' #ARRAY2 (4,*) * END
Ausgabe des Programms MULEX1
:
MULTIPLY #A BY 3 #A: 60 MULTIPLY #A BY 3 GIVING #B #B: 180 MULTIPLY ROUNDED 3 BY 3.5 GIVING #C #C: 10.5 MULTIPLY 3 BY -4 GIVING #D #D: -12 MULTIPLY -3 BY -4 GIVING #D #D: 12 MULTIPLY 3 BY 0 GIVING #D #D: 0 #ARRAY1: 5 5 5 5 #ARRAY2: 10 10 10 10 MULTIPLY #ARRAY1 (2,*) BY #ARRAY2 (4,*) #ARRAY1: 50 50 50 50 #ARRAY2: 10 10 10 10