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
>[email protected]