I'm proposing optional subroutine return values for the 'return' and 'endsub' 
o-words.

This would work as follows:

- the 'return' and 'endsub' keywords may be followed by an optional expression.
- this expression is evaluated at procedure return/endsub time
- its value is stored in global named parameter '#<_value>'
- the default value ('return' and 'endsub' without a trailing expression) is 0.

Here is an example how that works:
--------------------------------
o1000 sub
o1010 if [#1 GT 0]
o1010    return [123*[#1]]
o1010 endif

o1020 if [#1 LT 0]
o1020    return 
o1020 endif

o1000 endsub [4712]

o1000 call [0]
(debug,call with arg1=0 return #<_value>)

; #<_value> is 4712.0

o1000 call [2]
(debug,call with arg1=2 return #<_value>)

; #<_value> is 246.0

o1000 call [-1]
(debug,call with arg1=-1 return #<_value>)

; #<_value> is 0.0

m2
--------------------------------

Here's a tentative implementation:
http://git.mah.priv.at/gitweb/emc2-dev.git/commit/bdb22fc1bbaed2c7c2cd68817240923cc92adfd4

why am I proposing this?

It became clear to me that commands like Tx/M6 which are remapped to o-word 
subs need to be able to pass values back to EMC, for instance to signal wether 
an M6 succeeded (change tool) or failed (do not change tool). Return values are 
an obvious choice and are generally useful.

I'd appreciate feedback if find it worthwhile/useless/soso.

-Michael

ps: I am aware the same effect can be had by using global variables but then 
languages have moved on.


------------------------------------------------------------------------------
Xperia(TM) PLAY
It's a major breakthrough. An authentic gaming
smartphone on the nation's most reliable network.
And it wants your games.
http://p.sf.net/sfu/verizon-sfdev
_______________________________________________
Emc-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/emc-developers

Reply via email to