### 11.21 LEAVE ¶

`LEAVE` prevents the specified variables from being reinitialized whenever a new case is processed.

    LEAVE var_list.

Normally, when a data file is processed, every variable in the active dataset is initialized to the system-missing value or spaces at the beginning of processing for each case. When a variable has been specified on `LEAVE`, this is not the case. Instead, that variable is initialized to 0 (not system-missing) or spaces for the first case. After that, it retains its value between cases.

This becomes useful for counters. For instance, in the example below the variable `SUM` maintains a running total of the values in the `ITEM` variable.

    DATA LIST /ITEM 1-3.
    COMPUTE SUM=SUM+ITEM.
    PRINT /ITEM SUM.
    LEAVE SUM
    BEGIN DATA.
    123
    404
    555
    999
    END DATA.

Partial output from this example:

    123   123.00
    404   527.00
    555  1082.00
    999  2081.00

It is best to use `LEAVE` command immediately before invoking a procedure command, because the left status of variables is reset by certain transformations—for instance, `COMPUTE` and `IF`. Left status is also reset by all procedure invocations.