שיעורי מודול (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.הצהרת EVALUATE
כאשר אנו צריכים להשוות משתנה מול מספר ערכים נפרדים, הצהרות 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 ניסיונות
השלם את מבנה EVALUATE כדי לבדוק את המשתנה WS-STATUS. אם הערך הוא 'A' הדפס 'ACTIVE', אם הוא 'I' הדפס 'INACTIVE', אחרת עבור כל ערך אחר הדפס 'UNKNOWN'.
הצג רמז
כתוב כל ענף WHEN ואחריו ה-DISPLAY שלו, והשתמש ב-WHEN OTHER כדי להתמודד עם החזרה.
הפתרון זמין לאחר 3 ניסיונות