SUBTRACT

#### Search Results

Search

# SUBTRACT

This document covers the following topics:

- Function

- Syntax 1 - SUBTRACT Statement without GIVING Clause

- Syntax 2 - SUBTRACT Statement with GIVING Clause

- Example

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

Belongs to Function Group: Arithmetic and Data Movement Operations

## Function

The `SUBTRACT` statement is used to subtract one or more arithmetic expressions or operands from another operand.

## Syntax 1 - SUBTRACT Statement without GIVING Clause

`SUBTRACT` [`ROUNDED`] |  | (arithmetic-expression) operand1 |  |  | `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.
`operand1` `FROM operand2` | Operands: `operand2` is the minuend, `operand1` is the subtrahend, hence the statement is equivalent to: `operand2 := operand2 - operand1` 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 `ROUNDED`, the result will be rounded. For information on rounding, see Rules for Arithmetic Assignment, Field Truncation and Field Rounding in the Programming Guide.

## Syntax 2 - SUBTRACT Statement with GIVING Clause

`SUBTRACT` [`ROUNDED`] |  | (arithmetic-expression) operand1 |  |  | `FROM` |  | (arithmetic-expression) operand2 |  | `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 `GIVING` clause is used, `operand2` will not be modified, and the result will be stored in `operand3`.
`operand1` `FROM operand2` `GIVING operand3` | Operands: `operand2` is the minuend, `operand1` is the subtrahend, `operand3` is the result field, hence the statement is equivalent to: `operand3 := operand2 - operand1` 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 `ROUNDED`, the result will be rounded. For information on rounding, see Rules for Arithmetic Assignment, Field Truncation and Field Rounding in the Programming Guide.

## Example

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

#### Output of Program 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

### On this page

- Function
- Syntax 1 - SUBTRACT Statement without GIVING Clause
- Syntax 2 - SUBTRACT Statement with GIVING Clause
- Example