de GOSUB adreslerini değiştirir- ken (yeni bir sorunu bir yardımcı gibi gösterirken), BASIC 7.0, GO- TO, GOÖSÜB, THEN, ELSE, RESTORE ve RESUME'nin ardındaki tüm sa- tır numaralarını otomatik olarak düzelfiyor ve hatta bunu bir hata bulma rutininde özel EL değişke- ni yardımıyla hata satırlarının aranması sırasında yapıyor. Böy- lece BASIC 7.0'in yeni ve entere- san bir özelliğine geldik. Program Kesilmeden Hata Bulma ve Düzeltme C-d4 her ortaya çıkan hatada karşılık gelen bir mesajla progra- mı keserken, C-128 bu konuda belli bir esnekliğe sahip. TRAP ko- mutu sayesinde bütün hatalar programın işlemesi sırasında ya- kalanabiliyor. Örneğin, “TRAP 500“ komutunun verilmesinden sonra, bir hatanın ortaya çıkma- sı durumunda programın çalış- ması kesilmiyor, aksine bir hata düzeltme rutini (örneğimizde 500 satırından sonra) dallanıyor. Ha- taya ilişkin tüm önemli veriler, sis- tem değişkenlerinde saklanıyor ve (programcı tarafından yazıla- cak olan) Basic rutini tarafından 500. satırından itibaren değerlen- diriliyor: EL, hatanın ortaya çıktığı satır numarasını, ER hata numara- sını içeriyor; ERRS ise yazıdaki ha- tamesajını veriyor. Hata düzeltme rutini, gerekli önlemi almak için, bu değişkenleri değerlendirebil- mekte, Tabii bundan sonra prog- ramın devam edebilmesi gereki- yor. Bunu sağlayan ise RESUME komutu. Bu komut bir hata düzeli- me 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ı ora- dan devam ettiriyor. Bu durumda tabil ki hata düzeltme rutini tara- fından hata nedeninin ortadan kaldırılmış olması gerekiyor. Aksi takdirde hata aynen yinelene- cektir. Bunu açıklamak için en iyi örnek, bilgiyazarın açık olup ol- madığını denemek: 10 TRAP 90: ÖPEN 14 20 PRİNT#E 4, “BİLGİYAZAR OK” 30 END 90 1F ER—S5 AND EL— 40 THEN PRİNT “LÜTFEN BİLSİYAZARI ACINIZ VE TUSA BASINIZ“: GETKEY A$ 95 RESUME Bu küçük demo programı, bağ- li bir bilgiyazar hakkında “BİLGİ- YAZAR OK” ifadesini verecektir. Bilgiyazarın açık olmaması duru- munda, 410 satırındaki OPEN ko- mutu normal olarak “Device not preseni” hata mesajıncı yol aça- caktı. Bu mesaj her halükârda TRAP komutu tarafından yakala- nır ve bunun yerine hata numa- rasının ve satırının denetlenmesin:- den sonra kullanıcının kibarca bilgiyazarı açması için uyarıldığı 90. satırına dallanır. GETKEY ko- mutu, programın RESUME komu- tuyla yeniden ÖPEN komutuna dönmesini sağlayacak bir tuş gi- rişini bekler. Hataya neden olan komutun bir daha yerine getirilmemesi ge- rekiyorsa, hata düzelime rutini RE- SUME NEXT ile kapatılır: böylece hata nedeninden bir sonraki ko- mutla devam edilmesi sağlanır. Özal bazı durumlarda, bir hata- dan sonra programın tamamen farklı bir yerinden devam etmek gerekebilir. Böyle bir durumda RE- SÜUME'nin ardından, programın devam etmesi gerektiği yerin sa- tır numarası verilir. Programın kendi içinde gerçek- leş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 çÇık- tığında, hatalı satırın dökümünü almak için HELP tuşuna basmak yeterlidir. Satırda havaya neden olan kısım bu sırada ters (reverse) olarak görüntülenir. Tabii ki, disket ünitesinden bildi- rilen hata da aynı biçimde araş- tırılacaktır. 1 ÖPEN 1,8,15:İNPUT$S 4,A,B$,C,D: PRİNT A,B$,C,D:CLOSE 1:END gibi kapsamlı bir satırı girmek (ve bu arada mMmuhtemelen kendi programının üzerine yazmak) ye- rine, BASIC 7.0'da yalnızca “?DS$” girilir ve aynı mesaj alınır. DS$ sis- tem değişkeni, disket ünitesinin hata durumunu, DS sistem değiş- keni ile karşılık gelen hata kodu- nu 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ü- gü siler; DİRECTORY veya CATA- LOS programın kaybolmasına neden olmadan disketin içerik lis- tesini verir; DLOAD, DSAVE ve DVE- RİFY sayesinde sıkıcı ",8“'den kur- commaodore !