Hi,
if it is especially about array's,
LOCAL laX[2]
= called(laX)
= called(@laX)
FUNCTION called(tuRefOrVal)
? TYPE("m.tuRefOrVal[1]")
that should be a way to tell the difference in this special case.
Perhaps depending on your "code situation" you can build on this.
Another way (if you know all possible calling var names) is to try
whether they are still visible - they are "renamed" in the call by ref.
HTH
thomas