The other key tool for eliminating excessive base register dependencies is LOCTR. Too long a topic for an e-mail, but LOCTR lets you code instructions in whatever order you prefer, such as putting DC's at the "bottom," and lets you use LTORG in the normal fashion -- while still putting everything that might require base register addressability (such as DC's and literals and possibly executed instructions) well within the first 4K of the CSECT. Look it up in the assembler manual and/or search for a SHARE presentation.
Charles -----Original Message----- From: IBM Mainframe Discussion List [mailto:[email protected]] On Behalf Of Peter Relson Sent: Thursday, November 15, 2018 4:45 AM To: [email protected] Subject: Re: ASMA034E A more modern (over 20 years old by now?) would suggest not having a USING for your "code" at all, but rather using relative branch with one register set up to point to your static data and a USING for that. It is relatively infrequent that your static data would exceed 4K, and even if it did you could often use long-displacement instructions to access any data that is more than 4K from the beginning. In some cases you might be able to take advantage of the "immediate" instructions and not even need access to static data. The IEABRCX macro can help in modules that want to use relative branch, particularly if they invoke system macros. Also be sure to identify the architecture level that macros are allowed to assume you are running with, via SYSSTATE ARCHLVL=. ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
