Commodore sayı 25, sayfa 65

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 65

100 OPEN 15,8,15 110 K- 1500 120 K2-INT(K/256) 130 Kl -K-K2*256 140 OPEN 1,8,2,“RL,L,” 4 CHR$(36) 150 4 CHR$(2) 4 CHR$(K1) 4 CHRS(K2) 4 CHRS(1) 160 170 CLOSE 1 180 CLOSE 15 Programı çalıştırdığınızda yaklaşık 10 dakika sürecektir. En sonda kır- mızı ışık yanıp sönerse, dikkate alma- yın. Eğer disketinizde 230 blok civa- Tında boş yer varsa, sonuçta istediği- niz dosyayı elde edeceksiniz. Kl ve K2 hesaplamasını 110-130 arası satır- larda görmektesiniz. 140'da dosya kayıt uzunluğu verilerek açılıyor. 150'de ise 1500 numaralı kaydın ilk byte'ı üzerine pozisyonlandırılma ya- pılıyor. Sonra da bu byte'a CHR$ (255) yazıyoruz. Aslında başka şey- ler de yazabilirdik, ancak DOS ken- disi boş kayıtlar yaratırken hepsini 255 karakter kodu ile doldurur. Biz

de aynısını yapalım dedik. Şimdi sıra geldi bu dosyaya yeni kayıtlar girmeye. Daha önce, aşağıdaki gibi bir yapı belirlemiştik. Kayıt numarası: 4 basamak İsim: 15 karakter Mal kodu: 5 karakter Alış fiyatı: 6 basamak Satış fiyatı: 6 basamak

Dosyamıza bilgileri kaydederken

bu yapıyı korumamız gerekir. Yani kayıt numarası ilk 4 karakteri, isim ise sonra gelen 15 karakteri kapsamalı. Aynı şey mal kodu, alış fiyatı ve satış fiyatı için de geçerli. Böyle bir yapıyı nasıl sağlayabiliriz? Bunun en kolay yolu sayısal değişkenler yerine string'lerle uğraşmaktır. Yukarıdaki her bilgi birimi için KN$, IS$, MK$, AF$ ve SF$ değişkenlerini ayıralım. Bunların arka arkaya eklenmesi ile oluşacak ve diskete yazılacak değişkene de K$ diyelim. Doğrudan doğruya K$=KN$ + IS$ + MK$ + AF$ + SF$ demek yanlış olacaktır. Eğer malın adı 15 karakterden kısa ise, arkadan gelen mal kodu ve fiyat bilgileri olmaları gereken yerden daha önce gelecektir. Dolayısı ile ismi boşluk karakteri ile 15 karaktere tamamlamalıyız. Aynı şey tam tersi durum için de geçerli. Eğer isim 15 karakterden uzunsa, 36 karakteri aşarız. Bu da hataya yolaçar. Bu durumda da malın adının ilk 15 karakterini almalı, gerisini gözardı etmeliyiz. Tüm bunları aşağıda gösterildiği gibi yapabiliriz. İlk satırda SP$ değişkeninin içine 15 tane boşluk koyuyoruz. Sonra tüm değişkenleri olmaları gereken uzunluklara indirip, sonra da kısa kalanları SP$ ekleyerek uzatıyoruz. Sonunda da K$ değişkenini oluşturuyoruz.

10 SP$-“ » 15 K$-LEFT$(KN$ 4 SP$,4) 20 K$-K$4 LEFT$(IS$ 4 SP$,15) 25 K$ — K$ 4 LEFT$(MK$ * SP$,5) 30 K$-K$4 LEFT$(AF$ 4 SP$,6) 35 LEFT$(SF$ 4 SP$,6)

Programımızın bir yerinde KN$, IS$, MK$, AF$ ve SF$ içine istediğimiz değerleri yerleştirdik, K$'i oluşturduk ve 15 numaralı kayıt olarak dosyaya yerleştirmek istedik. Yapacağımız, dosyayı açıp, 15 numaralı kaydın birinci pozisyonlama yaptıktan sonra K$'i diskete göndermek. Yani:

10 OPEN 15,8,15 15 OPEN 1,8,2'RL,L? *CHRS(36) 20 KN$- “0015” 25 IS$-“COMMODORE 64” 30 MK$- “15623”

35 AF$-“400000” 40 45

50 K$-LEFT$(KN$ 4 SP$,4) 55 K$-K$4 LEFT$(S$ 4 60 K$-K$4 LEFT$(MK$ * SPS,5) 65 K$-K$-4 LEFT$(AF$ 4 SPS,6) 70 K$-K$4 LEFT$(SF$ 4 SPS,6) 75 PRİNT # -- CHRS(2) 4 CHR$(15)4 CHR$(0) 4 80 PRİNT #1,K$; 85 CLOSE 1 90 CLOSE 15

80 numaralı satırda noktalı virgül kullandığımıza dikkat edin! Bildiğiniz gibi, böyle yapmazsak, kaydın sonuna otomatik olarak CHR$(13), yani RETURN kodu eklenmekte. Bu da, zaten 36 karaktere tamamladığımız kaydın uzunluğunu 37'ye çıkararak hataya yolaçardı. Ancak bu tabii ki her zaman noktalı virgül kullanmak zorunda olduğumuz anlamına gelmez. Eğer yukarıdaki gibi kayıtları oluşturursak (veya sizin BASIC marifetlerinize uygun daha güzel bir programla...), kayıtları geri okumak için kullanacağımız tek yöntem, geçen sayıda da gördüğümüz GET ile okuma yöntemidir.

65

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