On Fri, 20 Jun 2025 10:38:20 -0500, Mark Hammack <mark.hamm...@gmail.com> wrote:
>This is how I'm creating "anonymous" fields in the code expansion There's no upside to having anonymous fields. You don't see anyone converting unreferenced labels in DSECTs to anonymous. For CSECT labels, why eliminate the label as long as it is unique. Here's how I would code this but it's not tested. Doubleword alignment to future proof for 64 bit addresses. > MACRO , >&LABEL KEYFIELD &NAME,&FIELD,&TYPE=C,&DSECT=NO > > AIF ('&DSECT' EQ 'YES').KEYFIELD_DSECT >UID SETA &SYSNDX CSECT needs unique label >&DSECT0 SETC '' Use specified value >&DSECTB SETC '' Use specified value >&LABEL DS 0AD Doubleword addr align > AGO .KEYFIELD_GEN > >.KEYFIELD_DSECT ANOP , >UID SETC '' DSECT uses the label without of UID >&DSECT0 SETC '0) ' DSECT does not specify this address field, >use 0) >&DSECTB SETC ' '' ' DSECT does not specify this text, use >blank >KEYFIELD DSECT , >.KEYFIELD_GEN ANOP , > >KEYNAME&UID DC CL8'&dsectb.&NAME' >KEYDISP&UID DC .A(&dsect0.&FIELD.-BASE) OFFSET TO FIELD >KEYDLEN&UID DC A(&dsect0.L''&FIELD) FIELD LENGTH >KEYTYPE&UID DC CL1'&TYPE' FIELD TYPE > DS 0AD doubleword address alignment > > AIF ('&DSECT' EQ 'NO').KEYFIELD_END >KEYLEN EQU *-KEYFIELD >.KEYFIELD_END ANOP , > MEND >This is more or less what I am trying to do (second paragraph). Here's a >"real world" example of what I am doing: > > MACRO >&LABEL KEYFIELD &NAME,&FIELD,&TYPE=C,&DSECT=NO > AIF ('&DSECT' EQ 'YES').KEYFIELD_DSECT >&N SETC '&NAME' >&F SETC '&FIELD.-BASE' >&L SETC 'L''&FIELD' >&KEYNAME SETC ' ' >&KEYDISP SETC ' ' >&KEYDLEN SETC ' ' >&KEYTYPE SETC ' ' > >&LABEL DS 0F > AGO .KEYFIELD_GEN > >.KEYFIELD_DSECT ANOP , >&N SETC ' ' >&F SETC '0' >&L SETC '0' >&KEYNAME SETC 'KEYNAME ' >&KEYDISP SETC 'KEYDISP ' >&KEYDLEN SETC 'KEYDLEN ' >&KEYTYPE SETC 'KEYTYPE ' >KEYFIELD DSECT , > >.KEYFIELD_GEN ANOP , >&KEYNAME DC CL8'&N' >&KEYDISP DC A(&F) OFFSET TO FIELD >&KEYDLEN DC A(&L) FIELD LENGTH >&KEYTYPE DC CL1'&TYPE' FIELD TYPE > DS 0F > AIF ('&DSECT' EQ 'NO').KEYFIELD_END >KEYLEN EQU *-KEYFIELD >.KEYFIELD_END ANOP , > MEND