1. DO statement
DO statement는 여러 statement를 그룹으로 묶어 반복 수행을 위해 조건을 정의할 수 있다. DO statement는 END statement와 짝지어져야 하고, DO statement부터 END statement 안에 있는 statement들은 do-group으로 묶인다.
DO statement는 다음과 같은 4가지 유형이 있다.
-
Type 1
-
Type 2
-
Type 3
-
Type 4
Type 1
Type 1은 do-group을 정의하여 do-group안의 statement들을 수행한다. Type 1은 반복 수행을 위한 조건을 정의하지 않는다.
Type 2와 Type 3
Type 2와 Type 3은 do-group을 정의하여 do-group 안의 statement들을 수행하며, 반복 수행을 위한 조건을 정의할 수 있다.
Type 2 :
Type 3 :
specification :

| 항목 | 설명 |
|---|---|
WHILE(expression) |
do-group이 수행되기 전 표현식을 계산하여 BIT string으로 변환한다. 어떤 BIT라도 1일 경우 do-group은 수행된다. 모든 BIT가 0이거나 string이 null일 경우 do-group은 수행되지 않는다. specification이 여러 번 반복될 경우 다음 specification이 수행된다. |
UNTIL(expression) |
do-group이 수행된 후 표현식을 계산하여 BIT string으로 변환한다. 모든 BIT가 0이거나 string이 null일 경우 do-group은 수행된다. 어떤 BIT라도 1일 경우 do-group은 수행되지 않는다. specification이 여러 번 반복 될 경우 다음 specification이 수행된다. |
reference |
do-group을 처음 수행하기 전 expression1의 값으로 초기화 된다. specification이 여러 번 반복될 경우 각 specification의 expression1의 값으로 초기화되고 do-group을 수행한다. |
expression1 |
reference의 초기 값을 정의한다. TO, BY, REPEAT가 생략될 경우 계속 expression1의 값을 가지면서 반복된다. |
TO expression2 |
reference의 종료 값을 정의한다. 참조의 값이 expression1부터 expression2의 범위를 넘을 경우 해당 do-group은 종료된다. TO expression2가 생략될 경우 WHILE, UNTIL 옵션에 의해 do-group이 종료되어야 한다. |
BY expression |
reference의 증감 값을 정의한다. do-group이 실행된 후 참조에 표현식 값만큼 더한 후 저장한다. TO expression2가 정의되어 있고 BY expression이 생략될 경우 기본값으로 BY 1이 지정된다. |
UPTHRU expression |
참조의 종료 값을 정의한다. do-group이 실행된 후 참조에 1을 더한 후 저장한다. TO 옵션과 다른 점은 TO 옵션은 do-group을 수행하기 전에 비교하지만, UPTHRU 옵션은 do-group을 수행한 후 비교한다. 따라서 UPTHRU 옵션은 do-group을 최소 한 번 이상 수행한다. |
DOWNTHRU expression |
참조의 종료 값을 정의한다. do-group이 실행된 후 참조에 1을 뺀 후 저장한다. TO 옵션과 다른 점은 TO 옵션은 do-group을 수행하기 전에 비교하지만, DOWNTHRU 옵션은 do-group을 수행한 후 비교한다. 따라서 DOWNTHRU 옵션은 do-group을 최소 한 번 이상 수행한다. |
REPEAT expression |
do-group이 수행된 후 표현식을 계산하여 참조에 저장하고 다시 do-group을 수행한다. WHILE이나 UNTIL 옵션에 의해 종료되기 전까지 do-group 수행을 반복한다. |
Type 4
Type 4는 do-group을 정의하여 do-group 안의 statement를 무한 반복 수행한다.
| 항목 | 설명 |
|---|---|
FOREVER |
LOOP와 동의어이다. |
LOOP |
무한 반복을 정의한다. 반복을 종료하기 위해서는 GOTO 또는 LEAVE statement를 사용하거나 프러시저 또는 프로그램을 종료해야 한다. |