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

Reply via email to