Ana içeriğe geç
Modül 2 · Ders 2 ders 2Kurstaki 4/10~12 min
Modül dersleri (2/2)

IF ve EVALUATE ile kararlar

COBOL'da karar verme, öncelikle IF koşullu ifade ve çok dallı seçim yapısı EVALUATE (modern dillerdeki switch veya match'ye benzer) kullanılarak gerçekleştirilir.

IF Koşullu İfadesi

IF ifadesinin temel sözdizimi şöyledir:

COBOL
IF condition
    statements-if-true
ELSE
    statements-if-false
END-IF.

Modern COBOL sürümlerinde (COBOL-85 ve üzeri), yalnızca . son noktasına dayanmak yerine ifadenin açıkça END-IF. ile bitmesi gerekir; bu da ayrıştırma ve mantık hatalarını önemli ölçüde azaltır.

Ortak Koşullar

  • Şundan büyük: > veya GREATER THAN
  • Şundan az: < veya LESS THAN
  • Şuna eşittir: = veya EQUAL TO
  • Büyük veya eşittir: >= veya GREATER THAN OR EQUAL TO
  • Küçük veya eşittir: <= veya LESS THAN OR EQUAL TO
COBOL
IF WS-BALANCE < 0
    DISPLAY "OVERDRAWN"
ELSE
    DISPLAY "ACCOUNT ACTIVE"
END-IF.

DEĞERLENDİRME Beyanı

Bir değişkeni birden çok ayrı değerle karşılaştırmamız gerektiğinde, iç içe geçmiş IF ifadeleri karmaşık hale gelebilir. EVALUATE ifadesi, seçenekleri temiz bir şekilde yapılandırarak bu sorunu çözer:

COBOL
EVALUATE WS-USER-ROLE
    WHEN "ADMIN"
        DISPLAY "FULL ACCESS"
    WHEN "EDITOR"
        DISPLAY "EDIT ACCESS"
    WHEN OTHER
        DISPLAY "LIMITED ACCESS"
END-EVALUATE.
  • WHEN OTHER: Geri dönüş dalını tanımlar (modern dillerde default veya son else ile eşdeğerdir).
  • END-EVALUATE.: Yapıyı kapatır.

Kendin dene

Egzersiz#cobol.m2.l2.e1
Denemeler: 0Yükleniyor…

WS-USER-AGE değişkeninin 18'den büyük veya ona eşit olup olmadığını kontrol eden bir IF-ELSE-END-IF bloğu yazın. Doğruysa, 'YETİŞKİN' yazdırın, aksi takdirde DISPLAY'i kullanarak 'MINOR' yazdırın.

Düzenleyici yükleniyor…
İpucu göster

Karşılaştırma için >=, çıktı için DISPLAY ve END-IF kullanın. (bloğun sonundaki nokta ile).

3 denemeden sonra çözüm mevcut

Egzersiz#cobol.m2.l2.e2
Denemeler: 0Yükleniyor…

WS-STATUS değişkenini kontrol etmek için DEĞERLENDİRME yapısını tamamlayın. Değer 'A' ise 'AKTİF' yazdırın, 'I' ise 'AKTİF DEĞİL' yazdırın, aksi halde herhangi bir değer için 'BİLİNMİYOR' yazdırın.

Düzenleyici yükleniyor…
İpucu göster

Her WHEN dalını ve ardından DISPLAY'ini yazın ve geri dönüşü işlemek için WHEN OTHER'ı kullanın.

3 denemeden sonra çözüm mevcut