1. A BASIC programozási nyelv
A BASIC nyelv, angol nyelvû rövidítésének megfelelõen (Beginners All-purpose
Symbolic Instruction Code) a kezdõ felhasználók ideális eszköze a számítógéppel
történõ kom- munikációban. Nemcsak egy programozási nyelvet jelent, hanem az
operációs rendszert is helyettesíti mûködése alatt, így népszerûségét tovább
növelte, hogy a BASIC-re alapozott (többnyire személyi-) számítógépek szabványos
kapcsolatot (interface-t) tartanak a külvilággal. Ez korábban egyáltalán nem
volt megszokott jelenség, mert legtöbbször minden új számítógép-konstrukció más
vezérlõ nyelvvel (Job Control Language) került piacra, ezért a gép kezelését
újra kellett tanulni.
A BASIC alapvetõen három feladatot lát el, s ennek megfe- lelõen három
üzemmódja van: parancs, szerkesztõ és prog- ramfuttató üzemmódokat
különböztethetünk meg. A felhasználó számára a fenti tény nem nyilvánvaló, mert
a billentyûzetet egyformán kell kezelni, talán csak a programfuttató üzemmód az,
amelyik a többitõl egyértelmûen elhatárolható (külön utasítással /RUN, esetleg
GOTO ill. GOSUB/indítandó, s a program befejezéséig/megszakításáig/tart).
Egyébként az elsõ BASIC-ekben csak a begépelt sor értelmezésekor
(interpretálásakor) derül ki, hogy a gépnek most parancsot kell-e végrehajtania,
vagy a BASIC programot akarjuk szerkeszteni (ha a sor 'egész szám' alakban
kezdõdik /ahol _=szóköz/blank/, akkor azt szerkesztendõ programsornak tekinti,
egyébként pedig megkísérli a sort parancsként végrehajtani). Érdemes
megjegyezni: az egyes üzemmódokban használható utasítások köre változó, pl.:
parancs üzemmódban nem írhatunk definíció jellegû utasítást (DATA, DIM, DEF...),
és a BASIC program már nem tartalmazhat programszerkesztési (AUTO, DELETE, NEW,
RENUM), illetve operációs-rendszer vezérlõ utasításokat (LIST, LLIST, LOAD
MERGE, SAVE). A Turbo- ill. a QuickBasic-ben, nem is beszélve a Windows alatt
mûködõ VisualBasic-rõl, a szerkesztõ és futtató utasítások menübõl érhetõk el. A
beírt programsor nem szükségképpen kezdõdik sorszámmal és nem hajtódik végre
azonnal. A különféle szerkesztési szabályokat az egyes fejezetek elején írjuk
le.
Változók és tömbök
A többi fejlettebb programozási nyelvhez hasonlóan a BASIC is felmenti a
felhasználót a memóriakezelés közvetlen irányításától, ami azt jelenti, hogy ha
adatot kívánunk tárolni a számítógép memóriájában, akkor nem szükséges annak
tárolási helyét közvetlenül kijelölnünk, hanem elegendõ az adathoz egy nevet
hozzárendelnünk egy változónév=adat alakú értékadó utasítás formájában, és az
adatra ezután már a változónévvel hivatkozhatunk. Nem kulcsszó nevek elsõ
érzékelésekor (szabály: csak betûvel kezdõdhetnek!) a BASIC ezekhez hozzárendeli
a szabad memória - ami kezdetben általában 64 Kb hosszú - következõ, a változó
típusának megfelelõ hosszú szakaszát, és az így megjelölt területet elzárja más
felhasználás elõl. A változó típusát nevének utolsó karaktere írhatja elõ (%:
egész típus, !:egyszeres pontosságú valós, #:dupla pontosságú valós, $:karakter-
sorozat /string/ típus), de típus hozzárendelés a név elsõ karakteréhez is
köthetõ a DEFINT, DEFSNG, DEFDBL, DEFSTR típusdefiniáló utasításokkal. A fentiek
hiányában alapértelmezésként a változókhoz az egyszeres pontosságú lebegõpontos
típus rendelõdik.
A továbbiakban az egyes változótípusok jellemzõit ismer- tetjük:
- egész típusú:
- hossza 2 byte, s rajta az [-32768,32767] intervallumba esõ egész számok
kettes komplemens kódban vannak tárolva.
- egyszeres pontosságú valós:
- hossza 4 byte, s rajta a számok lebegõpontos bináris formában vannak
tárolva (1 byte exponens, 3 byte mantissza), kb. 7 értékes tizedes jeggyel.
- dupla pontosságú valós:
- hossza 8 byte, s rajta a számok lebegõpontos bináris formában vannak
tárolva (1 byte exponens, 7 byte mantissza), kb. 15 értékes tizedes jeggyel,
- string típusú:
- a változóhoz rendelt stringet (jelsorozatot) csonkítás nélkül, legfeljebb
255 byte-on tárolja ASCII kódban. A változóra történõ ismételt értékadás új
terület lefoglalását eredményezi, ezért használatuk elõ- vigyázatosságot
igényel, mert gyorsan a szabad memória kimerülését okozhatják.
Logikai adatot bármely számtípusú változóhoz rendelhetünk!
Esetenként az egyszerû változók használata már nem elégít ki minket (pl.
adatsor feldolgozásakor), hanem indokoltnak látszik tömbök bevezetése. A BASIC
ilyenek deklarálását (helyfoglalását), használatát is támogatja. Tömbök
segítségével közös néven hivatkozhatunk azonos típusú változók egy csoportjára.
A tömb egy-egy adatát tömbön belüli helyzete (indexe/i/) alapján azonosíthatjuk.
A BASIC általában nem korlátozza a tömb indexeinek számát (pl. az egyindexes
tömbök vektorok, a kétindexesek mátrixok tárolására szolgálnak), de a tömbök
összméretét is korlátozza a rendelkezésre álló szabad memória nagysága.
Természetesen ugyanolyan típusú tömböket definiálhatunk a DIM utasítással, mint
amilyen típusú változókat egyébként is használhatunk. Ugyanazon név alatt
szerepeltethetünk a programban egyszeres és tömbváltozót is, mert az adatra
történõ hivatkozás úgyis egyértelmûvé teszi, melyiket kell használni.
Példák változókra:
Az A%, B%, CICA% egész típusú változók. Az A%(2), B%(K,J), CICA% (4,K,S)
olyan tömbök elemei, amelynek valamennyi eleme egész típusú. Egy programon belül
alkalmazható A% és A%(...) is, illetve CICA% és CICA%(...) is. A zárójel miatt
különbözõ neveknek kell tekinteni.
Az A, A!, CICA, CICA!, A(2), A!(2), CICA(K,L), CICA!(K,L) egyszeres
pontosságú valós változók. A ! nem kötelezõ, így A és A!, CICA és CICA!,
valamint A(2) és A!(2) ugyanazt a memóriarekeszt jelentik. A tömböknek
valamennyi eleme egyszeres pontosságú valós.
Az A#, CICA#, A#(3), CICA#(K,L) dupla pontosságú valós változók.
Az A$, CICA$, A$(5), CICA$(K,L) string változók.
Az A$(...) és CICA$(...) tömbök valamennyi eleme string minden elem hossza 1
és 255 byte között lehet. Egy programban használható A%, A, A#, A$ változó,
különbözõ memóriarekeszt jelentenek, egymáshoz semmi közük nincs, nem jelenti
egyik a másik átalakított értékét.
A BASIC igyekszik elnézõ lenni a felhasználóhoz, programozási hibáit egy
bizonyos határig tolerálja, ezért pl.: a tömbök deklaráció nélkül is
használhatók. A tömbnév elsõ elõfordulásakor az indexek számának megfelelõ
dimenziójú tömb helyfoglalása automatikusan megtörténik, azzal a korlátozással,
hogy az egyes indexek értéke a 10-et nem haladhatja meg (és az indexek számozása
0-nál kezdõdik).
Adatkonstansok
Példák egész típusú konstansokra: 5,-32000,16000,&Hb800 (hexad.)
Példák egyszeres pontosságú lebegõpontos konstansokra:
5.,-32000!,16000.57,16E+3
Példák dupla pontosságú lebegõpontos konstansokra:
5.D+0,-32000#,16000.57D+0,16D+3
Példák string-konstansokra: "ablak","Ajto","%12 Ab lak", "12345".
Példák logikai konstansokra: -1 (igaz), 0 (hamis) (A gép a matematikai
logikai igaz 1 helyett a -1-et használja).
Aritmetikai mûveletek és függvények
- - : elõjelváltás, kivonás
- + : összeadás,
- * : szorzás
- / : osztás
- \ : egész típusú osztás
- ^ : hatványozás
A mûveletek közötti prioritási szabály a matematikában szokásos. Egyenrangú
mûveletek esetében balról jobbra haladva történik a mûveletek elvégzése. A
mûveletek sorrendjének ettõl eltérõ kijelölése a ( ) zárójelek használatával
lehetséges.
- ABS : abszolútérték képzés
- ASC : karakter ASCII kódja
- ATN : arcus tangens függvény
- COS : cosinus függvény
- EXP : exponenciális függvény
- INT : egészrész-képzés
- LEN : string hossza
- LOG : e alapu logaritmus
- SGN : elõjel függvény
- SIN : sinus függvény
- SQR : négyzetgyök függvény
- TAN : tangens függvény
- VAL : stringbe írt számkonstans értéke
Aritmetikai kifejezésen olyan képletet értünk, amely számértékû konstansokat,
változókat, függvényeket tartalmaz, aritmetikai mûveletekkel összekapcsolva.
Aritmetikai kifejezés értéke numerikus szám. Az aritmetikai függvények
argumentumát, azt a kifejezést, változót, vagy konstanst, amelynek
függvényértékét kell kiszámítani ( ) zárójelbe kell tenni.
Példák aritmetikai kifejezésekre:
- A + B
- (A^2 + B^3)/2
- (A*B + B*C)\4
- EXP(A*57D+3)
- SIN((4*ATN(1))/2)
Valamennyi konstans és változó önmagában is kifejezés.
Logikai mûveletek és függvények
- AND : logikai és
- EQV : ekvivalencia
- IMP : implikáció
- NOT : negáció
- OR : logikai vagy
- XOR : kizáró vagy
Egyszerû logikai kifejezés két aritmetikai vagy két string kifejezés
relációval való összekapcsolása. Értéke logikai érték: igaz (-1) vagy hamis (0).
Példák: A<=B A<>B A=B (A^2+B^3)/2 = SIN((4*ATN(1))/2) "ABC"+A$ <=
LEFT$(B$,6)
Összetett logikai kifejezés egyszerû logikai kifejezések, logikai értékû
változók összekapcsolása logikai mûveletekkel, vagy függvényekkel. Logikai
kifejezés értéke logikai érték: igaz vagy hamis.
Példák:
- A<=B AND C<>D ugyanezt jelenti a következõ:
- (A<B OR A=B) AND (NOT C=D)
- Ebbõl következik, hogy
- (A<=B AND C<>D) EQV ((A<B OR A=B) AND (NOT C=D)) kifejezés
igaz.
String-mûveletek és függvények
- + : egyesítés, egymás után írás
- CHR$ : karakter-generátor
- HEX$ : hexadecimális alakú számkonstans string generálása
- LEFT$ : bal rész-string kiemelése
- MID$ : középsõ rész-string kiemelése
- OCT$ : oktális alakú számkonstans string generálása
- RIGHT$ : jobb rész-string kiemelése
- SPACE$ : szóköz-string képzése
- STR$ : számkonstans string generálása
- STRING$: szabályos karaktersorozat képzése
String (vagy karakter) kifejezésen olyan képletet értünk, amely string
konstansokat, változókat, függvényeket tartalmaz, esetleg az egyetlen +
egyesítés (konkatenálás) string mûvelettel összekapcsolva. String kifejezés
értéke string. String függvények argumentumát ( ) zárójelbe kell tenni.
Példák string kifejezésre:
- A$
- A$ + SPACE$(4)
- LEFT$(A$,1)
- RIGHT$(A$ + SPACE$(4), 5)
- MID$(RIGHT$(B$,4), 2, 3)
- STR$(245)
- Kifejezések használata:
- Sem aritmetikai sem logikai sem string kifejezések önálló
programutasításként nem állhatnak. Valamennyit egyéb utasítások használhatják
paraméterként.
Értékadás
[LET] változónév = kifejezés
Kifejezés alatt tulajdonképpen olyan képletet értünk, ami már korábban
ismertetett formájú konstansokat, mûveleteket és függvényeket, korábban
definiált változókat és szabályos zárójelezést tartalmazhat. Alapvetõ szabály,
hogy a változó és a kifejezés típusa megegyezzen, ezen belül a számtípusok
egymást helyettesíthetik, de pl. stringet nem rendelhetünk számhoz. A
zárójelezés teszi lehetõvé a mûveletek elvégzése prioritásos sorrendjének
felülbírálását, de a kezdõ és végzárójelek száma meg kell hogy egyezzen.
Adatbeolvasás
Adat beolvasható magából a program listájából (DATA és READ), billentyûzetrõl
(INPUT, LINE INPUT), adatfile-ból (INPUT#, LINE INPUT#, GET#).
Adatkiírás
Adat kiírható a képernyõre (PRINT, WRITE), a nyomtatóra (LPRINT), adatfile-ba
(PRINT#, WRITE#, PUT#).
Ciklus-szervezés
Ciklusról beszélünk akkor, ha egy programrészletet többször egymás után
akarunk végrehajtatni. Ha az ismétlések száma elõre ismert, akkor a ciklusba
tartozó utasításokat (a ciklus magját) a FOR ..., NEXT utasításpárral fogjuk
közre. Ha a ciklus ismétlése valamely logikai feltételtõl függ, akkor használjuk
a WHILE ..., WEND utasításpárt.
Szubrutin-szervezés
Ha a program különbözõ pontjain ugyanazt az utasítássoro- zatot kell
végrehajtanunk (csak esetleg más értékekkel, paraméterekkel), akkor szervezzünk
szubrutint, azaz az ismétlõdõ utasítássorozatot különítsük el a fõprogramtól
(tegyük pl. a program végére), és zárjuk le egy RETURN utasítással. A fõprogram
megfelelõ pontjain az így kiemelt utasítássorozat végrehajtását a GOSUB
szubrutinhívó utasítással kezdeményezhetjük.
Feltételes és feltétel nélküli
vezérlés-átadás
A program általában olyan sorrendben hajtódik végre, ahogy a listán az
utasítások sorban követik egymást. Ezt a végrehajtási sorrendet módosítják a
ciklusok, a szubrutinok, de a vezérlés a program bármely más pontjára is
átadható a GOTO utasítással (mindenesetre ciklus és szubrutin magjába 'kívülrõl'
beugrani nem ajánlatos).
Logikai feltételtõl függõ vezérlés-átadást az IF...THEN... ELSE...
utasítás-konstrukcióval kivitelezhetünk. Kijelölt címkéjû sorok között az ON
utasítással választhatunk.
File kezelés
A számítógéphez kapcsolt háttértárolón (lemezegységen) programokat és
adatfile-okat tarthatunk a 'felejtés' ve- szélye nélkül (a memória a számítógép
kikapcsolása után elveszti tartalmát!). A BASIC-ben megírt programokat a SAVE
utasítással menthetjük, és a LOAD vagy MERGE utasítással tölthetjük vissza. A
háttértárolón található file-ok katalógusa a FILES parancssal kérdezhetõ le,
tetszõleges file-t a KILL utasítással törölhetünk, és hossza a LOF függvénnyel
kérdezhetõ le.
Az adatfile-ok rekordszervezésûek. Egy rekord a logikai (és bizonyos mértékig
fizikai) értelemben összetartozó adatok halmaza. Ha a rekordok hossza nem
rögzített, akkor a file csak szekvenciálisan (a rekordok csak felírásuk
sorrendjében érhetõk el) kezelhetõ, ellenkezõ esetben lehetséges a file- on
belüli közvetlen rekordra pozícionálás.
Az adatfile kijelölését, típusát, használatának módját az OPEN utasítással
írhatjuk elõ, és a munka befejeztével a CLOSE utasítással zárhatjuk le. A
program normál befejezõdése esetén külön utasítás nélkül is megtörténik a
nyitott file-ok lezárása, de különösen írásra megnyitott file-ok esetén célszerû
a lezárásról külön is gondoskodni, nehogy adatvesztés következzen be! Olvasáskor
a file-vége figyelését az EOF logikai függvény biztosítja. Egyidejüleg csak
korlátozott számú file lehet nyitva!
A számítógép egyes perifériái file-ként is elérhetõk, ha az alábbi
egyezményes neveket használjuk (a kettõspont része a filenévnek!):
- SCRN: csak outputra megnyitható eszköz, a képernyõ.
- KYBD: csak inputra megnyitható eszköz, a billentyû- zet.
- LPT[n]: az [n]-dik párhuzamos port, pl.: nyomtató.
- COM[n]: az [n]-dik soros port, pl.: egér.
- NUL: az üres eszköz, az erre írt adatok elvesznek.
Véletlenszám generálás
A BASIC-nek nagyon hasznos sajátossága, hogy beépített (pseudo-) véletlenszám
generáló függvényt is tartalmaz (RND), ami a [0,1] intervallumon egyenletes
eloszlású vé- letlenszámot ad vissza. A valószínûség-számításból ismert, hogy
egy ilyen véletlenszám generátorral bármely más eloszlású véletlen számsorozat
is elõállítható! A generált számsorozat megismételhetõ, mert a RANDOMIZE
utasítás lehetõvé teszi, hogy más alkalommal is ugyanattól a ponttól indítsuk
újra a sorozatot.
Hibafigyelés futás közben
ON ERROR GOTO sorszám; alakú utasítás a futás közbeni hibák lekezelésére
alkalmas. Rendszerváltozóként ERR a hiba kódját, az ERL függvény pedig
elõfordulásának helyét szolgáltatja. Ezt a feltételfigyelést bekapcsolni nem
kell, de a hibadetektáló rutint a RETURN helyett a RESUME utasítással kell
lezárni.
A BASIC kulcsszavak ABC szerinti leírása
Az alábbi leírásban szögletes zárójelbe [] írjuk a nem kötelezõen választható
opciókat. A [] jelek nem tartoznak hozzá az utasításhoz a programsorba nem
szabad beleírni. A mintapéldákban a programsorok sorszámmal kezdõdnek, mert az
eredeti BASIC-ekben ez még kötelezõ volt.
- ABS (függvény):
- abszolútérték-képzés, pl. y=ABS(x), ahol x számkifejezés.
10 X=125:Y=-442.7
20 PRINT ABS(X),ABS(Y)
RUN
125 442.7
- ASC (függvény):
- ASCII-kód képzés, pl. y=ASC(x$), ahol x$ stringkifejezés, y pedig x$ elsõ
karakterének kódja.
10 yx$="AbcD123"
20 PRINT asc(yx$)
RUN
65
- ATN (függvény):
- arcus tangens függvény, pl. y=ATN(x), ahol x számkifejezés, y pedig a
radiánban mért szög.
10 pi=4*atn(1)
20 x=16
30 PRINT pi,4*atn(x/16)
RUN
3.141593 3.141593
- AUTO (utasítás):
- automatikus sorszámozás beállítása, pl. AUTO [x],[y] ahol x jelöli a
program elsõ sorának sorszá- mát, y pedig a sorszámozás növekményét. x=10,
y=10/default, azaz alapértelmezés szerinti értékek x vagy y elhagyása esetén
ezekkel az értékekkel mûködik az utasítás.
- CDBL (függvény):
- dupla pontos számba konvertál, pl. x#=CDBL(y).
10 y=125.0123456789
20 x#=cdbl(y)
30 PRINT y,x#
RUN
125.0124 125.0123443603516
- CHAIN (utasítás):
- új programot tölt be, esetleg változó- érték átadással, illetve
programtörléssel, pl. CHAIN [MERGE] x$[,y[,ALL][,DELETE z,q]], ahol x$ a
file-név, y az indítási sor száma, z-q a törlendõ sorok halmaza. Ha ALL
szerepel, akkor minden változó megõrzi értékét, egyébként csak a COMMON
utasításban felsoroltak.
10 Y=890.76:A$="789abs"
20 X#=CDBL(Y)
30 PRINT Y,X#,A$
40 CHAIN "a:konvert.bas",10,ALL
RUN
890.76 890.760009765625 789abs
125.0124 19999.08984375 789abs tzuuio
LIST
10 Y=125.0123456789#
20 E$="tzuuio"
25 X#=19999.09
30 PRINT Y,X#,A$,E$
- CHDIR (utasítás):
- megváltoztatja az aktuális könyvtárat (mint a 'change directory' parancs),
pl. CHDIR x$, ahol x$ az új út.
- CHR$ (függvény):
- karaktert gyárt ASCII kódból, pl. y$=CHR$(x) jelenti azt a karaktert,
melynek ASCII táblabeli kódja x.
10 X=65
20 PRINT CHR$(X)
RUN
A
- CINT (függvény):
- egész számra konvertál, pl. y=CINT(x).
10 X=3456.123:Y=-345.123:Z=123.78:W=-123.78
20 PRINT CINT(X),CINT(Y),CINT(Z),CINT(W)
RUN
3456 -345 124 -124
- CLEAR (utasítás):
- törli a változókat, és helyet foglal a programnak és a veremnek, pl. CLEAR
[x[,y]], ahol x az adatszegmens hossza (max. 65535), y pedig a stacknek
igényelt hossz.
10 A$="asdfghkjkl"
20 PRINT "A string 10 karakter.",FRE(A$),A$
30 CLEAR
40 PRINT"A string ures.",FRE(A$),A$
50 A#=12345.567879#
60 PRINT "8 byte-os valtozoval:",FRE(A#),A#
70 CLEAR
80 PRINT "Nelkule: ", FRE(A#),A#
Ok
RUN
A string 10 karakter. 59908 asdfghkjkl
A string ures. 59915
8 byte-os valtozoval: 59903 12345.567879
Nelkule: 59915 0
- CLOSE (utasítás):
- lezárja a megnyitott eszközöket, file- okat. Alakja CLOSE [#sorsz]. Ha a
sorszám elmarad, minden nyitott csatornát lezár (akárcsak a programfutás
vége).
- CLS (utasítás):
- törli a képernyõt (akárcsak a SCREEN uta- sítás).
- COLOR (utasítás):
- beállítja a használható színeket, pl. COLOR x,y,z, ahol x az elõtér színe,
y a háttéré, z pedig a kereté. A választható színek száma függ a használt
üzemmódtól.
- COMMON (utasítás):
- a változók értékének átadását teszi lehetõvé egy láncolt (CHAIN)
programhoz. Ha minden változót át akarunk adni, használjuk az ALL opciót!
Példa: COMMON változó[,változó]. Lehetõleg a program elején használjuk!
10 COMMON A$,Y
20 C=243:B$="asdf" :A$="qwert"
30 PRINT "elso program"
40 PRINT "C="C,"B="B$,"Y="Y,"X#="X#,"A$="A$
60 CHAIN "a:lancolt.bas",10
70 PRINT A,B,C$,B$,Y,X#
RUN
elso program
C= 243 B=asdf Y= 0 X#= 0
A$=qwert
Lancolt program
Y= 125.0124 X#= 19999.08984375 A$=qwert
E$=tzuuio
C= 0
LIST
10 Y=125.0123456789#
20 E$="tzuuio"
30 X#=19999.09
40 PRINT "Lancolt program"
50 PRINT "Y="Y,"X#="X#,"A$="A$,"E$="E$,"C="C
Ok
RUN
Lancolt program
Y= 125.0124 X#= 19999.08984375 A$=
E$=tzuuio
C= 0
- CONT (utasítás):
- utasítással (STOP vagy END) illetve billentyûvel (Ctrl-Break) megszakított
program folytatását teszi lehetõvé. Közben más, közvetlen utasítások is
végrehajthatók, de a programot javítani nem szabad.
10 PRINT "Elso sor"
20 PRINT "Masodik sor"
30 PRINT "Stop.Gepeld be -CONT-!"
40 STOP
50 PRINT "Otodik sor"
Ok
RUN
Elso sor
Masodik sor
Stop.Gepeld be -CONT-!
Break in 40
Ok
cont
Otodik sor
- COS (függvény):
- koszinusz-függvény számítás, pl. y=COS(x), ahol x radiánban értendõ!
10 PI=4*ATN(1)
20 PRINT COS(PI/3)
RUN
.4999999
- CSNG (függvény):
- egyszerû pontos valós számmá redukál, pl. y=CSNG(x#).
10 X#=1234.567890123457#
20 Y=CSNG(X#)
30 PRINT X#,Y
RUN
1234.567890123457 1234.568
- CVI (függvény):
- stringet konvertál egész számmá, pl. y%=CVI(x$). Az adat belsõ ábrázolása
nem változik, csak szám típusú lesz. Az MKI$ függvény inverze! A példát lásd a
GET és CVD utasításnál. CVS (függvény): stringet konvertál valós számmá, pl.
y!=CVS(x$). Az adat belsõ ábrázolása nem változik, csak szám típusú lesz. Az
MKS$ függvény inverze! A példát lásd a GET és CVD utasításnál. CVD (függvény):
stringet konvertál duplapontos számmá, pl. y#=CVD(x$). Az adat belsõ
ábrázolása nem változik, csak szám típusú lesz. Az MKD$ függvény inverze!
10 X$="123456789012345"
20 Y%=CVI(X$):Z=CVS(X$):W#=CVD(X$)
30 PRINT X$,Y%
40 PRINT Z,W#
Ok
RUN
123456789012345 12849
9.264219E-24 1.515492070353-22
Lásd még a GET
utasítást!
- DATA (utasítás):
- konstansok programbeli tárolását teszi lehetõvé. Ld. még a READ utasítást!
- DATE$ (függvény):
- visszaadja az aktuális dátumot mm-dd-yyyy formában (hó-nap-év), de
utasításként is használható, akkor mi aktualizálhatjuk a dátumot, pl.
DATE$="01-01-1990".
- DEF FN (utasítás):
- függvénydefiníciós utasítás, pl. DEF FN2(x)=x*x. A függvény használatára
példa: PRINT FN2(z).
10 DEF FNKOCKA(A)=6*A*A
20 X=3.28:Y=442
30 PRINT X;"oldalu kocka felszine";FNKOCKA(X)
40 PRINT Y;"oldalu kocka felszine";FNKOCKA(Y)
RUN
3.28 oldalu kocka felszine 64.5504
442 oldalu kocka felszine 1172184
- DEFDBL (utasítás):
- az itt felsorolt kezdõbetûkkel jelölhetõk ki, hogy a használt változók
duplapontos típusúak legyenek, pl. DEFDBL O-T.
- DEFINT (utasítás):
- az itt felsorolt kezdõbetûkkel jelölhetõk ki, hogy a használt változók
egész típusúak legyenek, pl. DEFINT I-N.
- DEFSNG (utasítás):
- az itt felsorolt kezdõbetûkkel jelölhetõk ki, hogy a használt változók
egyszerû valós típusúak legyenek, pl. DEFSNG A-H.
- DEFSTR (utasítás):
- az itt felsorolt kezdõbetûkkel jelölhetõk ki, hogy a használt változók
string típusúak legyenek, pl. DEFSTR U,V,X-Z
- DELETE (utasítás):
- törli a program egy részét, pl. DELETE 250: egy sor törlése DELETE -250: a
program elejének törlése DELETE 250-: a program végének törlése DELETE
250-700: a program közepének törlése
- DIM (utasítás):
- helyet foglal a tömbnek, pl. DIM A(1000), B(100,100) azaz helyfoglalás
vektornak és mátrixnak.
- EDIT (utasítás):
- lehívja a program megfelelõ sorát javítás végett, pl. EDIT 150. Az
aktuális sorszám ponttal helyettesíthetõ.
- ELSE (utasítás):
- ld. az IF
utasításnál.
- END (utasítás):
- befejezi a program futtatását, lezárja a nyitott file-okat és áttér
parancs üzemmódba.
- EOF (függvény):
- megadja, hogy a lekérdezett file elérte-e már a végét (logikai), pl.
v=EOF(1).
10 OPEN "I",#1,"a:adat.dat"
20 FOR I=1 TO 100
30 INPUT#1,Y
40 PRINT EOF(1);Y ,
50 IF EOF(1) THEN GOTO 70
60 NEXT I
70 CLOSE #1
Ok
RUN
0 1 0 0 0 1 0 3 0 0
0 3 0 6 0 0 0 6 0 10
0 0 0 10 0 15 0 7 0 15
0 21 0 0 0 21 0 28 0 0
0 28 0 36 0 0 0 3 0 45
0 0 0 45 0 55 0 0 -1 55
Ok
- ERASE (utasítás):
- törli az elõírt tömböket, pl. ERASE A,B. Törlés nélkül a tömbök nem
definiálhatók újra.
10 DIM A(10,10)
20 FOR I=1 TO 10
30 FOR J=1 TO 10
40 A(I,J)=123
50 NEXT J,I
60 PRINT "Szabad byte-ok a tombbel",FRE(A)
65 DIM A(5,5)
70 ERASE A
80 PRINT "ERASE utan:",FRE(A)
90 REM Lehet ujradimenzionalni.
100 DIM A(5,5)
RUN
Szabad byte-ok a tombbel 59406
Duplicate Definition in 65
delete 65
RUN
Szabad byte-ok a tombbel 59419
ERASE utan: 59914
- ERL (függvény):
- hiba esetén a hibát okozó sor számát adja vissza.
- ERR (függvény):
- hiba esetén a hiba kódját adja vissza.
- ERROR (utasítás):
- segítségével tetszõleges kódú hibát ge- nerálhatunk a programban
(tesztcélokra), pl. ERROR 36.
10 ON ERROR GOTO 100
20 INPUT "Hanyadik honap?",N
30 IF N<1 OR N>12 THEN ERROR 210
40 END
100 IF ERR=210 THEN PRINT "A honapok szama rossz!":GOTO 900
Ok
RUN
Hanyadik honap?13
A honapok szama rossz!
- EXP (függvény):
- e alapú hatványozást végez.
10 A=1:B=COS(4*ATN(1)/2)
20 PRINT EXP(1),EXP(A),EXP(B)
RUN
2.718282 2.718282 .9999998
- FIELD (utasítás):
- véletlen file bufferéhez változókat rendel, pl. FIELD#1, 2 AS A$,3 AS B$,
ahol a file 1 sorszámmal lett megnyitva, és 5 hosszú rekordjához az A$ és B$
stringeket rendeltük.
- FILES (utasítás):
- megfelel a 'directory list' rendszerpa- rancsnak, tehát listázza a
katalógust, pl. FILES "*.BAS"
- FIX (függvény) :
- egészrészre csonkít, pl. y=FIX(x), csak negatív x-re különbözik az INT
függvénytõl.
10 X=125.2:Y=125.7:X2=-125.2:Y2=-125.7
20 PRINT FIX(X),FIX(Y),FIX(X2),FIX(Y2)
RUN
125 125 -125 -125
- FOR (utasítás):
- ciklusszervezõ utasítás, pl. FOR x=y TO z STEP q ahol x értékei a
következõk lesznek: y, y+q, y+2.q, ...,y+n.q. A cikluskezdõ FOR utasítástól a
cikluszáró NEXT z utasításig levõ utasítás-sorozatot a gép a fent felsorolt
összes x értékre végrehajtja mindaddig, míg x aktuális értéke nem haladja meg
z-t. Ha x = y + k*q > z valamely k egész szám esetén a program végrehajtása
a cikluszáró NEXT utasítást követõ programsorral folytatódik. A ciklusok
többszörösen egymásba ágyazhatók, de akkor a cikluszáró utasításoknak
fordított sorrendben kell szerepelniük. Egy NEXT utasítással több ciklus is
lezárható, pl. NEXT i,j,k formában. Ha a STEP opciót elhagyjuk, akkor a
lépésköz q=1.
10 FOR I=1 TO 4 STEP .4
20 PRINT I;
30 J=J+1
40 NEXT I
50 PRINT
60 PRINT "A ciklusvaltozo erteke a ciklus elhagyasakor";I
RUN
1 1.4 1.8 2.2 2.6 3 3.4 3.800001
A ciklusvaltozo erteke a ciklus elhagyasakor 4.200001
- FRE (függvény):
- visszadja a BASIC által még szabadon felhasználható szabad terület
nagyságát. Pl. PRINT FRE(X). Ha az argument string típusú, akkor az eredmény
közlése elõtt a BASIC adattömörítést végez, hogy a közben felszabadult
stringterületeket is elérhesse.
- GET (utasítás):
- beolvas egy rekordot egy véletlen elérésû file-ról. Pl. GET#1,n ; azaz
beolvassa az 1-re megnyitott file n-dik rekordját a FIELD utasítás kijelölte
bufferbe.
10 OPEN "R",#1,"vletlen.fle",40
20 FIELD #1,10 AS NEV$,15 AS SZEMSZ$,5 AS IR$,5 AS BER$
30 FOR I=4 TO 2 STEP -1
100 GET #1,I
110 PRINT NEV$,CVD(SZEMSZ$),CVI(IR$),CVS(BER$)
120 NEXT I
Ok
RUN
Nemeth 28509234567 9400 88.8
Molnar 18201175678 8777 99.90
Szabo 28305153456 8000 675.5
- GOSUB (utasítás):
- szubrutinhívást tesz lehetõvé egy adott címkére, melynek végrehajtása után
a RETURN utasítás hatására ugrik vissza a GOSUB utasítást követõ utasításra.
10 DIM A(5)
20 FOR I=1 TO 5
40 A(I) =I
50 NEXT I
60 PRINT "1.szubrutinhivas";:GOSUB 200
70 PRINT " Vissza 1" :A(4)=100
80 PRINT "2. szubrutinhivas";:GOSUB 200
110 PRINT " Vissza 2" :A(2)=200
120 PRINT "3.szubrutinhivas";:GOSUB 200
130 PRINT " Vissza 3"
140 END
200 FOR I=1 TO 5
210 PRINT A(I);
220 NEXT I
240 RETURN
RUN
1. szubrutinhivas 1 2 3 4 5 Vissza 1
2. szubrutinhivas 1 2 3 100 5 Vissza 2
3.szubrutinhivas 1 200 3 100 5 Vissza 3
- GOTO (utasítás):
- feltétlen ugró utasítás, pl. GOTO 490.
- HEX$ (függvény):
- létrehoz egy stringet, mely az argumentum hexadecimális alakját
tartalmazza, pl. y$=HEX$(x).
10 X=123.16 :Y$=HEX$(X)
20 PRINT Y$
RUN
7B
- IF (utasítás):
- feltételes programelágazást tesz lehetõvé.
Alakja: IF kifejezés THEN utasítások [ELSE utasítások] ; vagy IF kifejezés
GOTO címke [ELSE utasítások] ; ahol a 'kifejezés' egy logikai kifejezést, az
'utasítás' pedig egy BASIC parancssort jelent. Mûködése: ha a logikai
kifejezés értéke igaz, akkor a végrehajtás a 'címke' soron folytatódik, ill. a
THEN-t követõ utasítások kerülnek végrehajtásra, egyébként pedig az ELSE-t
követõ utasításokat hajtja végre a gép.
10 IF x=x THEN PRINT "Ezeket az utasitasokat hajtja vegre
1." :I=I+1:PRINT "Kovetkezo utasitasra lep." ELSE PRINT
"Ezeket
nem.":Z=0
20 IF 0 THEN PRINT "Ezeket nem hajtja vegre":X=ATN(1)
ELSE PRINT "Ezeket hajtja vegre.":Y=123
RUN
Ezeket az utasitasokat hajtja vegre 1.
Kovetkezo utasitasra lep.
Ezeket hajtja vegre.
- INKEY$(függvény):
- a billentyûzeten megnyomott karaktert adja vissza. Ha nem történt
billentyûmegnyomás, akkor eredményül az üres stringet adja.
10 PRINT "Nyomjon meg egy billentyut!"
20 A$=INKEY$:IF A$="" THEN GOTO 20
30 PRINT A$
Ok
RUN
Nyomjon meg egy billentyut!
g
- INPUT (utasítás):
- A billentyûzetrõl olvas be értékeket a felsorolt változókba. Alakja: INPUT
["szöveg";]változó-lista. Ha a "szöveg" opciót használjuk, akkor a képernyõn a
szöveg megjelenik, és a beolvasás csak utána indul. A megnyomott billentyûknek
megfelelõ karakterek a képernyõn is megjelennek! Ha egy utasítással több
változóhoz olvasunk be értéket, akkor a begépelt értékeket vesszõvel válasszuk
el. Amennyiben a begépelt adatok nincsenek összhangban (számban vagy típusban)
a változólistával, akkor '?Redo from start' hibajelzéssel válaszol, mely után
az adatbevitelt meg kell ismételni.
10 INPUT "Adj meg egy valos szamot es egy stringet!";A,B$
20 PRINT "A valtozok erteke:", A,B$
Ok
RUN
Adj meg egy valos szamot es egy stringet!? 34
?Redo from start
Adj meg egy valos szamot es egy stringet!? "string"
?Redo from start
Adj meg egy valos szamot es egy stringet!? "ez is",34
?Redo from start
Adj meg egy valos szamot es egy stringet!?
12345.678,ezisstring
A valtozok erteke: 12345.68 ezisstring
- INPUT# (utasítás):
- adatokat olvas be megnyitott szekvenciális file-ról vagy eszközrõl.
Alakja: INPUT#file-szám, változólista
10 OPEN "I",#1,"adat.dat"
20 INPUT #1,X,B$,Y
30 PRINT"1. beolvasas:" X,B$,Y
40 INPUT #1,X,B$,Y
50 PRINT"2. beolvasas:", X,B$,Y
RUN
1. beolvasas: 1 1 1
2. beolvasas: 3 12 3
- INPUT$ (utasítás):
- adott számú byte-ot olvas be egy megnyitott file-ról vagy eszközrõl.
Alakja: y$=INPUT$(byteszám, file-szám)
10 OPEN "I",#1,"adat.dat"
20 Y$=INPUT$(7,#1)
30 PRINT y$
RUN
1,"1",1
- INSTR (függvény):
- Alakja: v=INSTR([n,]x$,y$) Hatása: megkeresi y$ string elsõ elõfordulását
x$-ban, annak n-dik karakterétõl kezdve, és v-be kerül azon pozíció sorszáma,
ahol megtalálta, vagy 0, ha bármely okból a keresés nem volt sikeres.
10 A$="9876543abcd3456"
20 V=INSTR(A$,"3"):W=INSTR(8,A$,"3")
30 PRINT V,W
RUN
7 12
- INT (függvény):
- egészrész függvényt számol, pl. y=INT(x).
10 x=12.4:y=12.7:x2=-12.4 :y2=-12.7
20 PRINT int(x), int(y), int(x2), int(y2)
RUN
12 12 -13 -13
- KILL (utasítás):
- Megegyezik a 'delete file' rendszerpa- ranccsal, vagyis file-törlésre
használható, és ugyanúgy lehet paraméterezni is, pl. KILL "*.OBJ"
- LEFT$ (függvény):
- Hívása:y$=LEFT$(x$,n). Funkciója: y$-ba teszi az x$ n hosszú baloldali
rész-stringjét.
10 a$="123abc"
20 PRINT LEFT$(A$,2),LEFT$(A$,4)
RUN
12 123a
- LEN (függvény):
- meghatározza a string hosszát, pl. y=LEN(x$).
10 x$="123abc":y$="12v"
20 PRINT len(x$),len(y$)
RUN
6 3
- LET (utasítás):
- az értékadó utasítás [elhagyható] kulcs- szava. Hívása: LET y=kifejezés.
10 let x=123.4
20 x2=123.4
30 let y =4*atn(1)
40 y2=4*atn(1)
50 PRINT x,x2,y,y2
RUN
123.4 123.4 3.141593 3.141593
- LINE INPUT (utasítás):
- egy egész (Enterrel lezárt) sort olvas a billentyûzetrõl egy
stringváltozóba. A billen- tyûzött karakterek a képernyõn is megjelennek.
Alakja: LINE INPUT ["üzenet";] x$.
10 rem Pelda INPUT-ra.
20 INPUT "Adjon egy karaktersort!",a$
30 rem Pelda LINE INPUT-ra.
40 line input "Adjon egy karaktersort 2!",b$
50 PRINT "1.sor",a$
60 PRINT "2.sor",b$
RUN
Adjon egy karaktersort! akarmi es vesszo,
?Redo from start
Adjon egy karaktersort! akarmi es
Adjon egy karaktersort 2! akarmi es vesszo,
1.sor akarmi es
2.sor akarmi es vesszo,
- LINE INPUT# (utasítás):
- egy egész (Enterrel lezárt) sort olvas a file-ról egy stringváltozóba.
Alakja: LINE INPUT#fileszám, x$.
10 DIM H$(10)
20 OPEN "i" ,#1,"a:hput"
25 REM Beolvasunk egy programot,melyet hardcopy-val
mentettunk el.
30 FOR I=1 TO 10
40 LINE INPUT# 1,H$(I)
50 NEXT I
60 FOR I=1 TO 10
70 PRINT H$(I)
80 NEXT I
RUN
LIST 10-800
10 OPEN "r",#1,"veletlen.fle",40
20 FIELD #1,15 AS NEV$,20 AS CIM$,5 AS TEL$
30 FOR I=3 TO 1 STEP -1
40 INPUT "NEV;CIM;TELEFON",N$,C$,T$
50 LSET NEV$=N$:LSET CIM$=C$:LSET TEL$=T$
60 REM A FIELD mezökre nem történhet beolvasás.
70 PUT #1,I
80 REM Az i. rekordot töltjük fel .
90 NEXT I
- LIST (utasítás):
- listázza a memóriában levõ program adott részletét. Alakja: LIST [line1]
[-[line2]]. Pl. LIST 45; egy sort listáz LIST 45-; a program végét listázza
LIST -45; a program elejét listázza LIST 45-350 ; a program közepét listázza
LIST ; az egész programot listázza
- LLIST (utasítás):
- ugyanaz, mint LIST, csak a lista nem képernyõre, hanem nyomtatóra kerül.
- LOAD (utasítás):
- beolvas [és futtat] file-ról egy programot. Alakja: LOAD file-név [,R] ;
pl. LOAD "A:\ENYEM\PROBA". Ha az 'R' opciót megadtuk, akkor a betöltés után a
program azonnal futni kezd.
- LOC (függvény):
- visszaadja az aktuális, file-on belüli pozíciót. Hívása: v=LOC (fileszám).
- LOCATE (utasítás):
- a cursort pozícionálja az aktív képer- nyõn, de paraméterei segítségével
szabályozhatja a cursor méretét, villogását is: LOCATE sor, oszlop, cursor,
start, stop. Ha cursor=0, akkor nem látszik, és a cursor függõleges méretét a
0 < start, stop < 32 paraméterek állítják be.
LIST
10 LOCATE 13,20
20 PRINT "13.sor 20.oszlop"
30 LOCATE,,1
40 INPUT K
50 LOCATE 25,1
60 PRINT "Utolso sor"
70 LOCATE 20,,,1,7
Ok
RUN
13.sor 20.oszlop
? 4
Ok
- LOF (függvény):
- a megnyitott file hosszát adja vissza, pl. v=LOF(1). Ha a függvényt COM:
perifériához használjuk, akkor értéke a szabad helyek száma az input
buffer-ban.
10 OPEN "I",#1,"a:adat.dat"
20 PRINT "A file hossza!",lof(1)
30 CLOSE #1
RUN
A file hossza! 150
- LOG (függvény):
- természetes alapú logaritmust számol, pl. y=LOG(x).
10 PRINT exp(log(exp(1)))
RUN
2.718282
- LPOS (függvény):
- a nyomtatófej aktuális pozícióját adja az LPT1: printer bufferében.
10 FOR I=1 TO 10
20 LPRINT "1234567890";LPOS(0);
30 IF LPOS(0)>45 THEN LPRINT
40 NEXT I
50 REM Ha a sor hossza nagyobb,mint 45 ,uj sort kezd a
nyomtato.
- LPRINT (utasítás):
- ld. a PRINT utasításnál, az eltérés csak az, hogy a lista nem képernyõre,
hanem a nyomtatóra kerül.
- LPRINT USING (utasítás):
- ld. a PRINT USING utasításnál, az eltérés csak az, hogy a lista nem
képernyõre, hanem a nyomtatóra kerül.
- LSET (utasítás):
- adatot tölt stringváltozóba annak elmozdítása nélkül. Egyszerû értékadás
(LET) esetén a stringváltozó minden értékadáskor új helyre kerül, ami
megengedhetetlen un. FIELD változók esetében, mert a buffer helye futás közben
nem változhat. Az LSET a stringet balra tömörítve teszi le, és a kimaradt
jobboldali pozíciókba szóközt tölt. Pl. LSET y$=x$. Lásd még PUT utasítást!
- MERGE (utasítás):
- a memóriában levõ BASIC programot egy ASCII file-on tárolt másik
programmal egészíti ki. A mûvelet csak akkor sikerülhet, ha a beolvasandó
program-file-t az ',A' opcióval mentettük ki (ld. SAVE)!
10 OPEN "O",#1,"adat.dat"
20 FOR I=1 TO 10
30 A=A+I:B$=B$+HEX$(I): C=C+I
40 WRITE#1,A,B$,C
50 NEXT I
60 CLOSE
Ok
MERGE"a:amerglt"
Ok
LIST 70-800
200 OPEN "I",#1,"adat.dat"
210 INPUT #1,X,B$,Y
220 PRINT"1. beolvasas:" X,B$,Y
230 INPUT #1,X,B$,Y
240 PRINT"2. beolvasas:", X,B$,Y
Ok
RUN
1. beolvasas: 1 1 1
2. beolvasas: 3 12 3
Ok
- MID$ (függvény):
- egy rész-stringet ad vissza. Hívása: y$=MID$(x$,n[,m]) ; ahol y$ az x$
azon rész-stringje lesz, amely az n-dik pozíción kezdõdik és m karakter
hosszú. 0 < n,m < 256 feltételnek teljesülnie kell.
10 A$="123456789asd"
20 PRINT MID$(A$,3,5),MID$(A$,9,3)
Ok
RUN
34567 9as
- MKDIR (utasítás):
- megegyezik a 'make directory' rendszer- paranccsal, vagyis alkönyvtár
létesítésére használható. Hívása: MKDIR ut ; pl. MKDIR "sales\mike".
- MKD$ (függvény):
- duplapontos számkifejezést 8 byte-os stringbe konvertál. A belsõ ábrázolás
tulajdonképpen nem változik, csak számból string típus lesz. Pl.
y$=MKD$(x#).Lásd még PUT utasítást!
10 x#=123456789.12345#
20 y$=mkd$(x#)
30 PRINT y$,len(y$)
RUN
jM_úóyk˘ 8
- MKI$ (függvény):
- egész típusú számkifejezést 2 byte-os stringbe konvertál. A belsõ
ábrázolás tulajdonképpen nem változik, csak számból string típus lesz. Pl.
y$=MKI$(x%).Lásd még PUT utasítást!
10 x%=12345
20 y$=mki$(x%)
30 PRINT y$, len(y$)
RUN
90 2
- MKS$ (függvény):
- valós típusú számkifejezést 4 byte-os stringbe konvertál. A belsõ
ábrázolás tulajdonképpen nem változik, csak számból string típus lesz. Pl.
y$=MKS$(x). Lásd még PUT
utasítást!
10 x=12345.678
20 y$=mks$(x)
30 PRINT y$ ,len(y$)
RUN
µ@Ä 4
- NAME (utasítás):
- megegyezik a 'rename file' rendszerpa- ranccsal, tehát file átnevezésére
használható. Hívása: NAME oldfile_name AS newfile_name ;
- NEW (utasítás):
- törli a memóriában levõ programot. Mellékesen lezárja az esetleg nyitott
file-okat is.
- OCT$ (függvény):
- egész (decimális) számkifejezés oktális (8- as számrendszerbeli)
megfelelõjét teszi stringbe. Pl. v$=OCT$(24).
10 x=64
20 x$=oct$(x)
30 PRINT x$
RUN
100
- ON ERROR (utasítás):
- hiba fellépése esetén elugrik a kijelölt címkére. Hívása: ON ERROR GOTO
címke. Ld. még a RESUME utasítást.
10 ON ERROR GOTO 100
80 F$=123
90 END
100 PRINT "Hibakod!";ERR;"A"; ERL;"programsorban!":RESUME
1000
Ok
RUN
Hibakod! 13 A 80 programsorban!
- ON ... GOSUB (utasítás):
- programkapcsoló utasítás. A felsorolt címkék közül annyiadikra ugrik
(szubrutin- hívással), amit a kifejezés definiál. Hívása: ON kifejezés GOSUB
címkelista.
10 INPUT "Hányadik rutin müködjön?",K
20 ON K GOSUB 50,80, 110
30 PRINT "Itt folytatódik." ,X,Y,W
40 END
50 PRINT "1. rutin"
60 X=X+1
70 RETURN
80 PRINT "2. rutin"
90 Y=125
100 RETURN
110 PRINT "3. rutin"
120 W=ATN(1)
130 RETURN
Ok
RUN
Hányadik rutin müködjön? 2
2. rutin
Itt folytatódik. 0 125 0
- ON ... GOTO (utasítás):
- a felsorolt címkék közül annyi- adikra ugrik, amit a kifejezés definiál.
Programkapcsoló utasítás. Hívása: ON kifejezés GOTO címkelista.
10 INPUT "Legyen 1<=k<4 :",K
20 ON INT(K) GOTO 50 ,100,150
30 PRINT "Nincs visszatérés."
40 STOP
50 PRINT "1. cím":END
100 PRINT "2. cím":END
150 PRINT "3. cím":END
Ok
RUN
Legyen 1<=k<4 :2
2. cím
Ok
RUN
Legyen 1<=k<4 :3.456
3. cím
Ok
- OPEN (utasítás):
- lehetõvé teszi file vagy eszköz megnyi- tását írásra illetve olvasásra.
Kétféleképpen adható ki: OPEN filenév [FOR mode] AS [#]fileszám[,LEN=rekhossz]
ahol mode={APPEND, INPUT, OUTPUT, RANDOM}, és LEN csak akkor definiálandó, ha
a file random elérésû. OPEN mode, [#]fileszám, filenév [,rekhossz] ahol
mode={A, I, O, R}, és rekhossz pontosan akkor definiálandó, ha mode=R. Filenév
eszköz is lehet, pl. PRN:, LPT1:, COM1:, SCRN:, Lásd még INPUT , GET , PUT
utasításokat! NUL: (ez az üres eszköz, tényleges transzfer nem történik). Ha
az eszköz a kommunikációs csatorna (COM1: vagy COM2:), akkor a filenévben
egyéb feltételeket is rögzítenünk kell:
COMn:[v][,paritás][,adatbit][,stopbit][,RS][,CSn][,DSn][,CDn ][,LF][,PE] ahol
v={75,110,150,300,600,1200,1800,2400,4800,9600} baud, paritás ={S,O,M,E,N},
adatbit ={5,6,7,8}, stopbit ={1,2} a CS, DS, CD opciók paraméterei
millisec-ben értendõk, azaz ennyit vár a gép probléma esetén hibajelzés
nélkül.
- OPTION BASE (utasítás):
- ezen utasítással jelölhetõ ki, hogy a továbbiakban definiált tömbök
indexelése 0-val vagy 1-gyel kezdõdjön. Hívása: OPTION BASE n ; n={0,1}.
- PEEK (függvény):
- kiolvassa a memória adott byte-ját. Hívása: y=PEEK(x) ahol x a kért byte
címének távolságát definiálja a DEFSEG utasításban meghatározott
szegmens-címtõl.
10 DEF SEG=0
20 PRINT PEEK(1200)
30 POKE 1200,65
40 PRINT PEEK(1200)
Ok
RUN
0
65
- POKE (utasítás):
- egy byte-ot ír a memóriába. Hívása: POKE n,m. Az m számot írja a memória
azon byte-jába, melynek címe a DEFSEG definiálta szegmensen belül n. Lásd még
PEEK utasítást! POS (függvény): visszaadja a cursor aktuális oszloppozí-
cióját. Hívása: v=POS(0). Ld. még CSRLIN címszónál!
- PRINT (utasítás):
- képernyõre ír. Hívása: PRINT kifejezés- lista[;]. Az egyes kifejezések
vesszõvel vagy pontosveszszõvel választandók el egymástól, ettõl függ, hogy a
képen egymástól milyen távol íródnak. Ha az utolsó listaelemet is vesszõ vagy
pontosvesszõ követi, akkor a következõ PRINT nem kezd új sort, hanem az elõzõt
folytatja, feltéve, hogy tudja (ld. még a WIDTH
utasítást).
10 PRINT "a","B";"C";
20 PRINT "Nincs uj sor."
RUN
a BCNincs uj sor.
- PRINT USING (utasítás):
- funkciója mint a PRINT-nek, de a nyomtatási kép jobban befolyásolható (pl.
hány jegy pontosan írjunk ki egy számot). Hívása: PRINT USING
v$;kifejezés-lista[;]. A v$ string tartalmazza a formázási parancsot; string
mezõk: ! csak a string elsõ karakterét nyomtassa, \n szóköz\ a string n+2
karakterét nyomtassa, & a string teljes hosz- szában nyomtatásra kerül,
szám mezõk: # számjegy pozíció jelölése - mindig kitöltõdik, + hatására a szám
(kezdõ vagy záró) elõjellel kerül nyomtatásra, a jelnek a formátum string
elején vagy végén kell állnia!
- -
- a formátum string végére írandó, hatására a negatív számok végére íródik
az elõjel.
- **
- hatására a számkezdõ szóközök csillaggal töltõdnek fel - a formátum
hosszába is beszámít!
- $$
- hatására a közvetlenül a kiírt szám elé egy '$' jel íródik.
- ,
- ha a tizedesponttól balra szerepel, akkor a kiírt számba 3 tizedes
jegyenként egy vesszõ kerül. Ha a vesszõ a formátum string végén szerepel,
akkor egyszerûen a szám után íródik.
- ^^^^
- hatására (a formátum string végén) a szám exponen- ciális formában kerül
kijelzésre.
- _
- hatására a formátum string következõ karaktere közvetlenül kiírásra
kerül.
10 A$="KONYV" :A=55 :DB=22
20 PRINT USING "Tétel:\ \ Ar:###.##Ft Mennyiség:"+
"**# Erték:**####,.##Ft";A$,A,DB,A*DB
RUN
Tétel:KONYV Ar: 55.00Ft Mennyiség:*22
Erték:**1,210.00Ft
- PRINT# (utasítás):
- ugyanaz, mint a PRINT, csak nem a kép- ernyõre kerül a lista, hanem az
adott számon megnyitott file-ba. Hívása: PRINT# fileszám, kifejezés-lista[;].
- PRINT# USING (utasítás):
- ugyanaz, mint a PRINT USING, csak nem a képernyõre kerül a lista, hanem az
adott számon megnyitott file-ba. Hívása: PRINT#fileszám,USING
v$;kifejezés-lista[;].
- PUT (utasítás):
- egy rekordot ír a random (véletlen elérésû) file-ba. Hívása elõtt ne
felejtsük el feltölteni a FIELD utasítással kijelölt buffert. Hívása:
PUT#fileszám[,rekordsorszám] Ha a rekordsorszám opciót elhagyjuk, akkor a
soron követ- kezõ rekordba ír (mint szekvenciális file-nál). Ha az utasítást
COMn eszközre használjuk, akkor az opcionális paraméter nem rekordsorszámot
jelent, hanem az utasítással kiírandó byte-ok számát - de ez nem lépheti túl
az OPEN-ben elõírt rekordhosszat.
10 OPEN "R",#1,"vletlen.fle",40
20 FIELD #1,10 AS NEV$,15 AS SZEMSZ$,5 AS IR$,5 AS BER$
30 FOR I=1 TO 4
40 INPUT "NEV,SZEMELYSZ,IRANYITOSZ,BER",N$,SZ#,I%,B
50 LSET NEV$=N$:LSET SZEMSZ$=MKD$(SZ#):LSET IR$=MKI$(I%)
60 LSET BER$=MKS$(B)
70 REM A FIELD mezokre nem tortenhet beolvasas.
80 REM Ezert hasznaljuk LSET utasitast.
90 REM Randomfile-ba csak stringet irhatunk.
100 REM Ezert hasznaljuk mki$-t,mks$-t.mkd$-t.
110 PUT #1,I
115 REM Az i. rekord feltoltese
120 NEXT I
Ok
RUN
NEV,SZEMELYSZ,IRANYITOSZ,BERHorvat,28308122345,9000,625.7
NEV,SZEMELYSZ,IRANYITOSZ,BER Szabo,28305153456,8000,675.5
NEV,SZEMELYSZ,IRANYITOSZ,BER Molnar,18201175678,8777,99.9
NEV,SZEMELYSZ,IRANYITOSZ,BER Nemeth,28509234567,9400,88.8
- RANDOMIZE (utasítás):
- a véletlenszám-generálás kezdõérté- kének kijelölését teszi lehetõvé.
Hívása: RANDOMIZE n. Korlát: -32769 < n < 32768. Ha valódi véletlen
sorozattal akarunk dolgozni, használjuk a kezdõérték-kijelöléshez a TIMER
függvényt.
- READ (utasítás):
- Funkciója: adatbeolvasás DATA sorokból, és változókhoz rendelése. Hívása:
READ változólista. Hibajelzést akkor kaphatunk, ha az éppen beolvasott adat
típusa nem egyezik a változó típusával, illetve ha a DATA sorokból az adatok
elõbb elfogynak, mint a változók. Ld. még a RESTORE
utasítást!
10 DATA 1,2,6,8,10 ,"A","B",12c",2.7,123456.987651#
20 DATA 1.419,5.678
30 READ A,B,C,D%,E%
40 READ F$,G$
50 READ H$,J,K#,L,M
60 REM Minden változó azt a DATA elemet kapja értékül
,melynek sorszáma a leírás sorrendjében ugyanaz
,mint a változó sorszáma a leírás sorrendjében.
70 REM Mindkét sorszám független attól,hogy hány DATA-ban
,ill READ-ben történik a leírás.
120 RESTORE 20
130 READ N,P
140 PRINT A,B,C,D%
150 PRINT E%,F$,G$
160 PRINT H$,K#,J
170 PRINT L,M,N,P
RUN
1 2 6 8
10 A B
12c" 123456.987651 2.7
1.419 5.678 1.419 5.678
- REM (utasítás):
- Hatása: az utasítás mögötti részt a BASIC már nem értelmezi, megjegyzésnek
nyilvánítja. Helyettesít- hetõ a ' jellel is - kivéve a DATA sorokat!
- RENUM (utasítás):
- átsorszámozza a BASIC programot. Hívása: RENUM [kezdõ sorszám][,[induló
sorszám],növekmény] A programot az 'induló sorszám' sorától kezdve átsorszá-
mozza úgy, hogy az elsõnek átírt sor új sorszáma 'kezdõ sorszám' legyen, és a
sorszámok egyenletesen, a 'növekménnyel' nõjenek. A 'kezdõ sorszám' és a
'növekmény' alapértelmezése 10, az 'induló sorszám 'kezdõértéke pedig a
program elsõ sora.
- RESTORE (utasítás):
- a READ utasítás pointerét egy másik BASIC sorra állítja, vagyis
segítségével felülbírálható a DATA sorok beolvasásának sorrendje. Hívása:
RESTORE [sorszám]; ahol 'sorszám' alapértelmezése a program elsõ sora.
- RESUME (utasítás):
- Ha hiba hatására a program egy ON ERROR GOTO ... utasítást hajt végre,
akkor a hibakezelõ programrészt a RESUME utasítással kell lezárni, mellyel
elõírhatjuk, hol folytatódjék a program: RESUME 0; a program a hibás
utasításon folytatódik, RESUME NEXT; a program a hibás utasítást követõ
utasításon folytatódik, RESUME sorszám; a program a megjelölt sorszámú
utasításnál folytatódik.
- RETURN (utasítás):
- GOSUB utasítással meghívott program- részletbõl ezen utasítással térhetünk
vissza a hívás he- lyére (vagy az elõírt sorszámú utasításra).
Alkalmazása:RETURN [sorszám].
- RIGHT$ (függvény):
- Hívása:y$=RIGHT$(x$,n). Funkciója: y$-ba teszi az x$ n hosszú jobboldali
rész-stringjét.
10 A$="123456asdf"
20 PRINT RIGHT$(A$,3),RIGHT$(A$,6)
RUN
sdf 56asdf
- RMDIR (utasítás):
- megegyezik a 'remove directory' rendszerparanccsal, tehát meglevõ (de
üres) alkönyvtár törlésére használható. Hívása: RMDIR ut ; pl. RMDIR
"\sales\mike".
- RND (függvény):
- {0,1}-beli, egyenletes eloszlású véletlen számot ad vissza. Ha az
argumentuma 0, akkor az elõzõ hívás eredményét ismétli meg, egyébként pedig a
leprogramozott sorozat következõ tagját szolgáltatja (hogy a sorozat honnan
induljon, az a RANDOMIZE utasítással szabályozható).
10 INPUT"Adjon meg egy egesz szamot!", K%
20 RANDOMIZE K%
30 PRINT RND(0),RND(0),RND(0)
40 FOR I=1 TO 3
50 PRINT RND(I);
60 NEXT I
RUN
Adjon meg egy egesz szamot!5
.524762 .524762 .524762
3.537536E-02 .9370679 .8688921
Ok
RUN
Adjon meg egy egesz szamot!9
.5870789 .5870789 .5870789
.6609247 .62292 .1238359
- RSET (utasítás):
- mint az LSET, de most jobbra tömörít, és a baloldalt egészíti ki
szóközzel.
- RUN (utasítás):
- programindító utasítás, több formában is kiadható: RUN [sorszám];
elindítja a memóriában levõ programot (az elõírt utasítástól vagy) elölrõl,
RUN filenév[,R]; betölti a kijelölt programot és elindítja. Ha megadtuk az R
opciót, akkor a nyitott file-okat nem zárja le.
- SAVE (utasítás):
- file-ba menti a memóriában levõ BASIC programot. Hívása: SAVE filenév
[,A][,P]. Ha megadjuk az ',A' opciót, akkor a program ASCII formátumban kerül
men- tésre (vagyis más szövegszerkesztõvel is tanulmányozható marad), és csak
az így mentett file lehet késõbb MERGE u- tasítás paramétere! Ha a 'P' opciót
használjuk, akkor a program újratöltés után már csak futtatható lesz, de
belenézni, javítani már nem lehet, mert titkosított (protec- ted)!
- SGN (függvény):
- az argumentum elõjelfüggvénye. Hívása: v=SGN(x).
10 x=-4.2 :y=0 :z=4.2
20 PRINT sgn(x),sgn(y),sgn(z)
RUN
-1 0 1
- SHELL (utasítás):
- segítségével léphetünk ki az operációs rendszer szintjére egy parancs
küldésének erejéig. Hívása: SHELL parancs ; Problémát okozhatnak a már
megnyitott file- ok, és ha BASIC programunk vagy a meghívott parancs túl sok
memóriát igényel. Pl. SHELL "copy a: b:".
- SIN (függvény):
- szinuszfüggvény számítás, pl. y=SIN(x), ahol x radiánban értendõ!
10 PRINT 2*SIN(4*ATN(1)/3)
Ok
RUN
1.732051
- SPACE$ (függvény):
- elõírt hosszú, csupa szóköz stringet gyárt. Hívása: v$=SPACE$(n).
10 PRINT "AKARMI"+space$(5)+"valami"
RUN
AKARMI valami
- SPC (függvény):
- a PRINT utasításban alkalmazható, hatására a nyomtatófej n pozíciót
(szóközt) elõre lép. Hívása: PRINT ...;SPC(n);...
10 PRINT "1234567890";spc(10);"1234567890"
20 PRINT spc(10);"1234567890"
RUN
1234567890 1234567890
1234567890
- SQR (függvény):
- négyzetgyök függvény. Hívása: v=SQR(x).
10 a=1:c=2:b=4
20 PRINT "DISZKRIMINANS",sqr(b^2-4*a*c)
RUN
DISZKRIMINANS 2.828427
- STEP (utasítás):
- ld. a FOR
utasítást!
- STOP (utasítás):
- megszakítja a program futását, és áttér parancs üzemmódba. Az END-tõl
eltérõen a nyitott file-okat nem zárja le, és a program a CONT utasítással
újraindítható.
- STR$ (függvény):
- az argumentumában szereplõ kifejezés string-képét adja vissza. Hívása:
v$=STR$(kifejezés).
10 x=127.48:v$=str$(x)
20 PRINT str$(x)+space$(5)+v$
RUN
127.48 127.48
- STRING$ (függvény):
- Hívása: v$=STRING$(n,m) vagy v$=STRING$(n,x$) n hosszú, azonos (m ASCII
kódu vagy x$) karakterekbõl álló stringet hoz létre.
10 PRINT string$(10,65),string$(7,"A")
RUN
AAAAAAAAAA AAAAAAA
- SWAP (utasítás):
- felcseréli két változó tartalmát. Hívása: SWAP változó1, változó2;
feltétel, hogy a változók azonos típusúak legyenek!
10 x=121:y=442
20 swap x,y
30 PRINT "x="x,"y="y
RUN
x= 442 y= 121
- SYSTEM (utasítás):
- hatására a vezérlés kilép a BASIC-bõl, és visszaadódik az operációs
rendszernek. A megnyitott file- okat lezárja, a memóriában található program
elveszik.
- TAB (függvény):
- PRINT utasításban alkalmazható a nyomtatási pozíció kijelölésére, pl.
PRINT TAB(N);
10 FOR I=0 TO 5
20 PRINT TAB(20-I) STRING$(I*2+1,"X")
30 NEXT I
RUN
X
XXX
XXXXX
XXXXXXX
XXXXXXXXX
XXXXXXXXXXX
Ok
- TAN (függvény):
- tangensfüggvény számítás, pl. y=TAN(x), ahol x radiánban értendõ!
10 PRINT TAN(ATN(1)),TAN(4*ATN(1)/3)
RUN
1 1.732052
- TIME$ (függvény):
- a rendszeróra állását adja vissza hh:mm:ss formában (óra:perc:sec). Pl.
v$=TIME$.
10 v$=time$
20 PRINT v$
RUN
13:32:16
- TIMER (függvény):
- az éjfél (vagy az utolsó system reset) óta eltelt idõt adja vissza
másodpercben, két tizedes jegyre.
10 PRINT timer
RUN
12543.88
Ok
RUN
12559.75
Ok
RUN
12584.58
- TRON (utasítás):
- bekapcsolja a nyomkövetést, azaz a parancs kiadása után a programfutás a
képernyõn nyomon követhetõ, mert az éppen végrehajtott utasítás sorszáma
kiíródik.
- TROFF (utasítás):
- kikapcsolja a nyomkövetést.
- VAL (függvény):
- egy stringben tárolt szám numerikus értéket adja vissza. Hívása:
v=VAL(x$).
10 x$="1234.56"
20 xv=val(x$)
30 PRINT xv
RUN
1234.56
- VARPTR (függvény):
- visszaadja egy változó címének offset (eltolás) részét az aktuális
memória-szegmenshez viszo- nyitva.
10 x=127.5 :y=237
20 PRINT varptr(x),varptr(y)
RUN
3056 3064
- WEND (utasítás):
- ld. a WHILE
utasítást!
- WHILE (utasítás):
- ciklikusan hajt végre egy WHILE és WEND közötti utasítás-sorozatot,
mindaddig, mig a WHILE-ban elõírt feltétel igaz. Hívása: WHILE kifejezés .....
WEND
10 WHILE I<10
20 PRINT "Ez a ciklusmag",I
30 I=I+3
40 WEND
50 PRINT "Lejart a ciklus",I
RUN
Ez a ciklusmag 0
Ez a ciklusmag 3
Ez a ciklusmag 6
Ez a ciklusmag 9
Lejart a ciklus 12
- WIDTH (utasítás):
- beállítja az output eszköz sorszélességét (ennek elérése után
automatikusan soremelés történik). Hívása: WIDTH hossz vagy WIDTH
fileszám,hossz vagy WIDTH eszköz,hossz ; ahol eszköz lehet: SCRN:, PRN:,
LPT1:, LPT2:, COM1:, COM2:.
- WRITE (utasítás):
- lényegében úgy mûködik, mint a PRINT, csak a kiírt számok közé vesszõt
tesz, a stringeket pedig idézõjelbe írja. Hívása: WRITE kifejezéslista.
10 x=115:y#=123457.98765#:y$="qwe"
20 write "Ez megjegyzes .",x,y#,y$
RUN
"Ez megjegyzes .",115,123457.98765,"qwe"
- WRITE# (utasítás):
- ld. WRITE,
de a lista nem képernyõre, hanem egy megnyitott file-ra (eszközre) kerül.
Hívása: WRITE# fileszám, kifejezés-lista.
Hibakódok és üzenetek
- NEXT without FOR; a NEXT utasításnak nincs FOR párja, a ciklusba a
vezérlés nem a ciklus kezdõ utasításán át ke-rült.
- Syntax error; a READ utasítás számváltozóba nem tud stringet olvasni.
- RETURN without GOSUB; a program GOSUB utasítás nélkül jutott egy szubrutin
belsejébe.
- Out of data; a READ utasítás nem tud végrehajtódni, mert elfogytak a DATA
sorokba írt adatok.
- Illegal function call; mindannyiszor ez a hibajelzés, valahányszor egy
függvényt vagy utasítást hibás (rossz típus vagy érték) paraméterekkel
próbálunk meghívni.
- Overflow; Az aritmetikai mûvelet eredménye túllépte a változó típusának
megfelelõ határértéket.
- Out of memory; elfogyott a szabad memória-terület: ez a hibajelzés
sokféleképpen jöhet létre, pl. tömbdeklarációnál is.
- Undefined line number; a program egy olyan címkére hivatkozik (pl. egy
GOTO utasításban), amilyen nem léte-zik.
- Subscript out of range; egy tömbelemre hivatkozáskor túl nagy indexet
használtunk, ami nem felel meg a tömbdeklaráló DIM utasításnak.
- Duplicate definition; ismételten megpróbáltunk egy tömböt deklarálni
anélkül, hogy elõzõleg az ERASE utasítással töröltük volna.
- Division by zero; nullával való osztást kíséreltünk meg.
- Illegal direct; parancsmódban próbált olyan utasítást kiadni, amit csak
programba lehet írni (pl. DEF FN).
- Type mismatch; olyan helyen használtunk stringkifejezést, ahol számot
kellett volna, vagy fordítva.
- Out of string space; elfogyott a stringeknek biztosított tárterület.
- String too long; a keletkezett string túl hosszú.
- String formula too complex; a stringkifejezés túl hosszú vagy bonyolult,
daraboljuk fel egyszerûbb értékadásokra.
- Can't continue; a CONT utasítás nem végrehajtható, a program csak RUN
utasítással indítható újra.
- Undefined user function; a megfelelõ DEF FN függvény- definíció
végrehajtása elõtt hívtuk meg a függvényt.
- No RESUME; a fellépett hiba lekezelése közben a futás elérte a program
végét, anélkül, hogy RESUME utasítással találkozott volna.
- RESUME without error; a program úgy lépett be a hibafeldolgozó rutinba,
hogy elõtte nem volt hiba.
- Unprintable error; nincs hibaüzenet egy létezõ hibafeltételhez általában
az ERROR utasítás okozza, ha ismeretlen hibakóddal paraméterezzük.
- Missing operand; a kifejezésbõl hiányzik egy operandusz.
- Line buffer overflow; a begépelt sor túl hosszú.
- Device timeout; egy I/O utasítás közben a megnevezett eszköz nem válaszolt
idõben.
- Device fault; hardware jellegû hiba lépett fel valamely perifériánál
(soros vagy párhuzamos interfésznél).
- FOR without NEXT; a program futása elérte az utolsó sort, anélkül, hogy
egy nyitott FOR ciklus lezárult volna.
- Out of paper; a nyomtatóból kifogyott a papir, vagy be sincs kapcsolva.
- WHILE without WEND; a program futása elérte az utolsó sort, anélkül, hogy
egy nyitott WHILE ciklus lezárult volna.
- WEND without WHILE; a WEND utasításnak nincs WHILE párja, a ciklusba a
vezérlés nem a ciklus kezdõ utasításán át került.
- Field overflow; a FIELD utasítás több byte-ot foglal, mint a hozzátartozó
OPEN utasításban definiált rekordhossz.
- Internal error; másold újra a lemezed, ellenõrizd a hardware-t, és jegyezd
fel a hiba létrejöttének körülményeit.
- Bad file number; a hivatkozott file még nincs megnyitva, vagy a fileszám
túl nagy.
- File not found; a névvel hivatkozott file nem létezik.
- Bad file mode; lehet, hogy a file még nem lett megnyitva, vagy
szekvenciálisnak lett megnyitva, de randomként próbáltuk használni.
- File already open; egy már nyitott file-ot próbáltunk megnyitni (OPEN)
vagy törölni (KILL).
- Device I/O error; egy I/O mûvelet közben hiba lépett fel, amit a rendszer
nem tud azonosítani.
- File already exists; a NAME utasítás közben fordulhat elõ, ha az új név
paraméter egy már létezõ file-ra mutat.
- Disk full; a lemez megtelt, töröljük a felesleges file- okat.
- Input past end; az olvasás már elérte a file végét.
- Bad record number; negatív vagy túl nagy rekord- sorszámra hivatkozik a
PUT vagy GET utasítás.
- Bad file name; a hivatkozott filenév tiltott karaktereket is tartalmaz.
- Direct statement in file; a beolvasandó programfile címkenélküli sort
(utasítást) tartalmaz.
- Too many files; ez a hibajelzés akkor fordulhat elõ, ha már túl sok file
van a könyvtárban, vagy a rendszer nem fogadja el a file nevet.
- Device unavailable; nemlétezõ eszközhözfordulás történt.
- Communications buffer overflow; túlcsordult a kommunikációs buffer,
sûrûbben kell kiolvasni, vagy hosszabbnak kell választani.
- Permission denied; irásvédett lemezre próbáltunk írni.
- Disk not ready; nyitva van a lemezegység ajtaja, vagy nincs is ilyen
egység a gépben.
- Disk media error; a lemez-vezérlõegység hibás szektort észlel.
- Advanced feature; rossz (régi) BASIC verziót használunk.
- Rename across disks; a file átnevezést nem lehet file- mozgatásra
használni.
- Path/File access error; hibás az útnév, vagy még aktív alkönyvtárat
próbáltunk törölni.
- Path not found; nemlétezõ útnév.
- Child process error; a SHELL utasítással elindított procedúra megszakadt,
hiba vagy megszakítás miatt.
ASCII kódtáblázat
000 NUL 032 (szóköz) 064 @ 096 `
001 SOH 033 ! 065 A 097 a
002 STX 034 " 066 B 098 b
003 ETX 035 # 067 C 099 c
004 EOT 036 $ 068 D 100 d
005 ENQ 037 % 069 E 101 e
006 ACK 038 & 070 F 102 f
007 BEL 039 ' 071 G 103 g
008 BS 040 ( 072 H 104 h
009 HT 041 ) 073 I 105 i
010 LF 042 * 074 J 106 j
011 VT 043 + 075 K 107 k
012 FF 044 , 076 L 108 l
013 CR 045 - 077 M 109 m
014 SO 046 . 078 N 110 n
015 SI 047 / 079 O 111 o
016 DLE 048 0 080 P 112 p
017 DC1 049 1 081 Q 113 q
018 DC2 050 2 082 R 114 r
019 DC3 051 3 083 S 115 s
020 DC4 052 4 084 T 116 t
021 NAK 053 5 085 U 117 u
022 SYN 054 6 086 V 118 v
023 ETB 055 7 087 W 119 w
024 CAN 056 8 088 X 120 x
025 EM 057 9 089 Y 121 y
026 SUB 058 : 090 Z 122 z
027 ESC 059 ; 091 [ 123 {
028 FS 060 < 092 \ 124 |
029 GS 061 = 093 ] 125 }
030 RS 062 > 094 ^ 126 ~
031 US 063 ? 095 _ 127