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

Dosya G/Ç İşlemleri

Bir dosya DATA DIVISION içinde ilişkilendirilip bildirildiğinde, onu PROCEDURE DIVISION içinde değiştirebiliriz. COBOL'da dosyaların yaşam döngüsünü yönetmek standart, zorunlu bir akışı izler: açma, işlemleri gerçekleştirme (okuma veya yazma) ve kapatma.


1. Dosyaları Açmak: OPEN Beyanı

Bir dosyadan okuma veya yazma işlemi yapmadan önce, dosyanın uygun erişim modu belirtilerek açılması gerekir:

COBOL
       OPEN INPUT SALES-FILE.

Ana modlar şunlardır:

  • INPUT: Dosya salt okunur modda açılır. Dosya diskte bulunmalıdır, aksi takdirde program başarısız olur.
  • OUTPUT: Dosya yazma modunda açılır. Dosya zaten mevcutsa önceki içeriği silinir (üzerine yazılır). Eğer yoksa yaratılır.
  • EXTEND: Dosya veri eklemek için açılır. Yeni kayıtlar mevcut dosyanın sonundan başlayarak yazılacaktır.
  • I-O: Dosya hem okuma hem de yazma için açılır (çoğunlukla doğrusal sıralı dosyalar için değil, göreceli veya indeksli erişim dosyaları için kullanılır).

2. Verileri Okumak: READ İfadesi

Sıralı bir dosyadan kayıt okumak için READ ifadesini kullanırız. Dosyanın kaç kayıt içerdiğini önceden bilmediğimizden, dosya sonu (EOF) koşulunu her zaman AT END yan tümcesini kullanarak ele almalıyız:

COBOL
       READ SALES-FILE
           AT END MOVE "Y" TO WS-EOF
       END-READ.
  • READ SALES-FILE: İfadenin, kayıt adına değil, mantıksal dosya adına (SELECT ve FD yan tümcelerinde tanımlanmış) başvuruda bulunduğunu unutmayın.
  • AT END: Mevcut son kaydı okumaya çalıştığınızda çalıştırılacak talimatları belirtir. Genellikle bir bayrak değişkenini (WS-EOF gibi) "Y" olarak ayarlarsınız.
  • END-READ: Read ifadesini açıkça sonlandırır.

3. Veri Yazma: WRITE İfadesi

Bir dosyaya veri eklemek için WRITE ifadesini kullanırız.

[!UYARI] COBOL'da bir dosya (READ SALES-FILE) okursunuz, ancak bir kayıt (WRITE SALES-RECORD) yazarsınız. WRITE SALES-FILE yazmak, derlemeyi engelleyecek yaygın bir sözdizimi hatasıdır.

COBOL
       MOVE 1001 TO EMP-ID.
       MOVE "MARIO ROSSI" TO EMP-NAME.
       WRITE SALES-RECORD.

WRITE ifadesini çalıştırmadan önce, FD kayıt yapısının alt alanları (bu durumda SALES-RECORD) belleğe doldurulmalıdır.


4. Dosyaları Kapatmak: CLOSE İfadesi

İşleme tamamlandığında, sistem kaynaklarını serbest bırakmak ve tüm verilerin diske yazıldığından emin olmak için her açık dosya kapatılmalıdır:

COBOL
       CLOSE SALES-FILE.

CLOSE ifadesinin bağımsız değişken olarak kayıt adını değil mantıksal dosya adını aldığını unutmayın.


Deneyin

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

SATIŞ-DOSYASINI GİRİŞ modunda açarak, ilk kaydı okuyarak ve dosyanın sonuna ulaşıldığında WS-EOF kontrol değişkenini 'Y' olarak ayarlayarak PROSEDÜR BÖLÜMÜNÜ tamamlayın. Son olarak durmadan önce dosyayı kapatmayı unutmayın.

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

Sırayla yazın: GİRİŞ SATIŞ DOSYASINI AÇIN. daha sonra SATIŞ DOSYASINI OKUYUN SONUNDA 'Y'Yİ WS-EOF END-READ'E TAŞIYIN. daha sonra SATIŞ DOSYASINI KAPATIN. ve son olarak KOŞUYU DURDURUN.

3 denemeden sonra çözüm mevcut

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

ÇIKTI modunda SATIŞ DOSYASI'nı açarak PROSEDÜR BÖLÜMÜNÜ tamamlayın. 1001 değerini SATIŞ-ID'ye ve 250,50 değerini SATIŞ-AMOUNT'a taşıyın ve ardından SATIŞ-KAYDINI dosyaya yazın. Son olarak programı durdurmadan önce dosyayı kapatın.

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

Dosyayı OPEN OUTPUT SATIŞ-DOSYA ile açın., SATIŞ-ID ve SATIŞ-TUTAR değerlerine değer atamak için TAŞI'yı kullanın, SATIŞ-KAYDINI YAZIN. (dosyayı değil kaydı yazıyor!), SATIŞ DOSYASINI KAPAT ile kapatın. ve STOP RUN ile sonlandırın.

3 denemeden sonra çözüm mevcut