Bir Bilgi Dosyalama Sistemi Nasıl Yaratılır?

Programlamaya başlamadan önce bilgi saklama sorunlarını Ççözümlemek her zaman için iyi bir fikirdir. Bu yazı, Commodore'un çeşitli tiplerinin yanısıra birçok bilgisayarda bir bilgi dosyalama sistemi yazmanıza yardımcı olacaktır.

Disk sürücünüzün bilgi saklama sorunlarınızı çözmede ne kadar yardımcı olacağını hiç düşündünüz mü? Bütün adres kartlarınız, yemek tarifleriniz, envanteriniz ve hesaplarınız bir düzen içine girecek ve sizi bir daha sıkıntıya sokmayacaktır. Evet bu mümkündür, ancak sorunu tatmin edici bir şekilde çözümleyebilmek için, hakkında biraz düşünmemiz gerekir. Tabii ki piyasada bulunan ticari veri tabanı sistemleri işinizi görebilir, fakat bu sistemlerin hiç kullanmayacağınız özellikleri için para harcamadan önce bu sistemler hakkında belirli şeyleri bilmekte yarar vardır. Ayrıca tüm istediklerinizi yapacak bir veri tabanı (database) programı yazmak hiç de imkansız değildir. Önemli olan planlamayı yapabilmektir. Eğer programlamayı seviyorsanız, ihtiyaçlarınızı karşılayacak bir sistemi rahatlıkla gerçekleştirebilirsiniz ve bu sistem gerektiğinde değişiklik yapmanızı sağlayacak kadar iyi bir sistem olacaktır. Plan yaparken akılda tutulması gereken şey şudur: Bilgi girişi için ne kadar çok zaman harcarsanız tekrar baştan başlamak için o kadar isteksiz olursunuz. Bu nedenle planlamanızı ileriyi düşünerek yapın. Size bir tavsiye daha: Otomasyon her zaman en İyi çözüm yolu değildir. Örneğin yemek tarifi dosyanız birkaç başlık altında toplanıyorsa (salatalar, tatlılar, etler, vs.) ve her kesimde sadece 30 kadar tarif kartı var ise, istediğiniz tarifi kartlardan bulmak daha kolay gelecektir. Şu gerçeği de unutmamak gerekir: “Eğer bir sistem çalışıyorsa, değiştirmeniz, için hiçbir neden yoktur.”

Amaçlarınızı Belirleyin

İlk adım istediklerinizi içeren bir liste hazırlamaktır. Bu listeye, veri tabanı programı İle olan karşılıklı iletişiminiz süresince, programdan neler beklediğinizi yazmalısınız. Bilgisayarı açtınız, disketinizi yerleştirdiniz, peki sonra? Uzun bir liste çıktısı mı istiyorsunuz (adres etiketleri gibi) ya da samanlıkta iğne arar gibi tam istediğiniz bilgileri içeren bir kayıt mı bulacaksınız? Bu senaryoları farklı günlerde birkaç defa yazmak yararlıdır. Dikkate alınması gerekli şeylerden biri de esnekliktir. İki ayrı şık İle karşı karşıya geldiğinizde her zaman size gelecekte en büyük esnekliği sağlayacak olanı seçin. Tabii ki seçeneklerimizin çoğu bilgi donatım, işletim sistemi gibi faktörlerin gerektirdiği ihti-

KAYIT 4 yaçlar tarafından belirlenmektedir. Fakat esneklik sürekli aklınızda olmalldır. Bu, sistemimizin tüm özelliklerini etkileyecektir. Saklamak istediğiniz kayıt sayısı, her birindeki bilginin miktari, kayıtlara ulaşmak için kullanılacak “anahtarlar” gibi. Soyadına göre sıralanmış bir adres dosyasının anahtarı her girişin soyadı olmalıdır. Anahtar ekranı ve sıralamayı hızlandırdığı gibi yeni bilgilerin uygun sırada girebilmesini de sağlar. Bilgi dosyalama sistemlerinde önemli olan şey kayıtların girişi ve erişiminin yüzlerce defa yapıldığıdır. Program içindeki ufak bir eksiklik arada sırada karşılaşıldığında o kadar önemli görünmeyebilir, fakat bir bilgi giriş veya erişim işleminde bütün sistem atıl kalabilir. Bu yüzden kullanıcıya kolaylık sağlamak sistem tasarımında çok önemli bir yer tutar.

