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