Robert,

IIRC (I hope so) I got it to work with all parms concatenated into a
single variable.

You might give it a try ...

Success!
Abe
===


Op 30/09/2021 om 01:10 schreef Ngan, Robert (DXC Luxoft):
> 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