KAYIT2 KAYIT 3

Sıradüzensel dosyalama (Seguential)

KAYIT4 — İKAYIT2

Rölatif Dosya

Hibrid Dosya

* Üç tür dosya. Kayıt 1 Kayıt 2'nin yarısı

uzunluğunda gösterilmiştir.

Üç Tür Dosya

Veri tabanı programlarında üç tür disket dosyası kullanılabilir. İlki sıradüzensel (seguential) dosyadır. Bu dosyada tüm bilgi birleştirilerek ardışık olarak diskete aktarılır. Programlarınızı diskete ya da kasete sıradüzensel dosya olarak kayıt edebilirsiniz. Sıradüzensel dosya kullanıyorsanız, bilgileri birbirinden ayırt etmek için bilgi ögeleri arasına ayraçlar koymak zo- . Sıradüzensel dosyaların kullanımında karşılaşılan problemlerden biri, bir kayıtın değiştirilmesi sırasında yeni yerleştirillecek kayıtın eskisinden daha farklı bir uzunlukta olmasından doğar. Bu durum raflara kitap yerleştirmeye benzetilebilir. İnce bir kitabı raftan çıkarın ve yerine kalın bir tane koyun. Boş yer açmak için kalan kitapların tümünü kaydırmak gerekecektir. Eğer değişiklik seyrek olarak yapılıyor ise eski kaydı silerek yerini boş bırakmak ve yenisini en sona eklemek bir çözüm olabilir. İkinci tür, rölatif dosyalardır. Bu türü de bir sıra güvercin yuvasına benzetebiliriz. Belirli bir tanesi dolu olup diğerleri kısmen boş olabilir. Bu yapıda bir dosyayı genişlettiğinizde yer açmak için kaydırma yapmanız gerekmez. Dosya, en büyük kaydı içine alacak kadar büyük bir alan içerdiği sürece hiçbir sorunla karşılaşmazsınız. Karmaşık bilgi dosyalama sistemlerinde genellikle kullanılan dosya türü budur. Üçüncü tür bir sıradüzensel dosyadır, fakat bir adres tablosuyla birlikte ele alınır (bir disketin kılavuzu gibi). Bu tür dosyalara HİBRİD (melez) dosya denilmektedir. Kullanılmak için yapılan programlamanın hamallığı oldukça fazladır. Kazanılan alan, ek programlama ve tablo tarafından harcanılan alandan büyük olmadıkça bu yöntem pek tavsiye edilmez. Yandaki şekil üç dosya türünü de şematize etmektedir. Eğer disk işletim sisteminiz rölatif dosyaların kullanımına olanak sağlıyorsa (aynı zamanda rasgele-erişimli dosya adıyla da anılir), disketteki kalan yeriniz olmadığı sürece bu türü kullanmak isteyeceksiniz. Eğer sisteminiz rölatif dosyaların kullanımını içermiyorsa, programınızı bunu sağlayacak biçimde tasarlayabilirsiniz. Bunun için bir tablo tutabilirsiniz ya da kayıt numarasını disketteki adresine (track ve sektör) çeviren bir formül kullanabilirsiniz. Daha sonra kaydı doğrudan track ve sektör kullanarak yazabilirsiniz. Bu süreç biraz karmaşıktır. fakat yapmaya değer.

Çıkışın Planlanması

