دروس الوحدة (2/2)
القرارات مع IF والتقييم
يتم اتخاذ القرار في 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.
إظهار التلميح
استخدم >= للمقارنة، وDISPLAY للإخراج، وEND-IF. (مع النقطة في نهاية الكتلة).
الحل متاح بعد 3 من المحاولات
أكمل بنية التقييم للتحقق من متغير WS-STATUS. إذا كانت القيمة "A" فاطبع "ACTIVE"، وإذا كانت "I" فاطبع "INACTIVE"، وإلا لأي قيمة أخرى فاطبع "UNKNOWN".
إظهار التلميح
اكتب كل فرع "متى" متبوعًا بالعرض الخاص به، واستخدم "متى آخر" للتعامل مع الإجراء الاحتياطي.
الحل متاح بعد 3 من المحاولات