This document covers the following topics:
Related Statements: ADD
                      | COMPRESS |
                      COMPUTE |
                      DIVIDE |
                      EXAMINE |
                      MOVE |
                      MOVE ALL |
                      MULTIPLY |
                      RESET |
                      SEPARATE 
               
Belongs to Function Group: Arithmetic and Data Movement Operations
The SUBTRACT statement is used to subtract the values of
                       two or more operands.
               
 SUBTRACT
                                    [ROUNDED] 
                         |  
                                
                        
                            
  |  
                                
                        
                            
  |  
                                
                        FROM
                                       operand2 |  
                               
                     
Operand Definition Table:
| Operand | Possible Structure | Possible Formats | Referencing Permitted | Dynamic Definition | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
 operand1 
                         |  
                                
                        C | S | A | N | N | P | I | F | D | T | yes | no | |||||||
 operand2 
                         |  
                                
                        S | A | M | N | P | I | F | D | T | yes | no | ||||||||
Syntax Element Description:
| Syntax Element | Description | 
|---|---|
arithmetic-expression | 
                                
                                
                        See Arithmetic
                                       Expression in the COMPUTE statement.
                         |  
                               
                     
|  
                                    
                           
                             Operands:  
                                    
                               As for the formats of the operands, see also Rules for Arithmetic Assignments, Performance Considerations for Mixed Formats in the Programming Guide.  |  
                               
                     |
 ROUNDED 
                         |  
                                
                         
                                    
                             ROUNDED Option:  
                                    
                           If you specify the keyword  For information on rounding, see Rules for Arithmetic Assignment, Field Truncation and Field Rounding in the Programming Guide.  |  
                               
                     
 SUBTRACT
                                    [ROUNDED] 
                         |  
                                
                        
                            
  |  
                                
                        
                            
  |  
                                
                        FROM 
                                    
                         |  
                                
                        
                            
  |  
                                
                        
                            
  |  
                                
                        GIVING
                                       operand3 |  
                               
                     ||||
Operand Definition Table:
| Operand | Possible Structure | Possible Formats | Referencing Permitted | Dynamic Definition | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
 operand1 
                         |  
                                
                        C | S | A | N | N | P | I | F | D | T | yes | no | ||||||||
 operand2 
                         |  
                                
                        C | S | A | N | N | P | I | F | D | T | yes | no | ||||||||
 operand3 
                         |  
                                
                        S | A | M | A | U | N | P | I | F | B* | D | T | yes | yes | ||||||
* Format B of operand3 may be
                       used only with a length of less than or equal to 4. 
               
Syntax Element Description:
| Syntax Element | Description | 
|---|---|
arithmetic-expression | 
                                
                                
                        See Arithmetic
                                       Expression in the COMPUTE statement.
                         |  
                               
                     
 GIVING 
                         |  
                                
                         
                                    
                           
                            GIVING
                                           Clause:  
                                    
                           When the   |  
                               
                     
|  
                                    
                           
                             Operands:  
                                    
                               As for the formats of the operands, see also the section Performance Considerations for Mixed Formats in the Programming Guide.  |  
                               
                     |
 ROUNDED 
                         |  
                                
                         
                                    
                             ROUNDED Option:  
                                    
                           If you specify the keyword  For information on rounding, see Rules for Arithmetic Assignment, Field Truncation and Field Rounding in the Programming Guide.  |  
                               
                     
** 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
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