I don't think you can dynamically construct a variable name and then expect the 
assembler to interpret it as a variable name.

I'm still guessing at what you are trying to achieve, but consider this, 
assuming you have &P1=,&P2=,...&P23=,&P24= :

         LCLC  PA(24)      Define array with 24 elements

&PA(1)   SETC  '&P1'
&PA(2)   SETC  '&P2'
. . .
&PA(23)  SETC  '&P23'
&PA(24)  SETC  '&P24'

You can now reference &PA(&I), for example, to access all of the elements of 
the array.

-- Art Celestini



At 01:07 PM 4/1/2012, Hardee, Chuck wrote:

>Hello,
>
>Thru the IBM Mainframe list I have been able to get the assembler to accept 
>the following as valid:
>
>&VARNAM SETC  'P'.'&I'
>&XVAL   SETC  '&(&VARNAM)'
>
>&XVAL is defined as LCLC
>
>This statement:
>        MNOTE 'VARNAM=&VARNAM'
>results in the following in the assembly listing:
>        +VARNAM=P1
>so it appears that the creation of the compound variable name is working 
>(compound being defined as the building of a variable name using two or more 
>parts at runtime.)
>
>However, this statement:
>&XVAL   SETC  '&(&VARNAM)'
>results in the following in the assembly listing:
>** ASMA003E Undeclared variable symbol; default=0, null, or type=U - TESTM/P1
>** ASMA435I Record 44 in S01CH.MISC.MACLIB(TESTMAC) on volume: TECH27
>(and I might add that I get the same warning for the remaining variables, P2, 
>P3, P4 P5 and P6)
>
>Which makes no sense since the macro is defined:
>        MACRO
>&LABEL  TESTMAC &P1=,&P2=,&P3=,&P4=,&P5=,&P6=
>
>Which, unless I've missed something, defines P1, P2, etc.
>
>Can anyone shed some light on why the assembler would think that the variables 
>P1 thru P6 would be thought of as not defined when they are clearly defined in 
>the MACRO template?
>
>Thanks,
>Chuck
>
>Charles (Chuck) Hardee
>Senior Systems Engineer
>Database Administration
>Information Technology Services
>Thermo Fisher Scientific
>chuck.har...@thermofisher.com

Reply via email to