코볼에서 CASE 기능으로 사용하는 것은 EVALUATE 이다.
문법은 아래와 같다.
EVALUATE WK-VALWHEN 1MOVE 'FIRST' TO WK-RSTWHEN 2MOVE 'SECOND' TO WK-RSTWHEN OTHERMOVE 'OVER' TO WK-RSTEND-EVALUATE
WK-VAL 값이 1이면
EVALUATE WK-VAL
WHEN 1
WHEN 2
MOVE 'OK' TO WK-RST
WHEN OTHER
MOVE 'OVER' TO WK-RST
END-EVALUATE
EVALUATE TRUE
WHEN WK-VAL = 1
MOVE 'FIRST' TO WK-RST
WHEN WK-VAL = 2
MOVE 'SECOND' TO WK-RST
WHEN OTHER
MOVE 'OVER' TO WK-RST
END-EVALUATE
EVALUATE TRUE
WHEN WK-VAL <= 2
MOVE 'SECOND' TO WK-RST
WHEN WK-VAL <= 1
MOVE 'FIRST' TO WK-RST
WHEN OTHER
MOVE 'OVER' TO WK-RST
END-EVALUATE
만약, WK-VAL 값이 1인 경우, 위 EVALUATE문에서
첫번째 WHEN 문장만 수행이 될 것인지?
두번째 WHEN 문장도 수행이 될 것인지?
첫번째 WHEN 문장만 수행이 된다.
처음 만나는 WHEN WK-VAL <= 2 조건이 충족하면,
그 WHEN 문 안의 코드
MOVE 'SECOND' TO WK-RST
이것만 수행이 되고, EVALUATE 문은 끝나게 된다.
두번째 WHEN 인
WHEN WK-VAL <= 1
MOVE 'FIRST' TO WK-RST
코는 수행되지 않는다.
EVALUATE
EVALUATE { identifier-1/ literals-1/TRUE / FALSE / ANY / condition-1}[ ALSO { identifier-2/ literals-2/TRUE / FALSE / ANY / condition-2} ][ WHEN identifier-3 무조건문-1 ] …[ WHEN OTHER 무조건문-2 ][ END-EVALUATE ]
Written by dukgun.com
댓글 쓰기