खोज…


परिचय

प्रगति ABL दो अवतरण कथन का समर्थन करती है: IF/THEN/ELSE और CASE

यदि ... तो ... ईएलएसई-बयान

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 -ateate को ELSE 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 , आंतरिक कनेक्शन के साथ या बिना कई 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 -statement IF/ELSE -conditional की तुलना में बहुत अधिक सख्त है। यह केवल एक एकल चर और केवल समानता की तुलना कर सकता है, लार्गेट से छोटा / आदि नहीं।

DEFINE VARIABLE c AS CHARACTER NO-UNDO।

CASE c:
    WHEN "A" THEN DO:
        RUN procedureA.
    END.
    WHEN "B" THEN DO:
        RUN procedureB.
    END.
    OTHERWISE DO:
        RUN procedureX.
    END.
END CASE.

एक का उपयोग करना OR प्रत्येक WHEN विभिन्न मूल्यों की तुलना कर सकते हैं:

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 -statement, 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.

एक सी-स्टाइल switch -विपरीत के विपरीत CASE -statement से बचने की कोई आवश्यकता नहीं है - केवल एक शाखा निष्पादित होगी। कई तो 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.

यदि ... तब ... ELSE- फ़ंक्शन

IF THEN ELSE उपयोग एकल मान लौटाने के लिए फ़ंक्शन की तरह भी किया जा सकता है। यह टर्नरी जैसा बहुत कुछ है ? -सीओप्रोसेसर सी।

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 -statement में कई तुलनाएं की जा सकती हैं:

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