Vermeiden von Endlosschleifen (Crystal-Syntax)

Durch einen Sicherheitsmechanismus wird verhindert, dass die Berichtsverarbeitung aufgrund einer Endlosschleife hängenbleibt. Für jede Auswertung einer Formel werden pro Ausführung maximal 100.000 Auswertungen von Schleifenbedingungen zugelassen. Beispiel:

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

Wenn {Film.STARS} größer als 100.000 ist, dann wird die Schleifenbedingung i <= 200000 öfter ausgewertet, als maximal zulässig ist, und folglich eine Fehlermeldung ausgegeben. Andernfalls ist die Schleife zulässig.

NoteAnmerkung

Der Sicherheitsmechanismus wird auf die gesamte Formel und nicht nur auf einzelne Schleifen angewendet. Beispiel:

Local NumberVar i := 1;
For i := 1 To 40000 Do
(
Sin (i);
);
While i <= 70000 Do
(
i := i + 1;
)

In der oben stehenden Formel wird der Sicherheitsmechanismus ebenfalls ausgelöst, da die Zahl 100.000 für die Gesamtanzahl der Auswertungen von Schleifenbedingungen in der Formel gilt und in dieser Formel 40.001 +70.001 Auswertungen dieser Art stattfinden.