Kazanılan tecrübeler planlamanın en önemli kısmının programın çıkış İşlevlerinden oluştuğunu göstermektedir. İstediğiniz çıktı türleri üzerinde düşünmek, bilgi dosyalamanın sizin için en kullanışlı yolunu gösterir, ayrıca giriş işlevlerinin tanımlanmasına da yardımcı olur. Soruna iki farklı açıdan bakabiliriz; bilginin nasıl kodlanması gerektiği ve dosyanın nasıl taranacağı. Yine sondan başa doğru gitmek en iyisi. İlk olarak tarama işlemine göz atalım.

Tarama Zamanı

Alıcıdır

Diyelim ki dosyanızda arama yapmak istiyorsunuz. Elinizdeki dosyada belirli bir bilgi grubuna karşılık gelecek bir bilgi ögesi var -örneğin bir yazar adı- ve siz bu yazara ait tüm kitapların adlarını görmek istiyorsunuz. Yazar adı anahtar olarak kullanılmaktadır ve siz, anahtar kullanarak yazara ilişkin tüm kayıtlara ulaşmak istiyorsunuz. Programın yazar adını bulabilmesi için önce her kayıt içindeki veri ögelerinin yerlerini ve uzunluklarını belirlemeniz gereklidir. Yazar adı kayıt içinde ilk 16 byte'ı kaplayabilir. Disketten okuma yapıp anahtar ile karşılaştırırsınız. Eğer aynı iseler bu kayıt istediğiniz kayıttır. Tüm istediğiniz kayıtların ekrana ve/veya yazıcıya dökümünü yapmanız mümkündür. Fakat bu noktada önemli bir sorun ile karşılaşırsınız. Disketten yazar adını alıp anahtar ile karşılaştırma bir ya da iki saniye sürebilir, ama eğer her biri bir saniye sürecek şekilde taranması gereken bin adet kaydınız var ise...! Bu durumda tüm dosyayı taramak yaklaşık 20 dakika alacaktır. Bu süre küçümsenmeyecek kadar büyüktür. Bunun altından nasıl kalkılabilir?

Dizin Dosyası

Yaratmak

Sorunun çözümü dizin (index) dosyasındadır (şekil 2). Genelde disketteki kayıtların sırası ile aynı olacak şekilde yazar adlarını içeren ayrı bir dosya tutulur. Bu dosya RAM'de yani ana bellekte olduğu için arama çok daha hızlı bir şekilde yapılır. Dahası ekrana veya yazıcıya son bulunan kayıt bilgileri aktarılırken, arama sürebilir. Bu yöntemde tek gecikme ilk istenilen kayda erişilirken geçen süredir. İlk kayıt bulunduktan sonra arama anında olur gibi görünür. Sayıca çok fazla kaydınız var ise ve bu kayıtlara baştan sona kadar erişim yapmadan ulaşmak istiyorsanız, dizin dosyaları sisteminiz için zorunlu bir gereksinimdir. Bu çözüm bir başka sorunu beraberinde getirir. Dizin dosyasının (ya da dosyalarının) da diskette saklanması gerekmektedir. Dosya ne kadar uzun ise, her bilgi girişinde dizini yüklemek de o kadar uzun sürecektir ve ana bellekte de o kadar yer harcanacaktır. Bu nedenle dizin dosyaları mümkün olduğu kadar kısa tutulmalı ve saklanması mümkün olduğu kadar kolay olmalıdır. Bu da dizin sözcüklerinin (dizin dosyasına girişler) kısa fakat bilgi yönünden yüklü olmalarını gerektirir. Soyadlarının genelde ilk sekiz harfe göre dizine alınması düşünülebilir. Bu istenilen kayıt yerine başka bir kayda erişime neden olabilir. Örneğin YORGANCI'yı ararken YORGANCIOĞLU'na erişilebilir. Program içinde gerekli denetim yapıldığı sürece bu önemli değildir. Çünkü dizin içindeki soyadı anahtarlarını sekiz harften dokuz harfe çıkarmak yanlış kayda erişimi önler gibi gözükse de bin kayıtlık bir dizine bin byte (1K) daha ekleyeceği için iyi bir seçenek değildir. Sorunların çözümünde muhakkak bazı şeylerden fedakârlık etmeniz gerekecektir.

