progress-4gl
सशर्त बयान
खोज…
परिचय
प्रगति 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.