EVAL
  
 Format:	EVAL <value1> {[<operation>] [<value2>]} [TO<file>] 
 		[LFORMAT=<string>] 
  
 Template:	VALUE1/A, OP, VALUE2/M, TO/K, LFORMAT/K 
  
 Purpose:	To evaluate simple expressions. 
  
 Path:		C:EVAL 
  
 Specification: 
  
 EVAL is used to evaluate and print the answer of an integer expression. The 
 fractional portion of input values and final results, if any, are truncated 
 (cut off). Decimals are not allowed, evaluation stops at the decimal point. 
  
 <Value1> and <value2> may be decimal, hexadecimal, or octal numbers. Decimal 
 numbers are the default. Hexadecimal numbers are indicated by either a 
 leading 0x or #x. Octal numbers are indicated by either a leading 0 or a 
 leading #. Alphabetical characters are indicated by a leading single quote 
 ('). 
  
 The output format defaults to decimal; however, you can use the LFORMAT 
 keyword to select another format. The LFORMAT keyword specifies the 
 formatting string used to print the answer. You may use %X (hexadecimal), %O 
 (octal), %N (decimal), or %C (character). The %X and %O options require a 
 number of digits specifcation (i.e., %X8 gives 8 digits of hex output). When 
 using the LFORMAT keyword, you can specify that a new line should be printed 
 by including a *N in your string. 
  
 The supported operations and their corresponding symbols are shown below: 
  
 Operation				Symbol 
 ---------				------ 
 addition				+ 
 subtraction				- 
 multiplication				* 
 division				/ 
 modulo					mod 
 AND					& 
 OR					| 
 NOT					~ 
 left shift				lsh 
 right shift				rsh 
 negation				- 
 exclusive OR				xor 
 bitwise equivalence			eqv 
  
 EVAL can be used in scripts to act as a counter for loops. In that case, the 
 TO option, which sends the output of EVAL to a file, is very useful. 
  
 Parentheses may be used in the expressions. 
  
 Example 1: 
  
 1> EVAL 64 / 8 + 2 
 10 
  
 Example 2: 
  
 1> EVAL 0x5f / 010 LFORMAT="The answer is %X4*N" 
 The answer is 000B 
  
 This divides hexadecimal 5f(95) by octal 10(8), yielding 000B, the integer 
 portion of the decimal answer 11.875. (The 1> prompt would have appeared 
 immediately after the 000B if *N had not been specified in the LFORMAT 
 string.) 
  
 Example 3: 
  
 Assume you were using the following script, called Loop: 
  
 Key loop/a 
  
 .Bra { 
 .Ket } 
 ECHO >ENV:Loop {loop} 
 LAB start 
 ECHO "Loop #" noline 
 TYPE  ENV:Loop 
 EVAL <ENV:Loop >NlL: to=T:Qwe{$$} value2=1 op=- ? 
 TYPE >ENV:Loop T:Qwe{$$} 
 IF val $loop GT 0 
 SKIP start back 
 ENDIF 
 DELETE ENV:Loop T:Qwe{$$} ; clean up 
 ECHO  "done" 
  
 If you were to enter: 
  
 1> EXECUTE Loop 5 
  
 The following results would be displayed: 
  
 1> EXECUTE Loop 5 
 Loop #5 
 Loop #4 
 Loop #3 
 Loop #2 
 Loop #1 
 done 
  
 The first ECHO command sends the number given as the loop argument, entered 
 as an argument of the EXECUTE command, to the ENV:Loop file. 
  
 The second ECHO command coupled with the TYPE command, displays Loop # 
 followed by the number given as the loop argument. In this case, it 
 displays Loop #5. 
  
 The EVAL command takes the number in the ENV:Loop file as <value1>, which 
 makes the question mark at the end of the line necessary. <Value2> is 1, and 
 the operation is subtraction. The output of the EVAL command is sent to the 
 T:Qwe{$$} case, the value would be 4. The next IF command sends the value in 
 the T:Qwe{$$} file to the ENV:Loop file. In this case, it changes the value 
 in ENV:Loop from 5 to 4. 
  
 The IF statement states that as long as the value for Loop is greater than 0, 
 the script should start over. This results in the next line being Loop #4. 
  
 The script will continue until Loop is equal to 0. 
Converted from AmigaGuide to HTML by Jaruzel