İki Tür Arama

Diskete alınması gereken bir başka husus temel olarak iki ayrı tür arama yönteminin bulunduğudur. Birinci yöntem eşlemeli aramadır, yazar adı örneğinde gördüğümüz gibi, bu bir özdeşlik eşlemesidir. İkinci yöntem ise konu eşlemesidir. Belirli bir konudaki kitapların aranmasını buna örnek olarak verebiliriz. Bu aramada, konular kaydın “içeriğinde” vardır. Fakat kitap sizin aramadığınız ve sizin için önemli olmayan konuları da içerebilir. Burada yapılan eşleme özdeşlik eşlemesi değil, içeriksel işlemedir. Bunu gerçekleştirmeniz, konu bilgilerini nasıl kodladığınıza bağlıdır. Genel ŞEKİL 3'de gösterilen bitmap türü bir kod kullanılır. PROGRAM, BASIC ve MAKİNE KODUNDA “Özdeş arama”nın nasıl yapıldığını gösteren bir örnektir. PROGRAM 2 aynı işlemi “içerik arama” yöntemi için yapar. Kullanmanız gereken birkaç teknik vardır. İlk olarak anahtarların ve dizin sözcüklerinin girişi için tampon bellek alanları (buffer) kullanılabilir. Dizin sözcüğünün oluşturulması (örneğin yazar soyadından) için kullanılan yordam, karşılaştırılacak dizin sözcüğünü bu tampon alana yerleştirmekte de kullanılabilir. Bilgi erişim sorunlarınızın ışığı altında bilgiyi nasıl kodlayacağınızı dikkatli bir şekilde belirleyin. Bu aşamada harcanan birkaç saatlik fazla çalışma sonuçta çok büyük farklar yaratabilir. Özdeş aramada anahtarınız karşılaştırıldığı dizin sözcüğü kadar uzun değil ise, geri kalan yerleri “null” karakterleri ile doldurun. Arama yordamında (örnek programda gösterildiği şekilde) karakteri ile karşılaşıldığı anda geri dönülecektir. Bu şekilde 'YILMAZ' girip tüm YILMAZ'ları veya sadece 'Y' girip soyadı Y ile başlayan tüm yazarları bulabilirsiniz. Eğer kayıtlara bu iki arama yönteminin ikisini de kullanarak erişmek istiyorsanız, yöntemleri sıra ile uygulayarak bunu yapabilirsiniz. Örneğin, önce özdeş arama yapın. İstenilen bir kayda eriştiğinizde ikinci arama türü olan içerik aramayı uygulayın. Eğer kayıt iki testi de başarı ile geçerse bu, tam istediğiniz bilgi olur. Bu ikili kullanım sizin zamanla ve önemsiz bilgiler için anahtar belirlemenizi sağlar.

Kayıt Biçimini Belirleme

Şimdi sıra, kayıtlarınızın nasıl düzenleneceğini saptamaya geldi. Bu konu ayrıntılı olarak “Veri Düzenleri” yazımızda incelendiğinden, burada yalnızca önemli bir iki ayrıntıya değineceğiz. Eğer rölatif kayıtlar kullanıyor iseniz, kullanılacak kayıt türünü belirlemede karşılaşılan aynı düzenleme sorunu ile karşı karşıya gelirsiniz. Kayıt belirli “alan”lara bölünür. Her kayıttaki alanların boyları aynıdır. Bir alan yazar adı, bir diğeri yayın yılı (dört byte ile dört basamaklı bir yılı kodlayabilirsiniz veya yıldan 1792 çıkartarak tek bir byte ile 1792'den 2047'ye kadar olan tüm yılları kodlayabilirsiniz). Her alan, ilgili veri ögesi için saklamayı düşündüğünüz en büyük veri dizgisini içine alacak kadar büyük olmalıdır. Kayıt biçimini belirlemek için istediğiniz kadar zaman harcayın. Disketten bir kaydı sadece görüntülemek için okuyacağınızdan, bilgiyi küçük alanlara bölmek yerine birkaç uzun karakter zinciri (string) halinde saklamak iyi bir karar olabilir. Yazar adı ve yıl bir zinciri halinde saklanabilir. Daha sonra disketten okuma ve bilgiyi görüntülemeyi programlamak kolaydır. Sayısal bilgiler ondalık kesirli ya da tam sayı olabilir.

