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