মূল কন্টেন্টে যান
মডিউল 2 · 2-এর পাঠ 2কোর্সে 4/10~12 min
মডিউল পাঠ (2/2)

IF এবং মূল্যায়নের সাথে সিদ্ধান্ত

COBOL-এ সিদ্ধান্ত গ্রহণ করা হয় প্রাথমিকভাবে IF শর্তসাপেক্ষ বিবৃতি এবং বহু-শাখা নির্বাচন কাঠামো EVALUATE (আধুনিক ভাষায় switch বা match এর অনুরূপ) ব্যবহার করে।

IF শর্তসাপেক্ষ বিবৃতি

IF বিবৃতিটির মৌলিক বাক্য গঠন হল:

COBOL
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
COBOL
IF WS-BALANCE < 0
    DISPLAY "OVERDRAWN"
ELSE
    DISPLAY "ACCOUNT ACTIVE"
END-IF.

মূল্যায়ন বিবৃতি

যখন আমাদের একাধিক বিচ্ছিন্ন মানের সাথে একটি ভেরিয়েবলের তুলনা করতে হবে, তখন নেস্টেড IF স্টেটমেন্ট জটিল হয়ে উঠতে পারে। EVALUATE বিবৃতিটি একটি পরিচ্ছন্ন উপায়ে পছন্দগুলিকে গঠন করে এর সমাধান করে:

COBOL
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.: কাঠামো বন্ধ করে।

নিজে চেষ্টা করে দেখুন

ব্যায়াম#cobol.m2.l2.e1
প্রচেষ্টা: 0লোড হচ্ছে...

একটি IF-ELSE-END-IF ব্লক লিখুন যা চেক করে যে ভেরিয়েবল WS-USER-AGE 18 এর চেয়ে বড় বা সমান। যদি সত্য হয়, 'ADULT' প্রিন্ট করুন, অন্যথায় DISPLAY ব্যবহার করে 'MINOR' প্রিন্ট করুন।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

তুলনার জন্য >=, আউটপুটের জন্য DISPLAY এবং END-IF ব্যবহার করুন। (ব্লকের শেষে বিন্দু সহ)।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ

ব্যায়াম#cobol.m2.l2.e2
প্রচেষ্টা: 0লোড হচ্ছে...

WS-STATUS ভেরিয়েবল পরীক্ষা করতে মূল্যায়ন কাঠামোটি সম্পূর্ণ করুন। মান 'A' প্রিন্ট হলে 'ACTIVE', যদি এটি 'I' প্রিন্ট হয় 'নিষ্ক্রিয়', অন্যথায় অন্য কোনো মান প্রিন্টের জন্য 'UNKNOWN'।

সম্পাদক লোড হচ্ছে...
ইঙ্গিত দেখান

প্রতিটি WHEN শাখার পরে তার ডিসপ্লে লিখুন এবং ফলব্যাক পরিচালনা করতে WHEN OTHER ব্যবহার করুন।

সমাধান 3 প্রচেষ্টার পরে উপলব্ধ