For the mainline code and all the subroutines that exit code needs to BAS into
(I am assuming all exit routines and all their private data including LTORG
follow the last of the mainline code and subroutines and constant data
definitions including mainline LTORG):
USING (MAIN_CSECT_NAME,END_OF_MAIN_CODE_AND_CONSTANTS),R11
At the end of all mainline code and subroutines and private data:
END_OF_MAIN_CODE_AND_CONSTANTS DS 0D
At the start of each exit routine:
USING (EXIT_START,EXIT_END),R12
At the end of each exit routine and all its private data:
EXIT_END DS 0D
DROP R12
If in the mainline code you need the address of any exit routine, use “L
Rx,=A(exit name)” rather than simply “LA Rx,exitname”.
HTH
Peter
From: IBM Mainframe Assembler List <[email protected]> On Behalf
Of Dave Clark
Sent: Wednesday, November 8, 2023 3:33 PM
To: [email protected]
Subject: Re: Internal Exit Routine Handling
"IBM Mainframe Assembler List" <[email protected]> wrote on
11/08/2023 03:14:01 PM:
> Read up on the DROP pseudo-op.
I've used it before. But I can't use it in this case because, as
I said:
> But since I am sharing data and routines, in my base program,
> then the exit routines need addressability to those areas as well.
Which means, my exit routines need to be able to execute the
following statements using the code base for the prior program area. These
routines exist in lower storage not covered by the exit routine's code
base.
BAS R5,SAYIT
...
BAS R15,REG2ZON3
...
BAS R2,GETVAR
...
BAS R5,SETVAR
Sincerely,
Dave Clark
--
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.