KAYIT “X” KÖKSAL,A BİLGİSAYARLAR 41978 (yazar) (başlık) (yıl) DİZİN DOSYALARI Yazarlar: Konular - (X-1)| KARAKAŞ (x-1)| 041011400 (x)| KÖKSAL 1000000 (x41)| TÖRECİ.E (Xx41)| 01101110 ŞEKİL 2: Dizin dosyaları hızlı arama için kayıtların bir bölümünü içerirler.

— — 1

4115/0710)

9 1 0 1 Konu

Konu 2-evet Konu 3-hayır Konu Konu 5-evet Konu 6evet

2. Byte

Basıc ve Makine

Kodunda Özdeş Arama

SYS (veya JSR) ile 'BEGIN' yordamını çağırma, bulunan kaydın numarasını sicildeki (register) değer olarak geri

Konu 7-hayır” döndürecektir. Eğer bu değer sıfır ise bulunan başka kayıt yok demektir. İlk

ŞEKİL 3: Konular veya diğer evet-hayır türü veriler ayrı bitler biçiminde

kodlanabilir. kayıt bulunduktan sonra arama SYS
Konu 9-evet (veya JSR) ile “DECPT” yordamı çağ-
| rılarak devam ettirilebilir.
"BEGİN" ANAHTAR'ı BUFFER'a yerleştir.
POİNTER'ı (gösterge) BİR SONRAKİ BÜŞ KAYIT No'ya ayarla.
"DECPT" POİNTER'ı bir eksilt. Sıfır ise RETURN dön).
Program 1
BASIC ilet
id TİNKER PROGRAM 8:
20 FOR TO LENM-İ 0000
* 1) | BASIC ve KODUNDA 'İçerik
Arama Prograrm i'deki
yordama benemektedir.
IF THEN RETURM
IF "DECPT" *BEGİN" ANAHTAR'ı BUFFER'a
SA MEST yerleştir.
BİR SONRAKİ
MAKİNE KODU ile: BOŞ KAYIT na'ya ayarla
"DECPT" FOİNTER'ı bir
Sıfır ize R İRN
POİNTER*LEN'i REGİSTER'a aktar.
ÖFFSET'i REGIİSTER'a &kle BASIC ile!
LOY #8 120
"CONT"LDA <(REİSTER),Y 20 FOR & TO LEN-İ
BE "END" 30
CMP dü IF
ENE "DECFT" THEN RETURN
IRY SA
CPY #LEN
BCC
Nez: dizin sözcük uzunluğu,
dizin sözcüğün
adrezi.
0d
aaa
MAKİNE DİLİ ile:
POİNTER
CFFSET'i
LOY #E
"CONT"LOA
EÜR #£FF
EOR XKBUFFER),Y
INY
CPY
#LEN
"CONT"

Nat

OFFSET sözcük

Sıfırıncı ve LEN'i aktar. ekle.

uzunluğu dizin sözcüğün adresi

Girişin Planlanması

Tartışılan bir başka teknik, kayıt biçimine göre bir dizin dosyası yaratmaktır. Örneğin:

Yazar Konu Başlık

Yıl Yazar Dizin

(KAYIT 2)

