REMOVE Statement
The functionality of the REMOVE statement can be configured to act as expected by the compatibility system by flags within the Compatibility Switch Matrix (set with the $OPTIONS statement).
FLAG
| REMOVE.RESTART | Allows REMOVE to restart from the start of the string depending on the state and value of the setting-var variable. If the setting-var variable has the value -1 or is unassigned when it is passed to the REMOVE statement, the internal REMOVE pointer is reset to the beginning of the array. | 
| REMOVE.LAST | If set the REMOVE statement will return a zero instead of a one in the setting variable when returning the last field of a string. | 
| REMOVE.PEOS | If set REMOVE will return a one instead of a zero in its setting variable when removing past end of string. | 
Example
The compatibility switch matrix values are as follows:
| BCC Entry | Reality | D3 | mvEnterprise | 
|---|---|---|---|
| REMOVE.LAST | 0 | 1 | 0 | 
| REMOVE.PEOS | 0 | 0 | 1 | 
Given the following three programs that only differ in name and first line:
Program Names = Reality.REM D3.REM MVE.REM First Lines = $OPTIONS REALITY $OPTIONS D3 $OPTIONS MVENTERPRISE
The rest of the programs are the same as follows:
REMOVE VAR FROM A SETTING SET CRT SQUOTE(VAR),SET REMOVE VAR FROM A SETTING SET CRT SQUOTE(VAR),SET
The expected output would be the following:
| Reality.REM | D3.REM | MVE.REM | Comment | 
|---|---|---|---|
| (VAR) - (SET) | (VAR) - (SET) | (VAR) - (SET) | 
 | 
| ("last") - (1) | ("last") - (0) | ("last") - (1) | REMOVE of last field | 
| ("") - (0) | ("") - (0) | ("") - (1) | REMOVE past end of string |