REDUCE オプションは、コンパイラーが、構造に対するヌル・ストリングの割り当てを、よりシンプルな操作 (埋め込みバイトが 上書きされるだけの場合もあります) に縮小するのを許可されていることを指定します。
.-REDUCE---. >>-+-NOREDUCE-+------------------------------------------------><
NOREDUCE オプションを指定した場合、コンパイラーは構造体に対するヌル・ ストリングの割り当てを分解して、構造体の基本メンバーに対して ヌル・ストリングを連続して割り当てるようになります。
REDUCE オプションを使用すると、ヌル・ストリングを構造体に 割り当てるために生成されるコードの行数が少なくなり、その結果として通常はコンパイルが高速になり、コードの実行速度が大きく向上します。しかし、埋め込みバイトはゼロにリセットされることがあります。
例えば、下の構造には、field12 と field13 の間に 1 バイトの埋め込みがあります。
dcl
1 sample ext,
5 field10 bin fixed(31),
5 field11 bin fixed(15),
5 field12 bit(8),
5 field13 bin fixed(31);
ここで、割り当て sample = ’’; について考えてみます。
NOREDUCE オプションを指定した場合、4 つの割り当てが生成され、埋め込みバイトは変更されません。
しかし、REDUCE を指定した場合、割り当ては 3 つの操作に縮小されますが、埋め込みバイトはゼロにリセットされます。