In the older version of EUO, you could actualy step through even called subroutines. Then it got broken when they went to 1.5 and never got fixed.
The !TM_FunctionCalled variable is there to let the call handler know if you have actually run the routine you were intending to.
If you look at the bottom of the call handler code, you'll see this:
if !TM_FunctionCalled = #TRUE ; successfully called function.
exit
if %0 = N/A
display ok You may not run this script directly.
else
display ok Function " , %1 , " not found.
stop
Suppose (using your example) you do this:
call %mysubs SampleScub
Ordinarily you wouldn't know anything about your misspelled function name SampleSub. But if you set the variable in your called sub, then you should get:
Function SampleScub not found
At this point, I'm just sharing many many hours of frustrating debugging and my solution to save you countless hours determining that in fact you had a misspelling error and the routine you thought you were calling was never called.
Also, in your example, you can set the !TM_FunctionCalled value to #TRUE anywhere in your called routine as long as you set it inside the CALLING namespace.