呼び出し側のネストされたプロシージャーは、 追加の隠しパラメーター (逆チェーン・ポインター) が渡されるように求めます。 結果として、アプリケーションに含まれている ネストされたプロシージャーが少なくなればなるほど、実行速度は速くなります。
アプリケーションのパフォーマンスを向上させるには、 ネストされたプロシージャーの母娘の対を、 パッケージ内部のレベル 1 の姉妹プロシージャーに変換します。 この変換は、ネストされたプロシージャーが、 その親プロシージャーで宣言された自動かつ内部の静的変数に依存していない場合に可能です。
ネストされたプロシージャーの例のプロシージャー b に、a で 宣言された変数が使われていない場合は、両方のプロシージャー を パッケージ化されたプロシージャーの例に示されているパッケージに 再編成することによって、これらのプロシージャーのパフォーマンス を向上させることができます。
a: proc;
dcl (i,j,k) fixed bin;
dcl ib based fixed bin;
.
.
.
call b( addr(i) );
.
.
.
b: proc( px );
dcl px pointer;
display( px->ib );
end;
end;
p: package exports( a );
dcl ib based fixed bin;
a: proc;
dcl (i,j,k) fixed bin;
.
.
.
call b( addr(i) );
.
.
.
end;
b: proc( px );
dcl px pointer;
display( px->ib );
end;
end p;