return return or resume execution and copy some local variables

## Syntax

                return
                [x1,..,xn] = return(a1,..,an)

## Arguments

x1,..,xn

  variables in calling environment

a1,..,an

  local variables

## Description

In a function `return` stops the execution of the function, `[x1,..,xn]=return(a1,..,an)` stops the execution of the function and put the local variables `ai` in calling environment under names `xi`.

In `pause` mode, it allows to return to lower level. `[x1,..,xn]=return(a1,..,an)` returns to lower level and put the local variables `ai` in calling environment under names `xi`.

In an `execstr` called by a function `[x1,..,xn]=return(a1,..,an)` stops the execution of the function and put the local variables `ai` in calling environment under names `xi`.

The statement `resume` is equivalent to `return`.

Note: the usage of this feature can complexify the code. Instead, the syntax `function b = foo()` is recommended.

## Examples

    function foo(a)
             a=a+1
             b=resume(a)
             c=52
    endfunction

    foo(42);
    assert_checkequal(b,43)
    // c does not exist

## See also

- abort
- break
- execstr
- resume

## History

6.0.0 `return` is now protected: Assignments like `return=1` are no longer possible.