Peter,

For the case you are describing it seems to me that LOCTR would be the
simplest solution.

Even so, Keven is right: the END instruction can be replaced with macro.
You could define the macro in your MACINIT macro (nested macro definition)
including the required OPSYN statement.

I used an END replacement macro to produce a subroutine cross reference
at the end of the program listing. You could use an END replacement to do
all kinds of other nifty stuff. Some experience in writing macros is needed,
but from your mail I understand that should not be a problem at all ;-)

Kind regards & success!
Abe  Kornelis
============



Op 17-3-2017 om 22:22 schreef Keven Hall:
> Peter,
> If the END assembler directive is one that can be redefined, you could write 
> your own END macro that inserts any required data areas and generates an _END 
> (or whatever it is that END was redefined as).
>
>
> Keven
>
>> On Mar 17, 2017, at 12:29, Farley, Peter x23353 
>> <peter.far...@broadridge.com> wrote:
>>
>> I cannot see a way to do the following, so any enlightenment you can provide 
>> is appreciated.
>>
>> I have created new versions of an existing set of macros and the new 
>> versions require a fairly large set of non-reentrant data areas defined in 
>> the CSECT in which they are used.  The first macro invoked (say, MACINIT) 
>> needs to define these areas in existing assembler programs that may or may 
>> not be close to exceeding their defined base registers.  This is old, 
>> non-reentrant code that has not been converted to "baseless" mode, and doing 
>> that conversion now is not on the table due to time and resource constraints.
>>
>> Rather than defining the new data areas at the place where MACINIT is 
>> invoked (there is code as well as data in MACINIT, and the code has to be 
>> positioned near the start of the program), I would like to be able to have 
>> MACINIT place all of the new data areas AFTER all other data or code defined 
>> in the CSECT.
>>
>> All of the new data areas are referred to in the new macro versions by 
>> "relative long" instructions in the generated code, so they will work 
>> correctly even if the data areas are totally outside of the defined base 
>> register coverage areas.
>>
>> I have looked at the LOCCTR assembler instruction thinking that it might be 
>> a way to accomplish what I want to do, but I am not really clear on how to 
>> use it, or even if that is a way for me to do what I want to do.
>>
>> So far the only way to accomplish this that I can see is to have a separate 
>> "MACDATA" macro to be manually inserted into the old code at the appropriate 
>> position.  I would prefer an automated solution that does not require a new 
>> "data" macro, if at all possible.
>>
>> TIA for any help you can provide.
>>
>> Peter
>>
>>
>> This message and any attachments are intended only for the use of the 
>> addressee and may contain information that is privileged and confidential. 
>> If the reader of the message is not the intended recipient or an authorized 
>> representative of the intended recipient, you are hereby notified that any 
>> dissemination of this communication is strictly prohibited. If you have 
>> received this communication in error, please notify us immediately by e-mail 
>> and delete the message and any attachments from your system.

Reply via email to