Dieses Dokument behandelt folgende Themen:
Verwandte Statements:
COMPRESS
|
COMPUTE
|
DIVIDE
|
EXAMINE
|
MOVE
|
MOVE ALL
|
MULTIPLY
|
RESET
|
SEPARATE
|
SUBTRACT
Gehört zur Funktionsgruppe: Arithmetische Funktionen und Datenzuweisungen
Das ADD
-Statement wird benutzt, um zwei oder mehr Operanden
zu addieren.
Dieses Statement hat zwei verschiedene Syntax-Strukturen.
Anmerkungen:
ADD
-Statement ausgeführt wird, muss jeder bei der arithmetischen
Operation benutzte Operand einen gültigen Wert enthalten.
ADD
[ROUNDED ]
|
TO operand2 |
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 | C | S | A | N | N | P | I | F | D | T | ja | nein | |||||||||
operand2 | S | A | M | N | P | I | F | D | T | ja | ja |
Syntax-Element-Beschreibung:
Syntax-Element | Beschreibung |
---|---|
arithmetic-expression |
Siehe Arithmetischer
Ausdruck beim COMPUTE -Statement.
|
operand1 TO
operand2
|
Operanden:
operand2 := operand2 + operand1 + ... |
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. |
Beispiel:
Das Statement
ADD #A(*) TO #B(*)
ist gleichbedeutend mitCOMPUTE #B(*) := #A(*) + #B(*)
ADD #S TO #R
ist gleichbedeutend mitCOMPUTE #R := #S + #R
ADD #S #T TO #R
ist gleichbedeutend mitCOMPUTE #R := #S + #T + #R
ADD #A(*) TO #R
ist gleichbedeutend mitCOMPUTE #R := #A(*) + #R
ADD
[ROUNDED ]
|
GIVING
operand2 |
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 | N | N | P | I | F | D | T | ja | nein | ||||||||
operand2 | S | A | M | A | U | N | P | I | F | B* | D | T | ja | ja |
* 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 GIVING
operand2 |
Operands:
operand2 := operand1 + ... |
ROUNDED |
ROUNDED-Option:
Wenn das Schlüsselwort Weitere Informationen siehe Abschneiden und Runden von Feldwerten im Abschnitt Regeln für arithmetische Operationen im Leitfaden zur Programmierung. |
Anmerkung:
Bei Verwendung von Syntax 2 gilt Folgendes: Das Feld bzw. die Felder
(operand1) links vom Schlüsselwort
GIVING
sind die Terme der Addition, das Feld rechts von
GIVING
(operand2) wird nur zum Empfang
des Ergebnisses genutzt. Wird nur ein einzelnes Feld
(operand1) geliefert, dann wird aus der
ADD
-Operation in eine Zuweisung.
Beispiel:
Das Statement
ADD #S GIVING #R
ist gleichbedeutend mitCOMPUTE #R := #S
ADD #S #T GIVING #R
ist gleichbedeutend mitCOMPUTE #R := #S + #T
ADD #A(*) 0 GIVING #R
ist gleichbedeutend mitCOMPUTE #R := #A(*) + 0
Dies ist eine zulässige Operation aufgrund der Regeln im Abschnitt Arithmetische Operationen mit ArraysADD #A(*) GIVING #R
ist gleichbedeutend mitCOMPUTE #R := #A(*)
Dies ist eine unzulässige Operation aufgrund der Regeln im Abschnitt Zuweisungen bei Arrays
** Example 'ADDEX1': ADD ************************************************************************ DEFINE DATA LOCAL 1 #A (P2) 1 #B (P1.1) 1 #C (P1) 1 #DATE (D) 1 #ARRAY1 (P5/1:4,1:4) INIT (2,*) <5> 1 #ARRAY2 (P5/1:4,1:4) INIT (4,*) <10> END-DEFINE * ADD +5 -2 -1 GIVING #A WRITE NOTITLE 'ADD +5 -2 -1 GIVING #A' 15X '=' #A * ADD .231 3.6 GIVING #B WRITE / 'ADD .231 3.6 GIVING #B' 15X '=' #B * ADD ROUNDED 2.9 3.8 GIVING #C WRITE / 'ADD ROUNDED 2.9 3.8 GIVING #C' 8X '=' #C * MOVE *DATX TO #DATE ADD 7 TO #DATE WRITE / 'CURRENT DATE:' *DATX (DF=L) 13X 'CURRENT DATE + 7:' #DATE (DF=L) * WRITE / '#ARRAY1 AND #ARRAY2 BEFORE ADDITION' / '=' #ARRAY1 (2,*) '=' #ARRAY2 (4,*) ADD #ARRAY1 (2,*) TO #ARRAY2 (4,*) WRITE / '#ARRAY1 AND #ARRAY2 AFTER ADDITION' / '=' #ARRAY1 (2,*) '=' #ARRAY2 (4,*) * END
Ausgabe des Programms ADDEX1
:
ADD +5 -2 -1 GIVING #A #A: 2 ADD .231 3.6 GIVING #B #B: 3.8 ADD ROUNDED 2.9 3.8 GIVING #C #C: 7 CURRENT DATE: 2005-01-10 CURRENT DATE + 7: 2005-01-17 #ARRAY1 AND #ARRAY2 BEFORE ADDITION #ARRAY1: 5 5 5 5 #ARRAY2: 10 10 10 10 #ARRAY1 AND #ARRAY2 AFTER ADDITION #ARRAY1: 5 5 5 5 #ARRAY2: 15 15 15 15