<A NAME=RETURN>
<TITLE>RETURN</TITLE></A>
<b><a href=r37_idx.html>INDEX</a></b><p><p>
<B>RETURN</B> _ _ _ _ _ _ _ _ _ _ _ _ <B>command</B><P>
<P>
The <em>return</em> command causes a value to be returned from inside a
<em>begin</em>...<em>end</em>
<A HREF=r37_0041.html>block</A>.
<P>
<P>
<P> <H3>
syntax: </H3>
<em>begin</em><statements> <em>return</em> <(expression)>
<em>end</em><P>
<P>
<P>
<P>
<statements> can be any valid REDUCE statements. The value of
<expression> is returned.
<P>
<P>
<P> <H3>
examples: </H3>
<P><PRE><TT>
begin write "yes"; return a end;
yes
A
procedure dumb(a);
begin if numberp(a) then return a else return 10 end;
DUMB
dumb(x);
10
dumb(-5);
-5
procedure dumb2(a);
begin c := a**2 + 2*a + 1; d := 17; c*d; return end;
DUMB2
dumb2(4);
c;
25
d;
17
</TT></PRE><P>Note in <em>dumb2</em> above that the assignments were made as req
uested, but
the product <em>c*d</em> cannot be accessed. Changing the procedure to read
<em>return c*d</em> would remedy this problem.
<P>
<P>
The <em>return</em> statement is always the last statement executed before
leaving the block. If <em>return</em> has no argument, the block is exited but
no value is returned. A block statement does not need a <em>return</em> ;
the statements inside terminate in their normal fashion without one.
In that case no value is returned, although the specified actions inside the
block take place.
<P>
<P>
The <em>return</em> command can be used inside <em><<</em>...<em>>>
</em>
<A HREF=r37_0038.html>group</A> statements and
<A HREF=r37_0052.html>if</A>...<em>then</em>...<em>else</em> commands that
are inside <em>begin</em>...<em>end</em>
<A HREF=r37_0041.html>block</A>s.
It is not valid in these constructions that are not inside
a <em>begin</em>...<em>end</em>
block. It is not valid inside
<A HREF=r37_0047.html>for</A>,
<A HREF=r37_0056.html>repeat</A>...<em>until</em> or
<A HREF=r37_0228.html>while</A>...<em>do</em>
loops in any construction. To force early termination from loops, the
<em>go to</em>(
<A HREF=r37_0050.html>goto</A>) command must be used.
When you use nested block statements, a
<em>return</em> from an inner block exits returning a value to the next-outermos
t
block, rather than all the way to the outside.
<P>
<P>
<P>