Commodore sayı 24, sayfa 34
Sayfanın metni

Sayfa 34

1 dosya açık olabilir. İki relative dosya açık olamaz. Dosya adının 16 karakterlik bir isim olacağını biliyorsunuz. Dosya türü yerine de S, U, P, R harflerinden biri gelmeli. Biz sequential dosya kullanacağımız için S harfini koyacağız. Mod ile de, dosyanın ne amaçla açıldığını belirliyoruz. W (write, yazma), R (read, okuma), A (append, ekleme) ile mod belirtilir. Bir de M modu vardır ki, bu mod ile daha önce açılmış ve doğru kapatılmamış, dolayısıyla da diğer modlarda okunamayan dosyaların okunması mümkün olur. Buna daha sonra geleceğiz. Örneğin OPEN 1,8,2, "DENEME,S,W" ile yazmak için DENEME adı altında bir sequential dosya yaratırız. Bu dosyalara yazma işleminin de PRINT ile yapıldığını biliyoruz. Hadi bir örnek yapalım...

10 OPEN 1,8,2,“DENEME,S,W” 20 PRİNT #1,“TUNA” 30 #1,“ERTEMALP” 40 PRİNT #1, “AYHAN” 50 PRİNT 81, “KALAYLIOĞLU” 60 PRİNT #1,“ZİYA” 70 PRİNT $1,“BAYMAN” 80 PRİNT #1,“TURHAN” 90 PRİNT #1, “TANDOĞMUŞ” 100 CLOSE 1

Gördüğünüz gibi, DENEME adı altında bir dosya açtık ve içine sekiz değişik bilgi yazdık. Bunların her birini bir bilgi alanı, isim ve soyadını bir kayıt, DENEME'yi de dosya olarak görebiliriz. Eğer DISKMON kolayda ise, bu dosyanın içeriğine bir göz atın. Her bilgi alanının arasında (örneğin TUNA ile ERTEMALP arasında ve ERTEMALP ile AYHAN arasında) $0D, yani RETURN karakter kodunu göreceksiniz. Eğer 20-90 arası satırların her birinin sonunda noktalı virgül olsaydı bunlar olmayacaktı. Ancak bu 13 değerini taşıyan byte'lar bilgi birimlerini birbirinden ayıran tahta perdelerdir. Onlar olmasaydı, dosyaladığımız bilgileri tekrar okumamız ve özellikle okuduklarımızı tekrar ilk yazıldıkları şekilde parçalara bölmemiz çok zor olurdu. Eğer bu programı çalıştırırken kullandığınız disketin üzerinde türü ne olursa olsun, adı DENEME olan bir başka dosya önceden varsa, kırmızı ışık yanıp sönecek ve PRINT # komutları bir işe yaramayacaktır. Bu durumda ya eski dosyayı silin, ya da DENEME yerine başka bir ad kullanın. Şimdi de bu dosyayı tekrar okuyalım... Okuma işlemi INPUT # ile olacaktır. Ancak INPUT #'un sadece 88 karakterlik bilgileri okuyabildiğini hatırlayalım. Eğer yukarıdaki programda aşağıdaki gibi bir ekleme olsaydı, daha ilk kaydı okumaya kalkıştığımızda hata oluşacaktı!

12 FOR 1-1 TO 100 13 PRİNT 14 15 PRİNT #1

Bu değişiklik ile, aralarında başka byte bulunmayan 100 adet arka arkaya yazıyoruz. Sonra da bu 100 byte'lık bilgiyi TUNA'dan ayırmak için 15. satırda boş bir PRINT#1 gönderiyoruz. Bu, bize istediğimiz $0D byte'ını yaratacaktır. Bir başka sorun da, bizim çok normal olduğunu düşünerek virgül ve iki nokta üstüste gibi karakterleri bir bilgi biriminin içinde kullanmamız olacaktır. Örneğin;

20 PRİNT “İSİM:TUNA, ERTEMALP”

gibi bir satır olsaydı, INPUT # komutu bunu üç defada okuyabilecekti. Önce İSİM ilk bilgi birimi olarak karşımıza çıkacaktı. Sonra da TUNA ve ERTEMALP. Demek ki, “,” ve “:” karakterleri de $0D byte'ı ile aynı işi görüyorlar. Şimdi deminki programımızın ilk halini kabul edip yaratılan dosyayı INPUT okuduğumuza bir bakalım.

10 OPEN 1,8,2,“DENEME,S,R” 20 INPUT #1,A$ 30 PRİNT A$ 40 IF ST < > 64 THEN 20 50 CLOSE | Görüldüğü gibi önce yazma mo- dunda aynı dosyayı bir daha açıyor, sonra da sonuna kadar okuyup satır satır yazıyoruz. 40. satırda ST adlı STATUS değişkenini kontrol edip dosyanın bitip bitmediğini anlayabi- liyoruz. En sonda da dosyayı kapa-

Klavyeyle gezinmek için ← ve → tuşları.