Clever...

On 8/11/2020 10:57 AM, Tony Thigpen wrote:
I came across the following code today. The program can either be called by JCL or from either an HLL or assembler program. While I included some extra code for clarity, the code I am asking for comments on is the code that 'fixes' R14 so that a BSM can be used instead of a BR. I just thought I would ask what others think about this method.

XXXXXXXX CSECT
XXXXXXXX AMODE ANY
XXXXXXXX RMODE 24   SOME IBM CODE IN HERE MAY REQUIRE R24
         USING XXXXXXXX,R15
         B     COPYRGHTEND
......
COPYRGHTEND DS 0D
         STM   R14,R12,12(R13)     SAVE CALLERS REGISTERS
         BCTR  R14,0               BACKUP TO CALLING INST
         BCTR  R14,0                 .
         CLI   0(R14),X'0C'        BASSM?
         BE    R14_OK
         CLI   0(R14),X'0D'        BSM?
         BE    R14_OK
         L     R14,12(,R13)        GET ORG R14
         LA    R14,0(,R14)         CLEAR HI BIT/BYTE
         BSM   R14,0               ADD PROPER AMODE
         ST    R14,12(,R13)        SET R14 FOR RETURN BY BSM
R14_OK   DS    0H
         DROP  R15
         LA    R1,SAVEAREA
         ST    R1,8(,R13)          FORWARD POINTER
         ST    R13,4(,R1)          BACKWARD POINTER
         LR    R13,R1              ESTABLISH PERM R13 AREA
         L     R1,4(,R13)          GET BACK ORG R0 & R1
         LM    R0,R1,20(R1)          FROM ORG SAVEAREA
*
         LA    R8,0(,R15)          ESTABLISH ADDRESSABILITY
         LA    R15,1                 .
         LA    R10,4095(R15,R8)      .
         USING XXXXXXXX,R8,R10       .

The return code is:
RETURNR15 DS   0H
         L     R1,4(,R13)          GET CALLER SAVE AREA ADDRESS
         ST    R15,16(,R1)         SAVE RETURN CODE
         LM    R14,R12,12(R13)     RESTORE REGISTERS
         BSM   0,R14               GO BACK

Tony Thigpen



--------------------------------------------------------------------------------
This e-mail message, including any attachments, appended messages and the
information contained therein, is for the sole use of the intended
recipient(s). If you are not an intended recipient or have otherwise
received this email message in error, any use, dissemination, distribution,
review, storage or copying of this e-mail message and the information
contained therein is strictly prohibited. If you are not an intended
recipient, please contact the sender by reply e-mail and destroy all copies
of this email message and do not otherwise utilize or retain this email
message or any or all of the information contained therein. Although this
email message and any attachments or appended messages are believed to be
free of any virus or other defect that might affect any computer system into
which it is received and opened, it is the responsibility of the recipient
to ensure that it is virus free and no responsibility is accepted by the
sender for any loss or damage arising in any way from its opening or use.

Reply via email to