exec script file execution

## Syntax

                exec(path [,mode])
                exec(fun [,mode])
                ierr = exec(path, 'errcatch' [,mode])
                ierr = exec(fun, 'errcatch' [,mode])
                [ierr, errormsg] = exec(..., 'errcatch' [,mode])
                [ierr, errormsg, callstack] = exec(..., 'errcatch' [,mode])

## Arguments

path

  a string, the path of the script file.

mode

  an integer scalar, the execution mode (see below).

fun

  a Scilab function.

ierr

  an integer, 0 or error number.

errormsg

  error message in case of error and with `'errcatch'` flag.

callstack

  callstack in case of error and with `'errcatch'` flag.

## Description

`exec(path [,mode])` executes sequentially the Scilab instructions contained in the file given by `path` with an optional execution mode `mode`.

The different cases for `mode` are :

0

  the default value.

-1

  nothing is printed.

1

  echo of each command line.

2

  prompt `-->` is printed.

3

  echoes + prompts.

4

  stops before each prompt. Execution resumes after a carriage return.

7

  stops + prompts + echoes : useful mode for demos.

`exec(fun [,mode])` executes function `fun` as a script: no input nor output argument nor specific variable environment. This method for script evaluation allows to store scripts as function in libraries.

If an error is encountered while executing, if `'errcatch'` flag is present `exec` issues no error message, aborts execution of the instructions and resumes with `ierr` equal to the error number. If `'errcatch'` flag is not present, standard error handling works.

## Remarks

`exec` files may now be used to define functions using the inline function definition syntax (see function).

`exec` supports files encoded as ANSI/ASCII and UTF-8.

The length of each line in a file is limited to 4096 characters.

## Examples

    // create a script file
    mputl('a=1;b=2',TMPDIR+'/myscript')

    // execute it
    exec(TMPDIR+'/myscript')
    whos -name "a "

    // create a function
    deff('y=foo(x)','a=x+1;y=a^2')
    clear a b
    // call the function
    foo(1)
    // a is a variable created in the environment of the function foo
    //    it is destroyed when foo returns
    whos -name "a "

    x=1 //create x to make it known by the script foo
    exec(foo)

    // a and y are created in the current environment
    whos -name "a "
    whos -name "y "

    //errormsg
    mputl('acosd(''d'');', TMPDIR+'/myscript')
    [_ b] = exec(TMPDIR+'/myscript', 'errcatch')

## See also

- execstr
- evstr
- mode
- chdir
- pwd