수색…


소개

진행 ABL은 IF/THEN/ELSECASE 라는 두 가지 조건문을 지원합니다.

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.


Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow