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