Sujet : Re: Bliss
De : ldo (at) *nospam* nz.invalid (Lawrence D'Oliveiro)
Groupes : comp.os.vmsDate : 27. Jul 2024, 05:36:45
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <v81tgs$388ua$1@dont-email.me>
References : 1 2 3 4 5 6
User-Agent : Pan/0.159 (Vovchansk; )
On Fri, 26 Jul 2024 02:10:19 -0000 (UTC), I wrote:
Adapted this example from page 15-9:
This version does work:
MODULE quote_test_2 =
BEGIN
OWN x;
MACRO mark = 4 %;
MACRO m = (mark) + %UNQUOTE mark %;
GLOBAL ROUTINE doit : NOVALUE =
BEGIN
MACRO %QUOTE mark = 5 %;
x = m;
END;
END ELUDOM
But note the parentheses around “(mark)”; it doesn’t seem to get the
addition right without that.
Generated code:
doit:
...
movq $9, x(%rip)
retq
The problem seems to be that the handling of the %UNQUOTE construct is
only expecting the following name to be that of a macro, not a literal or
anything else.