Programmet CAL.BAC har sk{nkts till ABC-klubben av METRIC AB.

Detta paket m|jligg|r matematiska ber{kningar p}  ABC80  med  13
siffrors noggrannhet.

Ber{kning av f|ljande funktioner:

ADD
SUB
MUL
DIV
SQR
POW    X upph|jt till Y
EXP
LOG
LOG10
SIN
COS
TAN
ATN
ASN
ACS
INT
ABS
SGN
INV
FRAC
COMP
PI

Eftersom ABC80's basic {r gjord f|r 6 siffrors  noggranhet,  kan
man inte erh}lla fler siffror i en flyttalsvariabel. F|r att f}
plats med 13 siffror erh}lls svaret d{rf|r  i  en  f|rdefinierad
str{ngvariabel. Indata kan dock vara i vilken form som helst, s}
l{nge det {r numeriskt.
Drivrutinen upptar knappt 4 kbyte.

ANV[NDNING:

Ladda in drivrutinen: RUN CAL

Kommunikationen med CAL-rutinen sker via en enhet d|pt till CAL:

En fil m}ste |ppnas: OPEN "CAL:" ASFILE 1
Detta medf|r bl.a. att en resultatstr{ng med namn Z0$ initieras.
Om ett annat namn {r |nskv{rt kan detta l{ggas i OPEN-satsen:
OPEN "CAL:C5" ASFILE 1 ger resultatet i C5$.
OPEN "CAL:]" ASFILE 1 initierar ]$ till resultatstr{ng.
Resultatet kan ej erh}llas i en vektor eller matris.

F|r att r{kna ut n}got med rutinen talar man  f|rst  om  vad  den
skall  utf|ra.  Detta  g|rs med en bokstavskombination av tv}, tre
eller fyra tecken, enligt  f|rteckningen  ovan.  D{refter  f|ljer
noll,   ett   eller  tv}  argument  beroende  p}  vald  funktion.
Argumenten }tskiljs med semikolon. (OBS !!!  Ej  kommatecken  som
inneb{r tabulering).
Ex.  ;#1,"EXP";"1.49" ger e  (basen  till  naturliga  logaritmen)
upph|jt till 1.49. Resultaten l{ggs i Z0$.

10  OPEN"CAL:" ASFILE 1 : REM INIT Z0$ TILL RESULTATSTR[NG
20  A$="23.6" : B$="1.29"
30  ;#1,"LOG";A$ : REM RESULTATET AV LN(23.6) L[GGS I Z0$
40  ;Z0$ : REM SKRIV UT RESULTATEN
50  ;#1,"PI" : REM L[GGER PI MED 13 SIFFROR I Z0$
60  ;Z0$
70  ;#1,"POW";A$;B$ : REM 23.6^1.29
80  ;Z0$
90  ;#1,"SQR";"12.34"
100 ;Z0$
105 ;#1,"SQR";12.34 : REM GER SAMMA RESULTAT
110 Y3%=2% : T=7.8
120 ;#1,"DIV";Y3%;T
130 ;Z0$
140 ;#1,A$;B$ : REM "DIV" "LIGGER KVAR". Z0$=A$/B$
150 ;Z0$
154 ;#1,"LOG10";2.4E-8
155 ;Z0$
160 ;#1,"ACS";DIV(A$,"101",12) : REM ARCCOS(23.6/101)
170 ;#1,"INV";Z0$ : REM Z0$=1/ARCCOS(23.6/101)
.
.
Felmeddelanden  kan  erh}llas  dels  vid  OPEN-satsen  och  dels i
PRINT-satsen. Vid OPEN kan ERR 53 intr{ffa om syntaxfel  finns  i
variabelnamnet.  ERR  53  intr{ffar  {ven  om en icke existerande
funktion  anropas.  Om  antal  argument  UNDERSTIGER  det   antal
funktionen  kr{ver  erh}lls  ERR 13. Om argumenten {r fler {n vad
som kr{vs erh}lls inget felmeddelande.

Om n}got  argument  ej  {r  numeriskt  erh}lls  ERR  12  som  kan
hanteras  med ON ERROR GOTO. Observera dock att om f|rsta tecknet
{r en bokstav tolkas detta som ett funktionsanrop.

Indata l{ngre  {n  36  tecken  per  argument  ger  ERR  10.  F.|.
felmeddelanden som vanligt. (Ex. SQR(-1) => ERR 50).

LITE TIPS:
Under f|ruts{ttning att  argumenten  till  CAL-rutinen  ligger  i
str{ngar  eller  heltal  kan  PRINT-satsen  f|renklas  genom  att
semikolon utel{mnas.
Ex. ;#1,"POW"A$B$ : ;#1,"POW"A%A$ ......

Resultatvariabeln  skall  ej dimensioneras d} detta endast upptar
oanv{ndbart minne. Anv{nd ej heller  denna  variabel  innan  OPEN.
CAL-rutinen  dimensionerar sj{lv resultatstr{ngen till 36 teckens
l{ngd.

X-argumentet  (f|rsta  arg.)  till  CAL-rutinen  kan   l{ggas   i
resultatstr{ngen.
Ex. ;#1,"PI" : ;#1,"SQR"Z0$ ger roten ur PI i Z0$
Om   endast   argument   skickas  s}  erh}lls  den  senast  valda
funktionen.
Ex. ;#1,Z0$ ger roten ur Z0$ igen

OBS !!! Y-arg. g}r ej att l{gga i resultatstr{ngen.
Ex. ;#1,"DIV";"2.3";Z0$ ger ERR 12.

Funktionen COMP fungerar som BASIC's  COMP%.  R{tt  svar  erh}lls
dock {ven vid negativa tal.

GOOD COUNTING
