This is a bug in HLASM that IBM refuses to fix. Actually, they did agree to fix it but wanted money to do so. A performance improvement in macro processing broke the ability to use created set symbols to reference macro parameters a long time ago. Now it is a "feature". I call it "broken as designed".
David Bond On Apr 1, 2012, at 10:07 AM, "Hardee, Chuck" <chuck.har...@thermofisher.com> 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