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:
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:
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 (SELECTveFDyan 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-EOFgibi)"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-FILEyazmak, derlemeyi engelleyecek yaygın bir sözdizimi hatasıdır.
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:
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
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.
İ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
Ç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.
İ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