Nome: Eval

Locazione: C/

Template : VALUE1/A,OP,VALUE2/M,TO/K,LFORMAT/K

EVAL permette di eseguire calcoli interi a 32 bit e di stampare a
video il risultato. Si possono inserire più operandi o più operatori,
separati o meno da spazi. E' anche possibile usare parentesi
annidate. I valori numerici in ingresso devono essere, di default, in
formato decimale. Possono essere in formato ottale o esadecimale se
vengono preceduti da uno dei seguenti codici:

 0x o #x  un numero esadecimale
 0 o #    un numero ottale

Si può anche richiedere la conversione di un singolo carattere nel
corrispondente valore ASCII facendo precedere il carattere
dall'apostrofo (').

Gli operatori binari (che richiedono due operandi) di tipo aritmetico sono:

 +               addizione
 -               sottrazione
 *               moltiplicazione
 /               divisione
 mod, M, m, %    modulo

Gli operatori binari che operano sui bit possono essere:

 rsh, R, r       shift a destra
 lsh, L, l       shift a sinistra
 &               AND
 |               OR
 xor, X, x       XOR
 eqv, E, e       NOT XOR

Sono ammessi anche i seguenti operatori unari (che operano su un solo
operando):

 -              negazione
 ~              NOT binario

L'output è un valore decimale che esprime il risultato delle
operazioni. Può essere modificato, se si usa LFORMAT seguito da una
stringa posta tra virgolette. All'interno di questa stringa il
risultato apparirà al posto di uno dei seguenti codici:

 %N    in formato decimale
 %X    in formato esadecimale
 %O    in formato ottale
 %C    un singolo carattere ASCII

%X e %O possono essere seguiti da un numero che esprime il numero di cifre
del numero esadecimale o ottale.

Al posto dei valori numerici si possono usare delle variabili AmigaDOS
create con SET ed è possibile usare EVAL per creare dei loop a
contatore negli script, usandolo in combinazione con le variabili e
gli accenti gravi (si veda l'ultimo esempio).

 VALUE1/A: il primo valore numerico.

 OP: l'operatore

 VALUE2/M: gli altri valori numerici e gli altri operatori. Possono
essere omessi.

 TO/K: il file verso cui inviare l'output.

 LFORMAT/K: richiede come parametro una stringa posta tra virgolette che
esprime il formato che deve assumere il risultato.

Esempi:

 EVAL 'A
 EVAL ~0xff
 EVAL 0x10 + 010 - 'A
 EVAL 'A+32 LFORMAT "%C*n"
 EVAL (100*(28+36)/64+5)*10

Script d'esempio:

 SET cont 5
 LAB LOOP
 IF VAL $cont EQ 0
 QUIT
 ENDIF
 SET cont `EVAL $cont-1`
 ECHO $cont
 SKIP LOOP BACK