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

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

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