Simpler is safer.

--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


________________________________________
From: IBM Mainframe Assembler List <[email protected]> on behalf 
of Tony Thigpen <[email protected]>
Sent: Tuesday, August 11, 2020 1:57 PM
To: [email protected]
Subject: how to return?

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

Reply via email to