CONTENTS | INDEX | PREV | NEXT
7.0:
SYNTAX A : ARG M REG
SYNTAX B : RANGE M REG
SYNTAX C : LIST M REG
RESULTING VALUE(S): Whatever ARGUMENT, RANGE or LIST was left by the last
command in the macro present in register REG. And, of
course, a command not leaving anything as return
value(s) causes M to return nothing as well.
FUNCTION : Execute the (string) content of the register whose
name immediately follows the command exactly once as
a command-sequence.
This mechanism allows, in conjunction with the @M-
command, to create macros that can read the argument,
range or list with which they were called.
ARGUMENT : Irrelevant if <=0.
Irrelevant if >0 and @M is called in the macro.
See note 1.
RANGE : Irrelevant.
LIST : Irrelevant.
EXAMPLE : 3 , 5 ma =
Will interpret the content of register A as command
sequences. Assuming register A is loaded with:
2 @m
the output is 1 , 5 (the 1 indicating that the second
value in the range was present, and the b being its
value).
This deserves careful study, as it is a tricky, but
very powerful mechanism.
NOTE 1 : For positive arguments, see here. If, in the macro, @M
is called, then even for positive arguments the
behaviour described on this page is exhibited (i.e.:
the macro will only run once).
NOTE 2 : Up until release 7.1, calling a macro with argument 0
could not be trapped within the @M-command. This was
to prevent older programs malfunctioning (as they
might depend on a value of 0 causing the macro to be
executed 0 times). This is still something to look out
for when debugging!
NOTE 3 : To access the register as an array, a subscript can be
used.
MATRIX