Crystal Reports  

無限ループの回避(Crystal 構文)

無限ループが原因でレポート処理が停止してしまうことを防ぐための安全装置があります。式を 1 回評価する間に、最高で 100,000 回まではループ条件の評価が可能です。例 :

Local NumberVar i := 1;
While i <= 200000 Do
(
If i > {movie.STARS} Then
Exit While;
i := i + 1
);
20

{movie.STARS} が 100,000 より大きい場合、ループ条件 (i <= 200000) は最大の評価回数を超えて評価されるので、エラー メッセージが表示されます。30,000 以下の場合は、ループは可能です。

安全装置は、個々のループではなく、式単位で適用されます。例 :
Local NumberVar i := 1;
For i := 1 To 40000 Do
(
Sin (i);
);
While i <= 70000 Do
(
i := i + 1;
)

この式でも安全装置が作動します。100,000 という数字は、式の中でループ条件が評価される合計回数を意味します。この式はそのような評価を 40001 +70001 回実行するため安全装置が働きます。

参照

For ループ | While ループ