다음을 통해 공유


무한 루프 방지(Crystal 구문)

무한 루프 때문에 보고서 처리가 중단되는 경우를 방지하는 안전한 메커니즘이 있습니다. 어떠한 수식이라도 하나의 수식을 평가하는 데 최대 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)은 최대 횟수보다 많이 평가되며 오류 메시지가 표시됩니다. 그렇지 않으면 루프는 문제 없이 진행됩니다.

Note참고

안전 메커니즘은 개별 루프 단위로 적용되는 것이 아니라 수식 단위로 적용됩니다. 예를 들면 다음과 같습니다.

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

위에서 100,000은 수식의 전체 루프 조건 평가 횟수를 나타내고 해당 수식은 40001 +70001의 평가 횟수를 가지므로 위의 수식은 안전 메커니즘을 트리거합니다.