Steven Estes - 2005-08-16

Logged In: YES

This looks like it is likely a case of a fairly common
indirection usage confusion. There are two types of
indirection: expression indirection and name level
indirection. The two are NOT interchangeable and are used in
different situations. The argument for $$ is name level
indirection which means nothing but a routine OR variable
name can be put there. The term "label^routine" is an
expression and cannot be used in name level indirection. If
you want to specify both routine and label you have two choices:

In an expression situation, you do something like:
S handler="$$labl^rtn" w @handler

For a name situation you do something like:
S hndllbl="labl" S hndlrtn="rtn" W $$@lbl^@rtn

However, in this later example, there do appear to be some
issues with passing parameters (they get treated as part of
the indirection expression even if rtn is terminated by a
'@'). I haven't looked up the actual parsing rules in that
situation so I'm not ready to call it a bug *yet*.. ;-)

Hope that answers your question