수색…
소개
진행 ABL은 IF/THEN/ELSE
및 CASE
라는 두 가지 조건문을 지원합니다.
IF ... THEN ... ELSE-statement
IF THEN ELSE
문에서 결과는 다음과 같은 단일 문일 수 있습니다.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
IF i = 0 THEN
MESSAGE "Zero".
ELSE
MESSAGE "Something else".
또는 블록 (예 : DO
블록 추가) :
DEFINE VARIABLE i AS INTEGER NO-UNDO.
IF i = 0 THEN DO:
RUN procedure1.
RUN procedure2.
END.
ELSE DO:
RUN procedure3.
RUN procedure4.
END.
여러 IF
구문은 ELSE IF
IF
-syntax로 중첩 될 수 있습니다.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
IF i = 0 THEN DO:
RUN procedure1.
RUN procedure2.
END.
ELSE IF i = 1 THEN DO:
RUN procedure3.
RUN procedure4.
END.
ELSE DO:
RUN procedure5.
RUN procedure6.
END.
ELSE
part는 필수 사항이 아닙니다.
DEFINE VARIABLE l AS LOGICAL NO-UNDO.
l = TRUE.
IF l = TRUE THEN DO:
MESSAGE "The l variable has the value TRUE" VIEW-AS ALERT-BOX.
END.
IF
/ ELSE IF
는 내부 연결 유무와 상관없이 몇 가지 조건을 비교할 수 있습니다. 이렇게하면 여러 가지 방법으로 코드를 엉망으로 만들 수 있습니다.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE VARIABLE l AS LOGICAL NO-UNDO.
IF i < 30 OR l = TRUE THEN DO:
END.
ELSE IF i > 30 AND l = FALSE OR TODAY = DATE("2017-08-20") THEN DO:
END.
ELSE DO:
MESSAGE "I dont really know what happened here".
END.
케이스
CASE
구문은 IF/ELSE
보다 훨씬 엄격합니다. 단일 변수와 동등성 만 비교할 수 있으며 larget / small보다 같지 않습니다.
VARIABLE c로 문자를 정의하고 취소 할 수 있습니다.
CASE c:
WHEN "A" THEN DO:
RUN procedureA.
END.
WHEN "B" THEN DO:
RUN procedureB.
END.
OTHERWISE DO:
RUN procedureX.
END.
END CASE.
각각의 WHEN
사용하여 OR
사용하면 다른 값을 비교할 수 있습니다.
DEFINE VARIABLE c AS CHARACTER NO-UNDO.
CASE c:
WHEN "A" THEN DO:
RUN procedureA.
END.
WHEN "B" OR WHEN "C" THEN DO:
RUN procedureB-C.
END.
OTHERWISE DO:
RUN procedureX.
END.
END CASE.
IF
구문과 마찬가지로 각 분기는 단일 명령문 또는 블록이 될 수 있습니다. ELSE
와 마찬가지로, OTHERWISE
는 필수가 아닙니다.
DEFINE VARIABLE c AS CHARACTER NO-UNDO.
CASE c:
WHEN "A" THEN
RUN procedureA.
WHEN "B" OR WHEN "C" THEN
RUN procedureB-C.
END CASE.
C 스타일 switch
과 달리 CASE
구문을 벗어날 필요가 없으므로 하나의 분기 만 실행됩니다. 여러 개의 WHEN
일치하면 첫 번째 트리거 만 트리거됩니다. OTHERWISE
는 마지막이어야하며 일치하는 분기가없는 경우에만 트리거됩니다.
DEFINE VARIABLE c AS CHARACTER NO-UNDO.
c = "A".
CASE c:
WHEN "A" THEN
MESSAGE "A" VIEW-AS ALERT-BOX. //Only "A" will be messaged
WHEN "A" OR WHEN "C" THEN
MESSAGE "A or C" VIEW-AS ALERT-BOX.
END CASE.
IF ... THEN ... ELSE- 기능
IF THEN ELSE
는 하나의 값을 반환하는 함수처럼 사용될 수도 있습니다. 이것은 삼항과 아주 비슷 ?
C의 오퍼레이터
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE VARIABLE c AS CHARACTER NO-UNDO.
/* Set c to "low" if i is less than 5 otherwise set it to "high"
c = IF i < 5 THEN "low" ELSE "high".
괄호를 사용하면 이와 같은 코드를 쉽게 읽을 수 있습니다.
DEFINE VARIABLE i AS INTEGER NO-UNDO.
DEFINE VARIABLE c AS CHARACTER NO-UNDO.
c = (IF i < 5 THEN "low" ELSE "high").
IF
-part의 값과 ELSE
-part의 값은 동일한 데이터 유형이어야합니다. 이 경우 ELSE IF
를 사용할 수 없습니다.
DEFINE VARIABLE dat AS DATE NO-UNDO.
DEFINE VARIABLE beforeTheFifth AS LOGICAL NO-UNDO.
dat = TODAY.
beforeTheFifth = (IF DAY(dat) < 5 THEN TRUE ELSE FALSE).
IF
비교에서 몇 가지 비교를 할 수 있습니다.
DEFINE VARIABLE between5and10 AS LOGICAL NO-UNDO.
DEFINE VARIABLE i AS INTEGER NO-UNDO INIT 7.
between5and10 = (IF i >= 5 AND i <= 10 THEN TRUE ELSE FALSE).
MESSAGE between5and10 VIEW-AS ALERT-BOX.