İlk kaydınızı girdikten sonra-yazar, konu, başlık, yıl- o kaydın sonunda dizin dosyası yaratmak için birkaç byte ayrılabilir. Burada bitmap kullanmak aramayı kolaylaştırmak bakımından yararlı olur. Her alan için dizinde bir byte kullanırsanız her alan için 256 olasılığınız olur. Bu da genellikle yeter de artar. Daha evvel incelediğimiz örneği ele alırsak 1000 0000 biçiminde bir bit yerleşimi, konunun bilgisayar üzerinde olduğunu gösterir. İkili tabandaki 1000 0000 sayısının tam sayıdaki karşılığı 128 olduğundan bunu karşılaştırmak için AND işlemini kullanabilirsiniz. Örneğin konu alanı için KO değişkenini seçtiğinizi düşünelim. Uygun bir satır şu şekilde olur:

IF KO AND 128 THEN GOTO N

N ekrana ya da printer'a yazdırmak için bir komutun bulunduğu satır olarak düşünebilir. AND işlemini kullanırken, bilgisayar her biti kontrol eder. KO içindeki değer, 1000 0000, 128 ile karşılaştırı-

1000 0000 (KO) 1000 0000 (128)

1000 0000 (sonuç)

Boolean doğruluk tablosu bu karşılaştırma işleminin sonucunu “doğru”

olarak saptar ve aramanız amacına ulaşır. Bazı durumlarda dizinlerken (indeks), istediğiniz konuların toplam sayısına bağlı olarak ikili sistemdeki eşdeğerlere değişik adlar vermek daha pratik olabilir.

E- 18 B-2 Cz4 Gz64

O zaman satırımız şu biçimi alır: IF KO AND H THEN N

Daha özel bir konuyu ele alalım, eğitimde bilgisayarın rolü gibi. Eğitim konusunu ikili sistemde bir sayı verelim: 0100 0000 (tam sayı olarak 64). Bilgisayar konusu da 1000 0000 (128) idi. Bilgisayar ve eğitimle ilgili bir kitap da o zaman 1100 0000 (192) olurdu. Bu durumda araştırma satırımızı şöyle oluşturmamız gerekli:

IF KO AND 192 THEN N

Bu yöntemi kullanırken, dizinlemeyi oluşturmada çok dikkatli olmanız gerektiği açıktır. Hangi dizinleme yöntemini kullanırsanız kullanın dikkatli olmalısınız, araştırma hızınız ve doğruluk buna bağlıdır. Bitmapping metodunu kullanmamayı tercih ederseniz, bir şeye dikkat etmeniz gereklidir: Dizinleme dosya-

Sistemin Girdi (Input) Problemleri

Şimdi biraz da girdi ile ilgili sorunlara bakalım. Kullanılması kolay bir sistem istiyorsunuz. Bu, kullanıcıya neler olup bittiği hakkında ipucu vermekle olur. Bunun bir yolu ekranda en üst satırın, programın ne yaptığını ya da ne beklediğini belirtmek üzere ayrılmasıdır. Programın kullanımının kolaylaştırılmasında diğer bir önemli husus da ekran formatını mantıklı ve anlaşılması kolay yapmaktır. Yeni kayıtları girerken, programı bozmadan düzenleme, silme, değiştirme olanakları sağlanmalıdır. C64 gibi bazı bilgisayarlar virgül içeren bir dizi girdisiyle baş edemezler. Bu tür bilgisayarların işletim sistemi sınırlandırıcıları bir girdi olarak yorumlar. Ancak yayın adlarını girerken de virgüller önemlidir. Bu da sözü geçen bilgisayarlarda virgülde kesmek zorunda kalmadan dizileri yerleştirmenin bir yolunu bulmamız gerektiği anlamına gelir. Bunu yapmanın çeşitli yolları vardır. GET komutunu kullanarak diziyi byte byte oluşturmak mümkündür. Bu çeşit problemler başlangıçta çözümlenmelidir. Veriler girilirken küçük olan sorunlar daha sonra büyüyebilir. Virgül yerine başka bir şey koymak zorunda kalmak insanı çok uğraştırabilir. Girdilere ilişkin bilinmesi gereken bir şey de programın, her girdinin disketteki kayıt sayısını ve dizindeki dosyasını bilmesi gerektiğidir. Yeni bir kayıt girildiğinde disketteki sonraki boş yere gitmelidir. Yeni kaydın dizinleme sözcükleri uygun dizinleme dosyalarının sonuna konmalıdır. Bu bilgilenmeyi korumanın yolu gelecek kayıt numarasını işaret eden bir sicil (register) koymaktır. Yeni bir kaydın girilmesiyle sicil bir kez artar. Dizinleme dosyalarını saklarken (SAVE), bu sicili de SAVE etmeniz gerekir. Eğer sicil dizin dosyalarınıza bitişikse hepsini birden kurtarabilirsiniz.

