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

Tablolar ve OCCURS Maddesi

COBOL'da homojen veri listelerini tanımlamak için "dizi" veya "vektör" anahtar sözcüğü yoktur. Bu amaçla, bir değişkenin veya yapının bellekte kaç kez tekrarlanacağını belirten OCCURS deyimini kullanırsınız.

OCCURS ile Tablo Tanımlamak

OCCURS yan tümcesi, bir grup yapısı (düzey 01) içindeki bir alt değişkenin (örneğin, düzey 05 veya daha yüksek) bildirimine eklenir:

COBOL
01 WS-SALES-DATA.
    05 WS-MONTHLY-SALES PIC 9(4) OCCURS 12 TIMES.

Bu örnekte WS-MONTHLY-SALES her biri 4 basamaklı 12 sayısal öğeden oluşan bir tablodur. Bu kayıt için ayrılan hafıza tam olarak 12 * 4 = 48 karakter olacaktır.

Öğelere ve Dizinlere Erişim

Bir tablodaki belirli bir öğeye erişmek için, alan adından hemen sonra parantez içinde dizini belirtin.

[!ÖNEMLİ] 0 tabanlı indekslemeyi kullanan çoğu modern dilin aksine, COBOL 1 tabanlı indekslemeyi kullanır. İlk öğe 1 dizinindedir, ikincisi 2 dizinindedir ve bu şekilde devam eder.

COBOL
MOVE 1500 TO WS-MONTHLY-SALES(1).
MOVE 2400 TO WS-MONTHLY-SALES(2).

Bir Tabloda Geçiş Yapmak (Yineleme)

Bir tablonun öğeleri arasında döngü oluşturmak için PERFORM VARYING ifadesini kullanabilir veya bir sayacı PERFORM UNTIL döngüsünde manuel olarak yönetebilirsiniz:

COBOL
PERFORM UNTIL WS-INDEX > 12
    DISPLAY "Sales: " WS-MONTHLY-SALES(WS-INDEX)
    ADD 1 TO WS-INDEX
END-PERFORM.

Kendin dene

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

OCCURS yan tümcesini kullanarak WS-WEATHER-DATA grup yapısı altında 5 ondalık sıcaklıktan (3 tam sayı ve 1 ondalık sayı) oluşan bir tablo bildirin.

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

Yaz: 05 WS-SICAKLIK PIC 9(3)V9 5 KEZ OLUŞUR.

3 denemeden sonra çözüm mevcut

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

MOVE ifadelerini kullanarak WS-MONTHLY-SALES tablosunun ilk üç öğesini sırasıyla 1200, 1500 ve 1800 değerleriyle başlatın. COBOL indekslerinin 1'den başladığını unutmayın.

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

MOVE 1200'ü WS-AYLIK-SATIŞLARA(1) kullanın. ilk eleman için, ardından (2) ve (3) indekslerini kullanarak ikinci ve üçüncü için tekrarlayın.

3 denemeden sonra çözüm mevcut