i i “Mohar-hisoft” — 2010/5/12 — 14:24 — page 1 — #1 i i i i i i List za mlade matematike, fizike, astronome in računalnikarje ISSN 0351-6652 Letnik 13 (1985/1986) Številka 4 Strani 227–239 Bojan Mohar: HISOFT PASCAL Ključne besede: računalništvo, programski jeziki, pascal. Elektronska verzija: http://www.presek.si/13/790-Mohar.pdf c© 1986 Društvo matematikov, fizikov in astronomov Slovenije c© 2010 DMFA – založništvo Vse pravice pridržane. Razmnoževanje ali reproduciranje celote ali posameznih delov brez poprejšnjega dovoljenja založnika ni dovo- ljeno. onrllNO'N',.:n 'il'," __""L I_"'~_ IllS0Ff PASCAL v prejšnj i štev ilki Preseka smo objavili kratka navod ila za uporabo pascala na računalniku GOMMODORE 64, za to številko pa smo vam pripravili navo d ila za uporabo prevajalnika na računaln ikih ZX SPEGTRUM, SHARP in AMSTRAD . Prevajalnik za pascal, ki so ga napisali v softversk i h iši Hisoft in nosi ozna- ko HP4TM, je trenutno najboljši tovrstni izdelek za računaln ike tipa ZX Spec- t rum (48 K). Razen na Sinclairjevih računalnikih de luje isti prevaja lnik vsaj še na dveh tipih, ki sta precej razši rjen a tudi pri nas. To so rač unal ni kiSharp se- rije MZ in raču na l n i ki znamke Amstrad (Schneider) . Izved be na posamezn ih računalnikih se razlikujejo le v nekaterih nebistven ih malenkostih, zato bo na tem mestu opisana verzija za ZX Spectrum ravno tako dobro služ ila lastn ikom Sharpov in Amstradov. 1. Uporaba sistema K preva jalniku seved a sodi še celoten operac ijski siste m. Z njegovo pomočjo p i- šemo in spreminjamo programe, pišemo na kaseto in beremo z nje, program prevedemo, izvedemo itd . Prevaja lnik z dodatki zasede okrog 22 K pomnilni - škega prostora, ostalo pa imamo na razpolago za izvorni in prevedeni program . Prevajalnik dobimo na kaseti preveden v strojni jezik (GODE) . Zato je na začetku dodan poseben basiški program za nalaganje, ki ga naložimo v pomn il- nik z ukazom LOA D "" Ta program v bistvu sestavlja vrstica LOAD "" GODE: RANDOMIZE USR 24598 Ko je p revaj a ln ik naložen, nam najp rej zastav i tri vprašanja : Top of RAM? Top of RAM for 'T'? Table size? 227 Najbolje je, da vsakič pntrsnerno ENTER. V tem primeru sistem sam določi vrednosti , po katerih nas je spraševal. Te vrednosti zadostujejo normalnim po- t rebam. Po naših odgovorih sistem zapiše znak '>', kar pomeni, da čaka na naše ukaze . Le-te vpisujemo znak po znak. Pri vnašanju si lahko pomagamo z na- slednjimi posebnimi tipkami : ENTER I\C AH Al Ap AX AS zaključi vrsto (= tipka CAPS SH 1FT in 1) nas vrne v urejevalnik (= t ipka DELETE) zbriše zadnji znak (= tipka CAPS SH IFT in 8) pomik na naslednji tabulator (= tipka CAPS SH 1FT in 3) omogoči izpis na tiskalniku (= tipka CAPS SH1FT in 5) zbriše vneseni tekst v tekoči vrsti (= tipka CAPS SHIFT in presledek) ustavlja izpis Za vsako od posebnih tipk je najprej navedena oznaka, ki jo bomo uporabljali v nadaljevanju, v oklepaju pa smo zapisali, katero kombinacijo znakov moramo pritisniti na tipkovnici ZX Spectruma. V začetku se nahajamo v načinu pisanja z velikimi črkami. Če želimo preiti na malo abecedo, pritisnemo CAPS SHIFT in 2 Male črke navadno uporabljamo le v nizih, ker .prevajalnik razlikuje male in ve- like črke v imenih. Tako na primer imeni A in a predstavljata različni imeni , beseda while pa ni isto kot rezervirana beseda WHILE. Kako program vnašamo in popravljamo, si bomo ogledali v naslednjem razdelku. Zaenkrat si mislimo, da imamo program že vnesen. Omeniti moramo, da so vrstice programa ošte- vilčene, tako kot pri basicu. Takoj na začetku povejmo, da vse besede pišemo znak po znak (npr. FOR). Isto velja tudi za kombinacije znakov, ki so v basicu dosegljive z eno tipko (>>, <=,<>l. Upo rabljamo lahko naslednje ukaze: Ukaz L [list): služi za izpis programa na zaslon . Če je program daljši od enega zaslona, se po izpisanem polnem ekranu izpisovanje ustavi. Če sedaj pritisnerno A C, se vrnemo v sistem, ob pritisku na katerokoli drugo t ipko pa se izp is nada- ljuje . Ukaz L je oblike: Ln,m kjer sta n in m celi števili . Pomeni , da se izpi šejo vse vrstice s številkami med n 228 in m. Če prvi parameter nizpustimo, pomeni isto kot n = 1, izpuščeni drugi parameter m pa pomeni izpis do konca programa. Če napišemo le 'L', se izpiše cel program. Ukaz P (put): z njim shranimo program na kaseto. Tam bo zapisan v posebnem HP4T formatu in ga bomo lahko prebrali le z ukazom G (glej dalje). Določimo lahko še začetno (n) in končno (rn) številko vrstice, ki naj se shrani. Ukaz je oblike: P n, rn, ime kjer je zadnji parameter zaporedje znakov, ki določijo ime programa na traku. Navednice v imenu niso potrebne. Primer : P 1, 100, PROG2 Ukaz G (get): z njim beremo programe, zapisane v obliki HP4T. Ukaz je oblike: G" ime ali le G Pri prvi obliki sta vejici obvezni. Ime napišemo brez navednic. V drugem prime- ru se prebere prvi najdeni program v ustreznem formatu . Tako med sh ranjevanjem (ukaz P) kot pri branju se med tem, ko računal ­ nik piše oziroma bere, pojavi napis 'Busv ..' , Ukaza P in G sta v pascalovem sistemu enakovredna ukazoma SAVE in LOAD basicovega operacijskega siste- ma. Če že imamo napisan del programa, se bo program , prebran z ukazom G, dodal na koncu in prejšnjega programa ne bomo izgubili. Med tem, ko ukaz G išče začetek programa, lahko nalaganje prekinemo, če odtipkamo "c (opomba: spomnimo se, da je to oznaka za CAPS SH 1FT in 1). Pri ukazih P in G lahko uporabljamo tudi imena oblike m: ime, kjer je m številka (rnikroltračnika.Tako na pr imer ukaz P,,2:TEST shrani na tračnik številka 2 program pod imenom TEST. Ukaz C (cornpile}: S tem ukazom prevedemo program . Parametri niso potrebni. Prevajalnik ob prevajanju izp isuje program na zaslon. Izpis lahko zaustav imo , če pritisnemo "S. Zatem se lahko s "c vrnemo v urejevalnik, če pa pritisnemo katerokoli drugo t ipko, se prevajanje in izpisovanje nadaljujeta. 229 Če pr evajal ni k pri prevajanju odkrije napako v programu , se zaust avi in pod vrstico izp iše znak "l ' na mestu , kjer je odkril napako . Zatem izpiše še šte- vilko napake. (Na koncu poglavja je seznam napak z opisom .) Če sedaj pritisne- mo tipko ' E', se prevaj anje konč a , sistem pa skoči v urejeva lnik in že lahko po- pravljamo vrst ico z napako . S pr itiskom na 'P' preidemo v popravljan je vrstice , ki se nahaja neposred no pred vrstico, kjer je b ila odkrita napaka, vse ostale t ipke pa pomenijo nadal jevanje prevajanja. Če je bi lo prevaja nje uspešno , se poj avi vpr ašanje RUN ? Če odgovorimo z 'V', se prevedeni program ta koj izvede. Osta li odgovori, tudi 'V' , pa nas vrnejo v siste m. Ukaz R (run) : prevedeni program izvedemo . Ukaz T (translate): Program se najprej prevede. Če je bilo prevaja nje uspešno , se pojavi vprašanje 'OK? '. Odgovor 'V' pomeni , naj se delo nadal juje. Prevedeni program se najprej zapiše na tisto mesto v pomni lniku, kjer je bi l doslej HP4T preva jalnik, zatem pa se skupaj s potrebnimi pascalov imi rutinami zap iše na trak . Pri tem vzame za ime na traku kar ime, ki smo ga nazadnje uporabili v ukazu 'F' (glej razdelek o urejevalniku). Ta program lahko kasneje naložimo in poženemo z LOAD" " CODE : RANDOMIZE USR 24608 Ukaz 'T' uporabimo , ko je program popolnoma končan. Ker se pri tem prevajalnik v pomnilniku izgubi , ga moramo ponovno naložiti s kasete, če žel i- mo nadaljevati z delom v pascalu . Ukaz B (basic): nas vrne v basicov sistem. Če že limo od tod nazaj v pascal , od- t ipkamo RANDOMIZE USR 24598 za vrni tev, pr i kater i se naš program v pascalu izgubi, ali RANDOMIZE USR 24603 če želimo ohraniti svo j program . 230 2. Vgrajeni urejevalnik Prog ram ima oštevilčene vrstice, tako kot programi v basicu . Vrstico lahko vne- semo na p rime r t ako , da najp rej napišemo njeno štev ilko, zatem presledek , na- zad nje pa vrstico pasca lovega pr ograma. Če smo imeli že prej vrst ico z isto šte- vilko, o bve lja nova . Če t ako j za števi lko pr iti snemo ENTER , se bo ust rezna vrst ica izb risa la iz programa. Pr i p isanj u in sp reminjanju obstoj ečega prog rama pa smemo uporab iti več u kazov, ki nam lahko precej olaj šajo delo. Ukaz I (insert) : je obli ke ln, m kjer st a n in m cel i štev ili. Pomen i, da že limo vnašati vrst ice začenši s številko n, vsaka nas lednj a pa ima za m večjo vrednost. Sistem poskrb i, da se na zaslon av- tomat ič no zapiše]o številke vrstic , k i so na vrsti za vnašanje . Vrste vpisujemo, do kler želimo, končamo pa z uporabo kontrolne funkcije "c (= CAPS SHIFT in 1) . Ukaz D (delete ): služi za b risanje vrstice . Z o n,m zbrišemo vse vrstice od n-te do vključno vrstice s številko m. Za brisanje ene same vrstice mora biti m = n. Ukaz M (move): je oblike 'M n, m' . Pomeni, naj se vrstica n prepiše v vrstico m . Ukaz N [renumber): ima tu di dva parametra : N n,m Povzroči, da se vrstice od n dalje ponovno oštevilčijo. Razlika med dvema za- po rednima vrstama bo m . Ukaz F (f ind ): ima št ir i pa rametre : F n, m, f , s Prva dva st a št evili, k i do ločata območje vrst ic, kje r bo ukaz deloval, zadnja dva 231 pa sta niza. Pomen: v vrsticah, določenih z n in m, iščemo niz f. Če ga najde- mo, preidemo v popravljanje ustrezne vrstice in tedaj lahko niz f nadomestimo z nizom s (glej ukaza F in S za popravljanje vrstice). Ukaz E (edit): je oblike En in nas postavi v popravljanje vrstice s številko n . Vrstica se pojavi na ekranu in lahko jo spreminjamo. Pri tem imamo na voljo več podukazov . Najpomembnej- ši so naslednji: presledek: DELETE: ENTER Q K Z F S I x c pomik kazalčka za eno mesto naprej . zbriše znak levo od kazalčka. končaj s popravljanjern vrste. (quit) končaj s popravljanjem vrste, vendar ne upošteva] popravkov. zbriši znak pod kazalčkom. zbriši vse znake od kazalčka (vključno) do konca vrste . poišči niz f iz zadnjega F ukaza. nadomesti niz f z nizom s (glej ukaz F). odslej vrivaj vtipkane znake na mestu kazalčka. Šele ko pri- tisneš ENTER, bodo črke spet dobile pomen podukazov. pomakne kazalček na konec vrste in avtomatično vključi vrivanje znakov (glej podukaz I zgoraj). odslej (do pritiska na ENTE R) naj se vtipkani znaki vpisuje- jo v vrstico, ki jo popravljamo, vendar tako, da pišemo preko obstoječegabesedila. - 3. Razlike s standardnim pascalom HP4T se v glavnem drži standardov. Pomembnejša odstopanja so naslednja : datoteke niso implementirane. Ravno tako ni pod programov PUT in GET. Seveda pa imamo datotek i INPUT in OUTPUT, ki pomenita tipkovnico oziroma ekran, ni zapisov z inačicami, pod programov ne moremo prenašati kot parametre, tip ALFA ni definiran, standardnih programov PACK, UNPACK, DISPOSE ni. Namesto zadnjega lahko uporabimo MARK in RELEASE . 232 4. Združljivost tipov Recimo, d a im amo v programu naslednjo dek laracij o: VAR A, B C A RRA Y [ 1..10] OF REAL; ARRAY [ 1..10] OF REAL; Potem st a A in B istega t ipa, A in C pa ne (v st rogem smi slu, k i ga podpira t udi HP4T ). Večina prevajaln ik ov za pascal gornjega prime ra ne bi razumela tako strogo ko t Hisoftov pascal. V enakem, strogem smislu je razumljena združlj ivost vseh tipov, k i v svoj i def inicij i vsebuj ejo A RRA Y ali RECORD. 5. Nekateri dodat ni podprogram i Sestavlj alc i Hisoft pascala so se potrudili in standardnim podprogramom dodal i še več novi h. Nek ate re, na primer f unkcijo za računanje tangensa kota , lahko enostav no izraz imo s standardnimi podprogrami , mnogi pa so tak i, da j ih začet­ niki gotovo ne bodo potrebovali . Teh podprogramov t u ne bomo opisoval i. Omenil i bomo le najpomembnejše. Funkc ija INCH vrne znak ,ki je bil pr itisnjen na tipkovnici . Če nismo pri- t isni li nobene tipke, vrne CHR(OI. Na primer: REPEAT CH := INCH UNTI L CH <> CHR(O ) ; čaka, da priti snemo kat ero kol i t ipko . Po pri tisku ja ustrezni znak shranjen v spremen Ijivki CH. Funkcija FRAC(X) vrne neceli del realnega št evi la X . Za gener iranje sl učajnih števil imamo na voljo funkcijo RANDOM, ki je brez paramet rov . Njen rezul t at je naključno celo število med O in 255. Omeniti mo ramo, da t a generato r slučajnih števi l ni ravno najboljši za profesionalne prog rame, bo pa do vo lj do ber za učenje ali za pisanje igric. Za delo s kazal ci služi ta prava podproqrarna MARK(P) in RELEASE(P). Prvi shr ani naslov vrha sklada v kazalec P. Sklad se širi pr i dinamični upo rabi pomni lnik a s pomočjo podprograma NEW. Če kasneje napravimo RELEASE (P) z ist im in medtem nespremenjen im kazalcem P, se sklad zmanjša do nivo ja ob č asu , ko je bil napravlj en MARK(P) . Omenimo še nekaj podprogramav, ki bodo uporabni le pri vtikanju v raču - 233 nalnikov sistem. Podprogram paKE (naslov, vrednost) in funkcija PEEK (na- slov, tip) sta podobna kot v basicu . Pri PEEK moramo dodati ime tipa, odvisno od tega, kakšen rezultat želimo. Če ima tip v svoji predstavitvi več kot en zlog, se vzamejo še vrednostiv zaporednih celicah od danega naslova dalje. Podprogram INLlNE (Cl, C2, ... ) ima poljubno mnogo parametrov, ki po- menijo celoštevilske vrednosti ukazov v strojnem jeziku, ki naj se na tem mestu vstavijo v prevedeni program. Podprogram OUT (vrata, znak) izpiše znak na izhodna vrata z dano števil- ko. Datoteke nam delno nadomeščataukaza TOUT (ime datoteke, začetek, velikost) za izpis na trak in TIN (ime datoteke, začetek) za branje zapisa, predhodno napravljenega s TOUT. Ime datoteke je tipa ARRAY [1..8] OF CHAR, začetek pa je celo število, ki pomeni naslov v pomnilniku, od koder se pričnejo jemati zlogi, ki se s TOUT izpisujejo na trak . Pri tem nam prideta zelo prav funkciji ADDR(v) in SIZE(v), ki nam vrne- ta začetni naslov in velikost prostora v pomnilniku, ki pripada spremenijivki v. Pri TIN pa se vrednosti s traku začnejo vpisovati v pomnilnik na naslovu zače­ tek. Tretji parameter pri TOUT pove, koliko zaporednih zlogov naj se zapiše na trak . 6. Dodatek - želvina grafika Skupaj s prevaja lnikom lahko dobimo še paket podprogramov , ki omogoča delo v grafiki visoke ločljivosti. Sistem risanja je t .i. želvina grafi ka, kot jo poznamo iz jezika LOGO. Če so podprogrami zapisani na kaseti takoj za HP prevajalnikom, napravi- mo naslednje. Po nalaganju prevajalnika ustavimo kaseto, zatem pa zahtevamo, da sistem naloži podprograme: G" TURTLE ali samo G Naloženi del programa navadno zasede vrstice s številkami od 10 do 1350, od - visno od verzije, ki jo imamo . Če ga želimo izvajati, ga moramo najprej dopol- 234 niti do popolnega programa. V vrsticah 1 - 9 vpišemo glavo programa, dekla- racije konstant, tipov in spremenljivk. Tudi če naš program nima svojih spre- menljivk, moramo napisati vsaj simbol VAR, ker so v vrstici 10 paketa TURTLE deklarirane nekatere globalne spremenljivke, ki sodijo v deklaracije spremenljivk. Na koncu, v vrsticah od 1360 dalje, pa dodamo še svoje pod pro - grame in seveda glavni program. Ob zaključku tega razdelka, ko bomo sestavi- li dva zgleda, bomo zapisali le dodatne vrstice, ki jih moramo sami vnesti. Pri grafiki visoke ločljivosti je zaslon razdeljen na 256 x 176 točk . Vsaka točka ima koorditati (x, Y), kjer x pomeni oddaljenost od levega, y pa razdaljo od zgornjega roba. Gornji levi vogal ima koordinati (0,0). sredina ekrana pa (127, 87). Pri želvini grafiki si lahko predstavljamo, da je na takem ekranu v neki točki majhna želva, ki se lahko premika sem ter tja. Pri vsakem pomiku ta želva za seboj pusti sled - narisano črto. S pomikanjem v različnih smereh lah- ko taka živalea nariše vse mogoče slike. Pod programi dodatka TU RTLE opisujejo želvo s štirimi parametri . To so štiri globalne spremenljivke, ki so deklarirane povsem na začetku paketa: I XCOR in YCOR: v teh spremenljivkah sta shranjeni koordinati mesta, kjer se nahaja želva. Tako lahko z: XCOR := O; YCOR := O postavimo želvo v zgornji levi kot . HEADING: je realna vrednost,ki določa smer (v kotnih stopinjah). kamor je obrnjena želva . Vrednost O pomeni vzhod (to je smer od leve proti desni), vrednost 90 pa sever (navzgor). I . PEN STATUS: določa stanje 'peresa'. Ce ima ta spremenljivka vrednost O, je pero spuščeno in pri premikanjul bo želva risala črto. Če pa je 1, je pero dvi- gnjeno in želva za seboj ne pušča sledi. Pri programiranju nam ni treba skrbeti za vrednost i zgornjih količin . Za njihovo spreminjanje imamo na volj6 podprograme. Oglejmo si jih. TURTlE: postavi želvo na sre~ino ekrana in ji da smer od leve proti desni. I Pero je spuš čene, ekran moder, črte pa bodo rumene . Navadno ta podprogram pokličemo na začetku programa. I SETXY lx, y: REAL): postavi želvo na točko (x, y). SETHD (a: REAL): definira smer želve (HEADING) . PENUP: dvigne pero. PENDOWN (c: INTEGER) : spusti pero in določi barvo č rt [c). INK (c: INTEGER): določi barvo peresa. ' PAPER Ic: INTEGER): določi barvo ozadja. 2.35 FWD Id: REAL): ta podprogram pomakne želvo za d enot v smeri, kamor želva trenutno gleda. Če je pero spuščeno, se pri tem nariše črta . BACK (d: REAL): pomik naza j za d enot. Smer želve se pri tem ne spre- meni. TURN la: REAL): zasuk želve za a stopinj v levo. LEFT (a: REAL): isto kot TURN(a) . RIGHT (a: REAL): isto kot LEFT (-al. VECTOR (a, d: REAL): najprej postavi želvo v smeri a, zatem pa jo po- makne za d enot. Ekvivalentno z SETHD (a); FWD (d) . ARCR (r: REAL; a: INTEGER): želva se s tem ukazom pomakne po loku (in ne po ravni črti) kroga velikosti r (r= rr=3.14159 .. . pomen i,dajepolmer kroga enak 180 enot) . Dolžina loka, ki ga pri tem opiše želva, je enaka a, merje- no v stopinjah kota, ki ga določa lok s središčem kroga . Lok se začne r isati v smeri, kamor trenutno gleda želva, in v smeri, nasprotni smeri urinega kazalca. Primer: če žel imo nar isati krog polmera R s središčem v točki (X, YI. lahko na- pravimo naslednje : SETXY (X, Y + R); {postavimo želvo na krožnico ] SETHD (90) ; [želve obrnemo v smeri tangente i ARes (R* 3 .14159 / 180,360) Na koncu je želva obrnjena navzgor. COPY: prenese sliko z ekrana na ZX tiskalnik. Obstajajo še podprogrami PLOT, LINE, SPOUT, ki so podobni ustreznim basicovim uk azom in jih ne bomo op isovali . Za konec si oglejmo še dva zgleda. Prvi program sestavi zanimiv lik iz kva- dratov. Pri N = 4 je ta lik videti kot okno, pri večjih vrednostih pa kot nekak- šna rozeta. PROGRAM zasukanikvadrati; 2 {nariši N kvadratov s skupno točko} 3 VAR N, 1: INTEGER; 4 ALFA: REAL; 10 . 20 vrst ice paketa TU RT LE 1350 .. 1400 PROCEDURE KVADRAT (A: REAL) ; 236 1410 {Žeiva prehodi kvadrat s stranico A } 1420 BEGIN FWD(A) ; TURN (90); FWD(A); TURN (90); 1430 FWD(A); TURN (90); FWD(A) ; TURN (9Ol.; 1440 END; 1500 BEGIN {glavni program \ 1510 WRITE ('Vnesi stevilo kvadratov: '); 1520 READ(N); 1530 ALFA:= 3601N ; 1540 TURTLE ; {postavi želvo na sredino] 1550 FOR 1:= 1 TO N DO BEGIN 1560 KVADRAT (50) ; TURN (ALFA) 1570 END 1580 END. Drugi program pa nam bo pokazal , kako narišemo kvadratno "spiralo" , Zaradi enostavnost i je zgled sestavljen tako, da program riše, dokler se ne usta- vi, ker črte padejo iz zaslona. PROGRAM spirala ; 2 {risanje kvadratne spirale ] 3 VAR D: INTEGER; 1400 BEGIN {glavni program 3 1410 D := O; 1420 TURTLE; 1430 WHILE TRUE DO BEGIN 1440 D :=D+5; 1450 FWD (D); 1460 TURN (90) 1470 END 1480 END . Na naslednji strani je v razdelku 7. Seznam napak pri prevajanju 237 1. Preveliko števil o 2. Manjka podpičje 3. Nedeklarirana spremenlj ivka 4. Tu mo ra biti ime 5. Uporab i '= ' namesto ' :=' v deklaraciji konstant 6. M anjka '= ' 7. To ime ne sme stat i na z ačetku stavka 8. Manjka ' := ' 9 . Manj ka '1' 10. Napačen t ip 11. Manjka ': 12. Moral bi biti faktor 13. Morala b i biti konstant a 14. To ime ni kons tanta 15. Manjka THEN ' 16. Manjka '00' 17. Manjka TO' ali 'OOWNTO' 18. Man jka '(' 19. Izr aza tega tipa se ne d a izpis ati 20 . Manjka 'OF ' 21. Manj ka '. 22 . Manjka ':' 23. Manjka 'PROGRA M ' 24 . Tu m ora bi ti sprernenlj ivk a, ker je var parameter 25 . Manjka 'SEGIN' 26. Pri READ mo ra biti spremenl j ivka 27 . Izrazov tega tipa ne moremo primerjati 28 . Mora b iti tip INTEGER ali REAL 29 . Spremenljivke tega t ipa se ne da pre - brati . 30 . To ime ni tip 31 . Pričakovan eksponent v realnem številu 32 . Pričakovan skalarn i in ne številsk i izraz 33. Prazen niz ni dovoljen (uporabi CHR(O)) 34. Manjka T 35 . M anjka T 36 . Indeksi morajo b iti skalarnega ti pa 37 . Manjka'.: 38. Pr i deklaraciji tabele manjka T ali '; ' 39 . Spodnja meja j e večja od zgornje 40. Prevel ike množice (več kot 256 elem.l 4 1. T ip funkcije mora b iti definiran z imenom tipa 42 . V množici manj ka': ali T 43. V m nožici manjka ... . al i '. ali T 44 . T ip paramet ra mora biti def ini ran z imenom t ip a 45 . Prazna m nožica ne sme biti prvi f aktor v tem izrazu 46 . Manjka skalarna vrednost (lah ko tudi REAL) 47 . Man jka ord in alna vrednost (brez REAL) 48 . Teh množic ne mo remo primerjati 49 . Z znakoma '<' in "> ' ne moremo primerjati množic 50 . Manj ka 'FORWARO' , ' LA SEL ', 'CONSr. ·VAR·. TYPE' ali 'SEG IN ' 51 . Tu mora biti šest najst iško število 52 . Množice ne moremo vpisati v spom in z ukazom POKE 53 . Tabela prevelika (ve čja kot 64Kl 54 . V deklaraciji zap isa manjka 'EN O' ali ' ;' 55. Tu bi mo ralo bit i ime polja v zapi su 56 . Za WITH mora bit i spremenlj ivk a 57 . Sp remenlj ivka v stavku WIT H mora bi t i zapi s 58 . Ime polja ni v stavku WITH 59 . Za simbolom 'LASE L' mora bit i nepredznačeno celo števi lo 60. Za 'GOTO' mora b iti nepredznačeno celo število 61 . Ozn aka je na napačnem nivoju 62 . Nedeklarirana ozna ka 63. Parameter podprograma SIZE mora biti spremenlj ivka 64. Kazalca lahko primerj amo le z '= ' ali '< ">' 67 . Format za izpis celega števi la je e:n ali e:n :H 68. V nizu ne sme biti znak za ko nec vr ste 69 . Parameter pri NEW , M A RK in RE LEASE mora bi ti kazalec 70. Parameter podprog rama AOOR mora b iti spremen lj ivka 238