Commodore sayı 8, sayfa 58

Bu sayfadaki yazılar

Sayfanın metni

Sayfa 58

Program Kesilmeden

Hata Bulma ve Düzeltme

C-64 her ortaya çıkan hatada karşılık gelen bir mesajla programı keserken, C-128 bu konuda belli bir esnekliğe sahip. TRAP komutu sayesinde hatalar programın işlemesi sırasında yakalanabiliyor. Örneğin, “TRAP 500“ komutunun verilmesinden sonra, bir hatanın ortaya çıkması durumunda programın çalışması kesilmiyor, aksine bir hata düzeltme rutini (örneğimizde 500 satırından sonra) dallanıyor. Hataya ilişkin tüm önemli veriler, sistem değişkenlerinde saklanıyor ve (programcı tarafından yazılacak olan) Basic rutini tarafından 500. satırından itibaren değerlendiriliyor: EL, hatanın ortaya çıktığı satır numarasını, ER hata numarasını içeriyor; ERR$ ise yazıdaki hata mesajını veriyor. Hata düzeltme rutini, gerekli önlemi almak için, bu değişkenleri değerlendirebilmekte. Tabii bundan sonra programın devam edebilmesi gerekiyor. Bunu sağlayan ise RESUME komutu. Bu komut bir hata düzeltme işlemini sona erdiriyor (alt programlardaki RETURN ile karşılaştırılabilir). RESUME üç farklı biçimde kullanılabiliyor. Herhangi başka bir parametresi olmayan RESUME, hatayı doğuran komuta geri dönüyor ve programı oradan devam ettiriyor. Bu durumda tabii ki hata düzeltme rutini tarafından hata nedeninin ortadan kaldırılmış olması gerekiyor. Aksi takdirde hata aynen yinelenecektir. Bunu açıklamak için en iyi örnek, bilgisayarın açık olup olmadığını denemek:

40 TRAP 90: OPEN 1,4 20 PRİNT# 4, “BILGİYAZAR OK” 30 END 90 IF ER—5 AND EL— PRİNT “LUTFEN BİLGİYAZARI ACINIZ VE TUSA BASINIZ”: GETKEY A$ 95 RESUME

Bu küçük demo programı, bağlı bir bilgisayar hakkında “BİLGİ-YAZAR OK” ifadesini verecektir. Bilgisayarın açık olmaması durumunda, 10 satırındaki OPEN komutu normal olarak “Device not present” hata mesajına yol açacaktı. Bu mesaj her halükârda TRAP komutu tarafından yakalanır ve bunun yerine hata numarasının ve satırının denetlenmesinden sonra kullanıcının kibarca bilgisayarı açması için uyarıldığı 90. satırına dallanır. GETKEY komutu, programın RESUME komutuyla yeniden OPEN komutuna dönmesini sağlayacak bir tuş girişini bekler. Hataya neden olan komutun bir daha yerine getirilmemesi gerekiyorsa, hata düzeltme rutini RESUME NEXT ile kapatılır; böylece hata nedeninden bir sonraki komutla devam edilmesi sağlanır. Özel bazı durumlarda, bir hatadan sonra programın tamamen farklı bir yerinden devam etmek gerekebilir. Böyle bir durumda RESUME'nin ardından, programın devam etmesi gerektiği yerin satır numarası verilir. Programın kendi içinde gerçekleşen bu hata düzeltme olanağı, kullanıcıya büyük avantajlar sağlamaktadır. Programın geliştirilme aşamasında bir hata ortaya çıktığında, hatalı satırın dökümünü almak için HELP tuşuna basmak yeterlidir. Satırda hataya neden olan kısım bu sırada ters (reverse) olarak görüntülenir. Tabii ki, disket ünitesinden bildirilen hata da aynı biçimde araştırılacaktır.

1 OPEN PRİNT 1:END

gibi kapsamlı bir satırı girmek (ve bu arada muhtemelen kendi programının üzerine yazmak) yerine, BASIC 7.0'da yalnızca “?DS$” girilir ve aynı mesaj alınır. DS$ sistem değişkeni, disket ünitesinin hata durumunu, DS sistem değişkeni ile karşılık gelen hata kodunu açık metin olarak içerir. Esas olarak C-128'de tüm disket komutları, Basic komutları olarak kullanılabilir durumdadır. Örneğin SCRATCH, disketten bir kütüğü siler; DIRECTORY veya CATALOG programın kaybolmasına neden olmadan disketin içerik listesini verir; DLOAD, DSAVE ve DVERIFY sayesinde sıkıcı kurtulmak mümkün olur. BLOAD ve BSAVE ise herhangi bir bellek içeriğini programları, (veriler vb.) yüklemeye ve bellekte saklamaya yararlar. Sıralı ve rastgele kütüklerin daha kolay kullanılmasına yarayan bir dizi komut daha vardır. Örneğin RECORD ile bir rastgele kütüğün herhangi bir veri kaydına doğrudan erişilebilir; APPEND ise sıralı kütüklere ek veri kayıtlarının sorulmasına yarar.

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