Girdinin Yazılması

Şimdi, girdilerin nasıl düzenlenebileceğini bir örnek üzerinde görelim. Bir yazar dizinleme programı hazırlıyoruz. Yazarın soyadı büyük harfle ve önce girilir, daha sonra virgül ve ön adının ilk harfi ve nokta (KAYMAZ,A.). Dizinleme dosyasına tüm isimler sahte (pseudo) karakter olarak yazılır. Dizinleme sözcüğü soyadının 8. harfiyle biter. Sahte ASCII yazdırmanız için tüm yapmanız gereken her ASCII karakter byte'ını beş bit'e kısaltmaktır, bu “AND 31” (ya da AND #$1F) ile yapılır. Soyadı sekiz harften kısaysa sonraki virgül ve ilk adın ilk harfi de bırakılır. Bir yazarı aramak için kullanılan tuş da sahte ASCII karaktere çevrilir. Son harften sonraki ekstra 'null' (boş)- dur. Bu şekilde araştırma programı, tuşun sonraki byte'ı boşsa ona göre hareket eder. Bu yolla OĞUZ.,B.'yi OĞUZ-u ya da tüm O'ları arayabilirsiniz. Bu bir ismin nasıl yazıldığını bilmediğiniz durumlarda çok yardımcı olacaktır (PROGRAM 41 bu arama tekniğini göstermektedir).

Dosyaları Düzenleme

Her ne şekilde olursa olsun, bir süre önce girilmiş bir kaydın ekranda görülmesini kolaylaştırın. Ekranı düzenleyip yeri değişmiş veriyi orijinal kaydın yerine koyabilmelisiniz. Eğer her çeşit veriyi input etmek için altyordamlar (subroutine) kullanırsanız, bunu programlamak kolay olacaktır. Örneğin girdi olarak yazarın adını alan bir altyordamımız olsun. Girdinin doğruluğu onaylandığı zaman, kayıt 'n'de doğru yerine yazılır ve yazar dizinleme dosyasına bir düzeltilmiş giriş yapar. 'n' kaydı eski ya da ilk defa yazılan bir kayıt olabilir. İlk girdilerinizde mutlaka bazı hatalar olacaktır. Hataları hem girdi sırasında, hem de sonra düzeltmenizi sağlayacak bir yol gereklidir.

Geriye son olarak her şeyi bir araya getirmek kalıyor.

Programlarınızı

Modüller

Olarak

Hazırlayın

Her biri tek iş yapan çok altyordamı olan programlar yazmanın avantajını herhalde kavradınız. Özellikle veri dosyalama sistemlerinde bu avantaj daha açıktır. Bir diziyi belirli bir araçtan girdi olarak almak için bir altyordam, hem klavyeden, hem de disketten bir dizi okumak için yazılmış tek bir altyordamdan çok daha yararlıdır. Bu altyordam başka altyordamlarda da kullanılabilir (yazar adını, kitap adını, yayın tarihini vb. girmek için). Bir yazarın adını girmek ve dizinleme dosyasının bir kısmını kodlamak için kullanılan altyordam, belli bir yazarı aramak için kullanılacak tuşu girmek için de kullanılabilir. Mümkün olduğu her zaman, altyordamları program kullanılabilecek şekilde tüm amaçlara yönelik hazırlayın. Yazının sonunda verilen akış şeması bir yazar-konu dizinleme dosyasına aittir. Verilerin nasıl ekrana aktarılacağı, nasıl print edileceği ve ekranda istedikleriniz tümüyle size bağlıdır. Bunları kendi ihtiyaçlarınıza göre saptayabilirsiniz. Herkesin öncelik ve ihtiyaçları değişebilir, ama altyordamları modüler bir şekilde kullanmayı unutmayın.

Felaketleri Önleme

Kötü sonuçlara yol açabilecek hataları önlemek için kontrol yöntemlerini unutmamalısınız. Yüzlerce kayıt girdiniz ve dizin dosyalarını save etmeden sistemi kapattınız. Böyle bir felaketi kısmen de olsa önlemenin iki yolu vardır: Kullanıcıya durmadan önce dosyayı save etmesini hatırlatma ve kayıp dosyaları esas kayıtlardaki veri disketlerinden yeniden toparlama. Çözüm her ikisi de olabilir, ama çözümü önceden düşünüp önlem almak şarttır. Belli bazı hataları tamamiyle önleyemezsiniz, ancak hasarın ciddiyetini azaltabilirsiniz. Bunlar elektrik kesilmesi, hardware hatası ve disket üzerinde yer alan bir error olabilir. Bu tip felaketler için sık sık kayıt kopyaları çıkartmanız yararlı olacaktır.

Uydu Programlar

Veri dosya sisteminizi oluşturmak için bir ya da daha fazla programa ihtiyacınız olabilir. Örneğin disketi yazılacak kayıtlara hazırlamak için ayrı bir program yazmanız gerekebilir. Belki bin adet relatif kayıta yer ayrılmalı ve boş karakterlerle (11 karakter) doldurulmalıdır. Bu sıfırlar sistemi gerçek data girdikçe dolacaktır. Böyle işler yapan ayrı programlara uydu programlar denir. Sistemin bir parçası değildir, ancak o sistem dışında da bir işe yaramazlar. Böyle programları ana program disketinize yerleştirebilirsiniz. Küçük bir altyordam yardımıyla da ana programdan uydu programlara gidiş ve dönüşleri sağlayabilirsiniz. Son olarak yazı boyunca vurguladığımız gibi dikkatli bir planlama, öngörüş ve yaratıcılık iyi veri dosyası yaratmanın ön koşuludur. Sistemi yetkin bir biçimde yazmanın en büyük ödülünü kullanırken alacaksınız.

Veri Tabloları

Yazar-Konu Dosya Programının Ana Çıkış Şeması

Önleme Dosyasını dosyalama Baz Data ekleme ken RECORD (NR) değiştirme (Sonraki kayıt) H LzYazar arama Ka S-Konu arama MENÜ | < > KE 2 —— Cevabı al Dizinleme > mi? Dosyasını -NR'i diskete SAVE ET GOSUB Yazar Input'u Başlık Input'u Konu Input'u Hayır NEN “Kullanılan Kayıt” —NR 1 ekle İn '© Evet NR'yi değişecek “Kullanılan Kayıt”, mi? kayıt olarak gir GÖSTER DE t Ka Hayır Değişiklik yapılıp yapılmayacağını sor * Tamam mı? KA A CEVAP AL GOSUB Yazar Input'u — | Başlık Input'u A a GOSUB Konu Input'u LE Hayır Evet! Kayıt: | Diskete aktar | ” A Yy Hayır Evet , L mi? Yazar araması Der “BAŞLA” Buffer'a yerleştir Hayır | Yazar Input'u Pointer'i eksilt (DECPT) Kütük “>. Evet - Om? > | Kütükte NR olan kaydı | ekrana aktar LEE! sor - Konu araması | “BAŞLA” “DECPT” , Konu Input'u Bİ Hayır T | 0 Evet di TERE mı? Ekran Hayır Kütükte NR olan kaydı | Ekrana aktar