Príloha C – Chyby

Chyby sú dvojakého druhu: tie, ktoré nájde prekladač (program sa nepreloží), a tie, ktoré nastanú za behu (program sa preložil, ale niečo sa pokazilo).

Ako čítať hlásenie prekladača

hello.act(2,10): error ACT001: missing double quote in string

Súbor, v zátvorke riadok a stĺpec, potom druh (error chyba, warning upozornenie, note doplnenie k predošlému), číslo a popis.

Chyby prekladu s číslami pôvodného Action!

Čísla 0 až 28 a 61 sú rovnaké ako v pôvodnom Action!. Niektoré sa týkali len obmedzenej pamäte Atari a v action26 ich nestretneš.

ČísloHlásenieČo zvyčajne znamená
ACT001missing double quote in stringchýba úvodzovka na konci textu, alebo je text dlhší ako 255 znakov
ACT002nested DEFINEDEFINE, ktorý sa odvoláva sám na seba
ACT005SET directive syntax errorzle zapísaný SET
ACT006declaration errormeno je už použité; deklarácia za príkazom; zlý tvar deklarácie
ACT007invalid argument listchýba zátvorka za menom rutiny; priveľa argumentov
ACT008variable not declaredneznáme meno – preklep, chýbajúca deklarácia, rutina napísaná až pod volaním
ACT009not a constantna mieste, kde má byť číslo známe pri preklade, je premenná
ACT010illegal assignmentpriradenie do poľa, záznamu alebo konštanty; volanie bez zátvoriek
ACT011unknown errorprekladač narazil na niečo, čo nečakal – často následok predošlej chyby
ACT012missing THENza podmienkou IF chýba THEN; == namiesto =
ACT013missing FIIF bez FI
ACT015missing DOWHILE alebo FOR bez DO
ACT016missing TOFOR bez TO
ACT017bad expressionzle zapísaný výraz
ACT018unmatched parentheseschýba alebo prebýva zátvorka
ACT019missing ODslučka bez OD; UNTIL nie je tesne pred OD
ACT021illegal array referenceindex za niečím, čo nie je pole – často premenná s menom knižničnej rutiny
ACT023illegal conditional expressionporovnanie mimo podmienky; 1<a<3; chýbajú zátvorky okolo x&maska
ACT024illegal FOR statementzle zapísaný FOR
ACT025illegal EXITEXIT mimo slučky
ACT027illegal TYPE declarationzle zapísaný TYPE
ACT028illegal RETURNRETURN(x) v procedúre; RETURN bez hodnoty vo funkcii

Čísla 0, 3, 4, 14, 20, 22, 26 a 61 sú o nedostatku pamäte pôvodného prekladača.

Hlásenia action26

ČísloDruhVýznam
ACT200chybazlý príkazový riadok
ACT201, ACT202chybasúbor sa nedá otvoriť / zapísať
ACT203chybasúbor z INCLUDE alebo FILE sa nenašiel
ACT204, ACT205chybaINCLUDE vkladá sám seba; príliš hlboké vnorenie
ACT209varovanieznak, ktorý do jazyka nepatrí, bol preskočený
ACT211chybadesatinné číslo – Action! ich nemá
ACT212varovaniepremenná, ktorú nikde nepoužívaš
ACT213varovaniemenej argumentov ako parametrov (len s --wextra)
ACT214varovaniepoložka patrí inému typu záznamu
ACT215varovaniečíslo sa do typu nezmestí a skráti sa
ACT216chybaprogram nemá žiadnu rutinu
ACT217varovaniedelenie nulou
ACT219varovanie--strict: toto by pôvodný Action! odmietol
ACT220–ACT227chybaassembler (blok ASM; 225 aj prekrytie blokov ORG)
ACT228varovanieveľkosť poľa daná premennou
ACT231, ACT232chyba / varovanienastavenia v zdrojáku (;@…): zlé; prebité príkazovým riadkom
ACT233chyba / varovanieORG, ENDORG, ALIGN
ACT234chybaCASE
ACT235, ACT236chyba / varovanieIF a CASE ako hodnota
ACT237chybaENUM
ACT238, ACT239chyba / varovanieviacrozmerné polia
ACT240chybašpeciálny znak \{…}
ACT241–ACT243chyba / varovanierozšírená pamäť a okno bánk
ACT244varovaniesúbor W8P typu, ktorý sa na Atari nedá rozbaliť

Chyby za behu

Keď rutina knižnice narazí na problém, program vypíše

Err: 170

a skončí – pokiaľ nemáš vlastnú obsluhu chýb (kapitola 31).

Chyby knižnice action26

ČísloVýznam
100Sound s číslom hlasu väčším ako 3
101banka rozšírenej pamäte neexistuje
102prístup do zakázanej oblasti (registre, vektory)
103, 104XAntic: nezlučiteľná banka; rozšírenie to nevie
105zbalené dáta v neznámom formáte
106poškodený súbor W8P
107Player/Missile grafika: pamäť z PMMemory chýba, nezačína na celej stránke alebo nie je na násobku 2 KB (1 KB)

Chyby zariadení

ČísloVýznam
128stlačený kláves BREAK
129kanál je už otvorený
130zariadenie neexistuje
131kanál je otvorený len na zápis
132neplatný príkaz
133kanál nie je otvorený
134zlé číslo kanála
135kanál je otvorený len na čítanie
136koniec súboru (nehlási sa ako chyba; nastaví EOF)
137riadok je dlhší ako miesto preň
138zariadenie neodpovedá
139zariadenie odmietlo príkaz
141kurzor alebo bod mimo obrazovky
144chyba zariadenia – disketa chránená proti zápisu alebo poškodená
146zariadenie túto operáciu nevie
147málo pamäte na grafický režim

Chyby diskety

ČísloVýznam
160zlé číslo jednotky
161priveľa otvorených súborov
162disketa je plná
164poškodený súbor
165zlé meno súboru
167súbor je zamknutý
169adresár je plný
170súbor neexistuje

Chyby, ktoré nikto nehlási

Najviac času zaberú chyby, pri ktorých prekladač mlčí a program beží – len zle. Všetky sú opísané v kapitolách:

PríznakPravdepodobná príčinaKapitola
premenná sa „sama“ meníindex mimo poľa, pridlhý reťazec18, 19
výpočet dáva malé nezmyselné číslovýraz zo samých BYTE pretiekol7
program sa zacyklíFOR s BYTE do 255; chýbajúci RETURN; podmienka, ktorá sa nikdy nezmení13, 3, 11
rutina „nemení“ premennúdostala kópiu, nie adresu14, 20
rutina počíta zle pri volaní zo sebarekurzia16
výpis je nezmyseltext v Put, číslo v Print, zlá značka v PrintF4, 26
dva rovnaké texty „nie sú rovnaké“porovnanie reťazcov cez =19
farba pozadia sa mení samaBYTE x=710 namiesto BYTE x=[710]6, 24

Ďalej: Príloha D – Atari v číslach · Obsah