ماڈیول اسباق (2/2)
IF اور EVALUATE کے ساتھ فیصلے
COBOL میں فیصلہ سازی بنیادی طور پر IF مشروط بیان اور ملٹی برانچ سلیکشن سٹرکچر EVALUATE (جدید زبانوں میں switch یا match کے مشابہ) کا استعمال کرتے ہوئے انجام دیا جاتا ہے۔
IF مشروط بیان
IF بیان کا بنیادی نحو ہے:
IF condition
statements-if-true
ELSE
statements-if-false
END-IF.جدید COBOL ورژنز (COBOL-85 اور بعد میں) میں، بیان کو واضح طور پر END-IF. کے ساتھ ختم ہونا چاہیے بجائے اس کے کہ مکمل طور پر حتمی مدت . پر انحصار کیا جائے، جس سے تجزیہ اور منطق کی غلطیوں کو نمایاں طور پر کم کیا جائے۔
عام حالات
- اس سے بڑا:
>یاGREATER THAN - اس سے کم:
<یاLESS THAN - اس کے برابر:
=یاEQUAL TO - اس سے بڑا یا اس کے برابر:
>=یاGREATER THAN OR EQUAL TO - اس سے کم یا اس کے برابر:
<=یاLESS THAN OR EQUAL TO
IF WS-BALANCE < 0
DISPLAY "OVERDRAWN"
ELSE
DISPLAY "ACCOUNT ACTIVE"
END-IF.تشخیص کا بیان
جب ہمیں متعدد مجرد اقدار سے متغیر کا موازنہ کرنے کی ضرورت ہوتی ہے، تو نیسٹڈ IF بیانات پیچیدہ ہو سکتے ہیں۔ EVALUATE بیان انتخاب کو صاف ستھرا انداز میں ترتیب دے کر حل کرتا ہے:
EVALUATE WS-USER-ROLE
WHEN "ADMIN"
DISPLAY "FULL ACCESS"
WHEN "EDITOR"
DISPLAY "EDIT ACCESS"
WHEN OTHER
DISPLAY "LIMITED ACCESS"
END-EVALUATE.WHEN OTHER: فال بیک برانچ (defaultکے مساوی یا جدید زبانوں میں حتمیelse) کی نشاندہی کرتا ہے۔END-EVALUATE.: ڈھانچہ بند کرتا ہے۔
خود ہی آزمائیں۔
ایک IF-ELSE-END-IF بلاک لکھیں جو چیک کرتا ہے کہ آیا متغیر WS-USER-AGE 18 سے بڑا یا اس کے برابر ہے۔ اگر درست ہے تو، 'ADULT' پرنٹ کریں، بصورت دیگر ڈسپلے کا استعمال کرتے ہوئے 'MINOR' پرنٹ کریں۔
اشارہ دکھائیں۔
موازنہ کے لیے >=، آؤٹ پٹ کے لیے DISPLAY، اور END-IF استعمال کریں۔ (بلاک کے آخر میں ڈاٹ کے ساتھ)۔
3 کوششوں کے بعد حل دستیاب ہے۔
WS-STATUS متغیر کو چیک کرنے کے لیے EVALUATE ڈھانچہ مکمل کریں۔ اگر قدر 'A' پرنٹ 'ACTIVE' ہے، اگر یہ 'I' ہے تو 'غیر فعال' پرنٹ کریں، بصورت دیگر کسی اور ویلیو پرنٹ کے لیے 'UNKNOWN'۔
اشارہ دکھائیں۔
ہر WHEN برانچ کے بعد اس کا ڈسپلے لکھیں، اور فال بیک کو سنبھالنے کے لیے WHEN OTHER کا استعمال کریں۔
3 کوششوں کے بعد حل دستیاب ہے۔