## 6.2.38 SUBTRACT Statement

```

```
The SUBTRACT statement subtracts one numeric item, or the sum of two or more numeric items, from one or more numeric items, and stores the result.
```
```
```
___ Format 1 ___________________________________________________________
|                                                                        |
|               <__________________                                      |
| >>__SUBTRACT____ _identifier-1_ _|__FROM_____________________________> |
|                 |_literal-1____|                                       |
|                                                                        |
|    <___________________________                                        |
| >____identifier-2__ _________ _|_____________________________________> |
|                    |_ROUNDED_|                                         |
|                                                                        |
| >__ ____________________________________________ ____________________> |
|    |_ ____ __SIZE ERROR__imperative-statement-1_|                      |
|      |_ON_|                                                            |
|                                                                        |
| >__ _________________________________________________ _______________> |
|    |_NOT__ ____ __SIZE ERROR__imperative-statement-2_|                 |
|           |_ON_|                                                       |
|                                                                        |
| >__ ______________ _________________________________________________>< |
|    |_END-SUBTRACT_|                                                    |
|                                                                        |
|________________________________________________________________________|
```
All identifiers or literals preceding the key word FROM are added together and this sum is subtracted from and stored immediately in identifier-2. This process is repeated for each successive occurrence of identifier-2, in the left-to-right order in which identifier-2 is specified.
```
```
```
___ Format 2 ___________________________________________________________
|                                                                        |
|               <__________________                                      |
| >>__SUBTRACT____ _identifier-1_ _|__FROM__ _identifier-2_ ___________> |
|                 |_literal-1____|          |_literal-2____|             |
|                                                                        |
|            <___________________________                                |
| >__GIVING____identifier-3__ _________ _|_____________________________> |
|                            |_ROUNDED_|                                 |
|                                                                        |
| >__ ____________________________________________ ____________________> |
|    |_ ____ __SIZE ERROR__imperative-statement-1_|                      |
|      |_ON_|                                                            |
|                                                                        |
| >__ _________________________________________________ _______________> |
|    |_NOT__ ____ __SIZE ERROR__imperative-statement-2_|                 |
|           |_ON_|                                                       |
|                                                                        |
| >__ ______________ _________________________________________________>< |
|    |_END-SUBTRACT_|                                                    |
|                                                                        |
|________________________________________________________________________|
```
All identifiers or literals preceding the key word FROM are added together and this sum is subtracted from identifier-2 or literal-2. The result of the subtraction is stored as the new value of each data item referenced by identifier-3.
```
```
```
___ Format 3 ___________________________________________________________
|                                                                        |
| >>__SUBTRACT__ _CORRESPONDING_ __identifier-1__FROM__________________> |
|               |_CORR__________|                                        |
|                                                                        |
| >__identifier-2__ _________ _________________________________________> |
|                  |_ROUNDED_|                                           |
|                                                                        |
| >__ ____________________________________________ ____________________> |
|    |_ ____ __SIZE ERROR__imperative-statement-1_|                      |
|      |_ON_|                                                            |
|                                                                        |
| >__ _________________________________________________ _______________> |
|    |_NOT__ ____ __SIZE ERROR__imperative-statement-2_|                 |
|           |_ON_|                                                       |
|                                                                        |
| >__ ______________ _________________________________________________>< |
|    |_END-SUBTRACT_|                                                    |
|                                                                        |
|________________________________________________________________________|
```
Elementary data items within identifier-1 are subtracted from, and the results are stored in, the corresponding elementary data items within identifier-2.
```
```
The composite of operands must not contain more than 18 digits. The compiler ensures that enough places are carried so that no significant digits are lost during execution.
```
```

X The composite of operands may contain more than 18 digits. For more
X information on arithmetic intermediate results, see the IBM COBOL
X Programming Guide for your platform.
```
```
For all Formats:
```
```
identifier
In Format 1, must name an elementary numeric item.
```
```
In Format 2, must name an elementary numeric item, unless the identifier follows the word GIVING. Each identifier following the word GIVING must name a numeric or numeric-edited elementary item.
```
```
In Format 3, must name a group item.
```
```

X The following restrictions apply to date fields:
```
```
• X In Format 1, identifier-1 may specify at most one date field. If
X identifier-1 specifies a date field, then every instance of
X identifier-2 must specify a date field that is compatible with the
X date field specified by identifier-1. If identifier-1 does not
X specify a date field, then identifier-2 may specify one or more
X date fields, with no restriction on their DATE FORMAT clauses.
```
```
• X In Format 2, identifier-1 and identifier-2 may each specify at
X most one date field. If identifier-1 specifies a date field, then
X the FROM identifier-2 must be a date field that is compatible with
X the date field specified by identifier-1. Identifier-3 may
X specify one or more date fields. If identifier-2 specifies a date
X field and identifier-1 does not, then every instance of
X identifier-3 must specify a date field that is compatible with the
X date field specified by identifier-2.
```
```
• X In Format 3, if an item within identifier-1 is a date field, then
X the corresponding item within identifier-2 must be a compatible
X date field.
```
```
• | A year-last date field is allowed in a SUBTRACT statement only as
| identifier-1 and when the result of the subtraction is a non-date.
```

```

X There are two steps to determining the result of a SUBTRACT statement
X that involves one or more date fields:
```
```
1. X Subtraction: determine the result of the subtraction operation, as
X described under "Subtraction Involving Date Fields" in
X topic 6.1.5.2.2.
```
```
2. X Storage: determine how the result is stored in the receiving
X field. (In Formats 1 and 3, the receiving field is identifier-2;
X in Format 3, the receiving field is the GIVING identifier-3.) For
X details, see "Storing Arithmetic Results That Involve Date Fields"
X in topic 6.1.5.2.3.
```

```
literal
Must be a numeric literal.
```

```

X Floating-point data items and literals may be used anywhere numeric data
X items and literals can be specified.
```
```

Subtopics:

Return to library:   z/OS | z/OS.e | TPF | z/VSE | z/VM | IBM Hardware | IBM System z Redbooks
Glossary:   IBM terminology
Publications:   How to order publications