A trick I use is to have a single "code/constant" base at the start of the program. Near this I branch around the constants/literals using LOCTR to place all the literals with the scope of the first base:
PGMSTART CSECT ... init code ... .... J MAINLINE ... constants ... MAINPGM LOCTR MAINLINE DS 0H ... program ... PGMSTART LOCTR LTORG , MAINPGM LOCTR ... other stuff .... WORKAREA DSECT ... This also have the advantage that I always have one register that points to the program entry point which makes analyzing a dump easier. I also hate the LOOK of the code generated by the IEABRCX macro (BRC n, label instead of JE/H/L/etc.), so I change all of the open code and have IEABRCX handle the macros I have no control of. Keith Moe BMC Software On Sunday, November 7, 2021, 05:54:10 PM PST, Tony Thigpen <t...@vse2pdf.com> wrote: I don't think putting a LTORG in my macro would be correct. First, I could pick up ltorg constants from code outside my macro. Second, I would need a base reg for the values generated by the LTORG. My assumption is that if someone is using base-less programming, they would put all their LTORGs in an area of code/data covered by a base register. Tony Thigpen Mike Hochee wrote on 11/7/21 8:29 PM: > I'd probably be inclined to use the inline constants approach, just to have > some control over generated label names. Is there something preventing you > from incorporating LTORGs in your macros? If not, maybe that's another > option. > > HTH, > Mike > > -----Original Message----- > From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] > On Behalf Of Tony Thigpen > Sent: Sunday, November 7, 2021 7:25 PM > To: ASSEMBLER-LIST@LISTSERV.UGA.EDU > Subject: Base-less macros > > Caution! This message was sent from outside your organization. > > I finally am to the point where I no longer need to worry about specific > customers having hardware that does not support relative instructions, so I > am updating some macros I provide to be baseless. > > What is the 'preferred' approach to macro generated constants? In the past, I > have used both inline constants that I branch around, and ltorg literals > (=c'x'). > > In the past, I have been bitten by using ltorg literals and the client did > not put a LTORG after my macro causing a 'no active base register' > issue. So, I am thinking inline with a BRAS is better. > > Maybe there is another approach that I missed? > > Suggestions? > > Tony Thigpen >