SUBTRACT

Dieses Dokument behandelt folgende Themen:

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

Gehört zur Funktionsgruppe: Arithmetische Funktionen und Datenzuweisungen


Funktion SUBTRACT

Mit dem Statement SUBTRACT können Sie die Werte zweier oder mehrerer Operanden voneinander abziehen.

Dieses Statement hat zwei verschiedene Syntax-Strukturen.

Syntax 1 - SUBTRACT-Statement ohne GIVING-Klausel

SUBTRACT [ROUNDED]

../graphics/cbo2.gif

(arithmetic-expression)
operand1

../graphics/cbc2.gif

../graphics/dot3.gif FROM operand2

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   D T         ja nein
operand2   S A   M   N P I F   D T         ja nein

Syntax-Element-Beschreibung:

Syntax-Element Beschreibung
arithmetic-expression Siehe Arithmetischer Ausdruck beim COMPUTE-Statement.

operand1
FROM operand2

Operanden:

operand1 ist der Minuend, operand2 ist der Subtrahend. Somit ist das Statement gleichbedeutend mit:

operand2 := operand2 - operand1

Bezüglich der Formate der Operanden siehe auch Formatwahl im Hinblick auf die Verarbeitungszeit 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 - SUBTRACT-Statement mit GIVING-Klausel

SUBTRACT [ROUNDED]

../graphics/cbo2.gif

(arithmetic-expression)
operand1

../graphics/cbc2.gif

../graphics/dot3.gif FROM

../graphics/cbo2.gif

(arithmetic-expression)
operand2

../graphics/cbc2.gif

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   D T         ja nein
operand2 C S A   N     N P I F   D T         ja nein
operand3   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 Description
arithmetic-expression Siehe Arithmetischer Ausdruck beim COMPUTE-Statement.
GIVING
GIVING-Klausel:

Wird die GIVING-Klausel benutzt, dann wird operand2 nicht verändert, und das Ergebnis wird in operand3 gespeichert.

operand1
FROM operand2
GIVING operand3

Operanden:

operand2 ist der Minuend, operand1 ist der Subtrahend, operand3 ist das Ergebnisfeld. Somit ist das Statement gleichbedeutend mit:

operand3 := operand2 - operand1

Bezüglich der Formate der Operanden siehe auch Formatwahl im Hinblick auf die Verarbeitungszeit 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.

Beispiel für SUBTRACT-Statement

** Example 'SUBEX1': SUBTRACT                                           
************************************************************************
DEFINE DATA LOCAL                                                       
1 #A (P2) INIT <50>                                                     
1 #B (P2)                                                               
1 #C (P1.1) INIT <2.4>                                                  
END-DEFINE                                                              
*                                                                       
SUBTRACT 6 FROM #A                                                   
WRITE NOTITLE 'SUBTRACT 6 FROM #A              '  10X '=' #A            
*                                                                       
SUBTRACT 6 FROM 11 GIVING #A                                         
WRITE         'SUBTRACT 6 FROM 11 GIVING #A    '  10X '=' #A            
*                                                                       
SUBTRACT 3 4 FROM #A GIVING #B                                        
WRITE         'SUBTRACT 3 4 FROM #A GIVING #B  '  10X '=' #A '=' #B     
*                                                                       
SUBTRACT -3 -4 FROM #A GIVING #B                                      
WRITE         'SUBTRACT -3 -4 FROM #A GIVING #B'  10X '=' #A '=' #B     
*                                                           
SUBTRACT ROUNDED 2.06 FROM #C                             
WRITE         'SUBTRACT ROUNDED 2.06 FROM #C   '  10X '=' #C
*                                                           
END                                                        

Ausgabe des Programms SUBEX1:

SUBTRACT 6 FROM #A                        #A:  44        
SUBTRACT 6 FROM 11 GIVING #A              #A:   5        
SUBTRACT 3 4 FROM #A GIVING #B            #A:   5 #B:  -2
SUBTRACT -3 -4 FROM #A GIVING #B          #A:   5 #B:  12
SUBTRACT ROUNDED 2.06 FROM #C             #C:  0.3