ADD

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


Funktion

Das ADD-Statement wird benutzt, um zwei oder mehr Operanden zu addieren.

Dieses Statement hat zwei verschiedene Syntax-Strukturen.

Anmerkungen:

  1. Zu dem Zeitpunkt, zu dem das ADD-Statement ausgeführt wird, muss jeder bei der arithmetischen Operation benutzte Operand einen gültigen Wert enthalten.
  2. Zu Additionen mit Arrays siehe auch Abschnitt Arithmetische Operationen mit Arrays im Leitfaden zur Programmierung.
  3. Zum Format der Operanden siehe auch Abschnitt Formatwahl im Hinblick auf die Verarbeitungszeit im Leitfaden zur Programmierung.

Syntax 1 - ADD-Statement ohne GIVING-Klausel

ADD [ROUNDED]

../graphics/cbo2.gif

(arithmetic-expression)
operand1

../graphics/cbc2.gif

../graphics/dot3.gif 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:

operand1 und operand2 sind Summanden. Das Ergebnis wird in operand2 (Ergebnisfeld) gespeichert. Somit ist das Statement gleichbedeutend mit:

operand2 := operand2 + operand1 + ...
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.

Beispiel:

Das Statement

ADD #A(*) TO #B(*)  ist gleichbedeutend mit  COMPUTE #B(*) := #A(*) + #B(*)
ADD #S    TO #R     ist gleichbedeutend mit  COMPUTE #R    := #S + #R 
ADD #S #T TO #R     ist gleichbedeutend mit  COMPUTE #R    := #S + #T + #R
ADD #A(*) TO #R     ist gleichbedeutend mit  COMPUTE #R    := #A(*) + #R

Syntax 2 - ADD-Statement mit GIVING-Klausel

ADD [ROUNDED]

../graphics/cbo2.gif

(arithmetic-expression)
operand1

../graphics/cbc2.gif

../graphics/dot3.gif 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:

operand1 ist ein Summand. operand2 wird nur benutzt, um das Ergebnis der Operation aufzunehmen und wird nicht in die Addition einbezogen. Somit ist das Statement gleichbedeutend mit:

operand2 := operand1 + ...
ROUNDED
ROUNDED-Option:

Wenn das Schlüsselwort ROUNDED angegeben wird, dann wird das Ergebnis gerundet.

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 mit  COMPUTE #R := #S
ADD #S #T    GIVING #R  ist gleichbedeutend mit  COMPUTE #R := #S + #T
ADD #A(*) 0  GIVING #R  ist gleichbedeutend mit  COMPUTE #R := #A(*) + 0 
	 Dies ist eine zulässige Operation aufgrund der Regeln im Abschnitt Arithmetische Operationen mit Arrays
ADD #A(*)    GIVING #R  ist gleichbedeutend mit  COMPUTE #R := #A(*)  
	 Dies ist eine unzulässige Operation aufgrund der Regeln im Abschnitt Zuweisungen bei Arrays

Beispiel

** 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