Version 4.2.6
 —  Statements  —

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.

Verwenden Sie ein Datenbankfeld als Ergebnisfeld, so ändert sich der Wert des Feldes nur programmintern. Der Wert, den das Feld in der Datenbank hat, wird davon nicht beeinflusst.

Seitenanfang

Syntax-Beschreibung

Syntax 1 - SUBTRACT ohne GIVING-Klausel

SUBTRACT [ROUNDED] operand1   FROM operand2

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:

operand1 FROM operand2
Operanden:

operand1 ist der Minuend, operand2 ist der Subtrahend, folglich ist das Statement äquivalent zu:

<oper2> := <oper2> - <oper1>

Zum Format der Operanden siehe auch Regeln für arithmetische Operationen, Formatwahl im Hinblick auf die Verarbeitungszeit im Leitfaden zur Programmierung.

ROUNDED
Runden:

Wenn Sie das Ergebnis gerundet wünschen, geben Sie das Schlüsselwort ROUNDED an.

Die für das Runden gültigen Regeln finden Sie im Abschnitt Regeln für arithmetische Operationen, Abschneiden und Runden von Feldwerten im Leitfaden zur Programmierung.

Syntax 2 - SUBTRACT mit GIVING-Klausel

SUBTRACT [ROUNDED] operand1   FROM operand2 GIVING operand3

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:

GIVING
Ergebnisfeld:

Wenn Sie die GIVING-Klausel verwenden, erhalten Sie das Ergebnis der Subtraktion in operand3; der Wert von operand2 ändert sich nicht.

operand1 FROM operand2 GIVING operand3
Operanden:

operand2 ist der Minuend, operand1 ist der Subtrahend, operand3 ist das Ergebnisfeld, folglich ist das Statement äquivalent zu:

<oper3> := <oper2>- <oper1>

Zum Format der Operanden siehe auch Regeln für arithmetische Operationen, Formatwahl im Hinblick auf die Verarbeitungszeit im Leitfaden zur Programmierung.

Zum Format der Operanden siehe auch Formatwahl im Hinblick auf die Verarbeitungszeit (im Leitfaden zur Programmierung).

ROUNDED
Runden:

Wünschen Sie das Ergebnis gerundet, geben Sie das Schlüsselwort ROUNDED an. Die für das Runden gültigen Regeln finden Sie im Abschnitt Regeln für arithmetische Operationen, Abschneiden und Runden von Feldwerten im Leitfaden zur Programmierung.

Seitenanfang

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      

Seitenanfang