評価の順序

プロトタイプの呼び出しのパラメーターの評価順序は保証されて いません。 結果が期待したものと異なることがあるので、副次作用を起こすパラメーター を使用する時には、このことが重要になります。

副次作用はパラメーターの処理が次のものを変更した場合に 起こります。

副次作用が起こり、そのパラメーターがパラメーター・リストのどこか 他の場所で使用された場合には、リストのある個所のパラメーターに 使用された値が、別の個所で使用された値と同じで ないことがあります。 例えば、次の呼び出しステートメントを考えてみてください。

                CALLP         procA (fld : procB(fld) : fld)

procA がすべての値のパラメーターをもち、procB が参照パラメーターをもっ ているとしましょう。また、fld は値 3 で開始し、 procB が fld を 5 に変更し、10 を戻すとしましょう。 パラメーターが評価される順序によって 、procA は 3、10、および 5 のいずれか、または可能性として 3、10、および 3 の いずれかを受けます。また可能性として 5、10、および 3 があり、5、10、 および 5 という場合さえあります。

簡単に言うと、副次作用が起こる可能性に注意することが 大切です。 特に、エンド・ユーザーがプロシージャーの一部の詳細を知らないような、 サード・パーティー用のプログラムを提供する場合には、 渡されたパラメーターの値が予定の値であることを確認することが重要です。