Like HLASM, I'm not clear on what you want to do. But &STCKEVAL(8) means that you want the 8th element of a sublisted parameter named &STCKEVAL, which it ain't. If the (8) is supposed to be a length override, precede it with a dot.
sas On Thu, Oct 29, 2015 at 4:07 PM, Paul Gilmartin < 00000014e0e4a59b-dmarc-requ...@listserv.uga.edu> wrote: > In a macro, the following works OK: > > Loc Object Code Addr1 Addr2 Stmt Source Statement > HLASM R6.0 2015/10/29 13.44 > .... > 0000F2 F3E7 D0D0 D118 000D0 00118 146+ UNPK YYYY(15),PK(8) > ... where YYYY and PK are both relocatable symbols defined in a DSECT > outside the macro. > > But: > 3 MACRO > 4 &L CONV &STCKEVAL > ... > UNPK > YYYY(15),&STCKEVAL(8) > gives: > 000112 0000 0000 0000 00000 00000 161+ UNPK YYYY(15), > ** ASMA074E Illegal syntax in expression - > ** ASMA435I Record 32 in SPPG.HELLO.JOB06662.D0000101.? on volume: > Where &STCKEVAL is a parameter defined as: > 90 CONV > =X'00C3870CB8C73BFFFFFFFFFFFFFFFFFF' > ... in the macro call. > > Naively, I had hoped that PK and &STCKEVAL would both work as > relocatable address expressions. What's the nicest way to make this work?: > > o Copy the literal to a work area? > > o LA R15,&STCKEVAL and base off that? > > o X&SYSNDX EQU &STCKEVAL and use that? > > o Other? > > Thanks, > gil > -- sas