あるストリングが別のストリングに割り当てられるときに、コンパイラーは次のことを確認します。
この確認は、いくつかの追加の命令が必要になるという犠牲を払って行われます。 コンパイラーは、これらの追加の命令を必要なときにだけ生成しようとしますが、 コンパイラーが必要でないということに確信を持てない場合、ユーザーは、 プログラマーとして、その追加の命令が必要ないということを知っていることが多いのです。 例えば、ソースとターゲットが基底付き文字ストリングであって、 ユーザーはそれらがオーバーラップすることがあり得ないことを知っている場合、 コンパイラーであれば生成するように強制される ところを、PLIMOVE 組み込み関数を使ってその追加のコードを除去することができます。
次の例では、2 番目の代入ステートメント用に、より速いコードが生成されます。
dcl based_Str char(64) based( null() ); dcl target_Addr pointer; dcl source_Addr pointer; target_Addr->based_Str = source_Addr->based_Str; call plimove( target_Addr, source_Addr, stg(based_Str) );
ユーザーがソースとターゲットがオーバーラップするのではないかと疑いがある場合、または ターゲットがソースを収容できる大きさであるかどうかが疑われる 場合は、ユーザーは PLIMOVE 組み込み関数を使ってはなりません。