M2SCI function
Last update : 20/12/2004

mtlb_eval - Matlab eval emulation function

### Description

Scilab equivalent for Matlab `eval` is different according to its inputs and outputs

The function `mtlb_eval(str1,str2)` is used by `mfile2sci` to replace `eval` because it was not possible to know what were the inputs while porting Matlab code to Scilab. This function will determine the correct semantic at run time. If you want to have a more efficient code it is possible to replace `mtlb_eval` calls:

  - When called with one input and no output, `mtlb_eval(str1)` may be replaced by `evstr(str1)` if `str1` is a valid Scilab expression or by `execstr(str1)` if `str1` is a valid Scilab instruction.
  - When called with one input and one output, `val=mtlb_eval(str1)` may be replaced by `val=evstr(str1)` if `str1` is a valid Scilab instruction.
  - When called with two inputs and no output, `mtlb_eval(str1,str2)` may be replaced by: `if execstr(str1,"errcatch")<>0 then execstr(str2);end` if `str1` and `str2` are valid Scilab instructions.
  - When called with more than one output and one input, `[val1,val2,...]=mtlb_eval(str1)` may be replaced by `execstr("[val1,val2,...]"+str1)` if `str1` is a valid Scilab instruction.
  - When called with two inputs and more than one output, `[val1,val2,...]=mtlb_eval(str1,str2)` may be replaced by:

        	if execstr("[val1,val2,...]"+str1,"errcatch")<>0 then
        	  execstr("[val1,val2,...]"+str2);
        	end

    if `str1` and `str2` are valid Scilab instructions.

Caution: `mtlb_eval` has not to be used for hand coded functions.

### See Also

`evstr`, `execstr`,

### Authors

  V.C.