דילוג לתוכן המרכזי
מודול 2 · שיעור 2 מתוך 24/10 בקורס~12 min
שיעורי מודול (2/2)

החלטות עם IF ו-EVALUATE

קבלת החלטות ב-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.

הצהרת EVALUATE

כאשר אנו צריכים להשוות משתנה מול מספר ערכים נפרדים, הצהרות 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', אחרת הדפס 'MINOR' באמצעות DISPLAY.

טוען עורך...
הצג רמז

השתמש ב->= להשוואה, ב-DISPLAY לפלט וב-END-IF. (עם הנקודה בסוף הבלוק).

הפתרון זמין לאחר 3 ניסיונות

פעילות גופנית#cobol.m2.l2.e2
ניסיונות: 0טוען...

השלם את מבנה EVALUATE כדי לבדוק את המשתנה WS-STATUS. אם הערך הוא 'A' הדפס 'ACTIVE', אם הוא 'I' הדפס 'INACTIVE', אחרת עבור כל ערך אחר הדפס 'UNKNOWN'.

טוען עורך...
הצג רמז

כתוב כל ענף WHEN ואחריו ה-DISPLAY שלו, והשתמש ב-WHEN OTHER כדי להתמודד עם החזרה.

הפתרון זמין לאחר 3 ניסיונות