I’m trying to invoke a macro specifying keyword parameters within another 
macro, where the keyword and its value were passed to the outer macro. However, 
the assembler is always interpreting keyword=value as a SYSLIST value.
Anyone know how this can be done, or even if it is possible?
The code below shows what I’m trying to do, the “Invoked”d macros never receive 
keyword operand values.

CallMAC  TITLE 'Test macro invocations'
         MACRO
         Invoke &Name,&PARMS
.**********************************************************************
.*       Invoke passed macro, with the passed parameters              *
.**********************************************************************
         AIF   (T'&PARMS(1) EQ 'O').AAm110
&J       SETA  INDEX('&PARMS(1)','=')
&lValue1 SETC  '&PARMS(1)'(1,&J-1)
&rValue1 SETC  '&PARMS(1)'(&J+1,*)
.AAm110  ANOP  ,
.*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
         AIF   (T'&PARMS(2) EQ 'O').AAm120
&J       SETA  INDEX('&PARMS(2)','=')
&lValue2 SETC  '&PARMS(2)'(1,&J-1)
&rValue2 SETC  '&PARMS(2)'(&J+1,*)
.AAm120  ANOP  ,
.*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
         AIF   ('&PARMS(2)' NE '').AAm220
         AIF   ('&PARMS(1)' NE '').AAm210
UNSPLIT0 &Name  ,
         AGO   .AAm300
.AAm210  ANOP  ,
UNSPLIT1 &Name  &PARMS(1)
         AGO   .AAm300
.AAm220  ANOP  ,
UNSPLIT2 &Name  &PARMS(1),&PARMS(2)
.*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - *
.AAm300  ANOP  ,
         AIF   ('&PARMS(2)' NE '').AAm320
         AIF   ('&PARMS(1)' NE '').AAm310
SPLIT0   &Name ,
         AGO   .AAm999
.AAm310  ANOP  ,
SPLIT1   &Name &lValue1=&rValue1
SPLIT1A  &Name &lValue1.=&rValue1
         AGO   .AAm999
.AAm320  ANOP  ,
SPLIT2   &Name &lValue1=&rValue1,&lValue2=&rValue2
SPLIT2A  &Name &lValue1.=&rValue1,&lValue2.=&rValue2
.AAm999  ANOP  ,
         MEND  , -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
         MACRO
&Label   TestMac1 &T1O1=
.**********************************************************************
.*       Macro expecting single parameter                             *
.**********************************************************************
&P       SETA  N'&SYSLIST
         MNOTE *,'TestMac1 &Label #Parms=&P'
&I       SETA  1
.BBm010  ANOP  ,
         AIF   (&I GT &P).BBm020
         MNOTE *,'         SYSLIST(&I) = /&SYSLIST(&I)/'
&I       SETA  &I+1
         AGO   .BBm010
.BBm020  ANOP  ,
         MNOTE *,'         T1O1=/&T1O1/'
         MEND  , -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
         MACRO
&Label   TestMac2 &T2O1=,&T2O2=
.**********************************************************************
.*       Macro expecting two parameters                               *
.**********************************************************************
&P       SETA  N'&SYSLIST
         MNOTE *,'TestMac2 &Label #Parms=&P'
&I       SETA  1
.CCm010  ANOP  ,
         AIF   (&I GT &P).CCm020
         MNOTE *,'         SYSLIST(&I) = /&SYSLIST(&I)/'
&I       SETA  &I+1
         AGO   .CCm010
.CCm020  ANOP  ,
         MNOTE *,'         T2O1=/&T2O1/,T2O2=/&T2O2/'
         MEND  , -*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*
         EJECT
         PRINT MCALL
         TestMac1 ,
         TestMac1 T1O1=aaa
         TestMac2 T2O1=bbb,T2O2=ccc
***********************************************************************
         Invoke TestMac1
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*
         Invoke TestMac1,(T1O1=zzz)
*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*
         Invoke TestMac2,(T2O1=yyy,T2O2=xxx)
         END

Thanks,
Robert Ngan
DXC Luxsoft



Reply via email to