It only uses R15, the entry address. On Wed, Mar 17, 2021 at 12:18 PM Joe Monk <[email protected]> wrote: > > How is this supposed to work without saving/restoring registers? > > Joe > > On Wed, Mar 17, 2021, 12:07 Charles Mills <[email protected]> wrote: > > > That is some impressive hacking! > > > > Something about it seems inherently risky as you know, but hard to see how > > it stops working. Which particular line of code might not be supported in > > the future? > > > > Charles > > > > > > -----Original Message----- > > From: IBM Mainframe Discussion List [mailto:[email protected]] On > > Behalf Of Farley, Peter x23353 > > Sent: Wednesday, March 17, 2021 8:50 AM > > To: [email protected] > > Subject: This Call-Assembler-inside-COBOL technique works, but is it risky > > to use? > > > > I discovered that one can code and call extremely simple assembler code > > from > > completely within a COBOL source program, but it is a two-step process > > which > > I will describe below. > > > > My question is whether using a technique like this is "risky" in the sense > > that it may someday, under a future incarnation of the compiler, stop > > working? > > > > The technique: > > > > Code a simple assembler program like the following and browse the resulting > > listing that shows the generated object code: > > > > COBSTCKE CSECT , > > L 15,0(,1) GET ARGUMENT ADDRESS > > STCKE 0(15) STCKE INTO ARGUMENT AREA > > XR 15,15 SET RETURN CODE = 0 > > BR 14 RETURN TO CALLER > > > > Then copy the generated object code into a COBOL source program as follows: > > > > ID DIVISION. > > PROGRAM-ID. COBSTCKE. > > ENVIRONMENT DIVISION. > > DATA DIVISION. > > WORKING-STORAGE SECTION. > > 01 WS-TOD-VALUE PIC X(16). > > > > 01 WS-GETTOD-PROGRAM. > > * GET ARGUMENT ADDRESS L 15,0(,1) > > 05 FILLER PIC X(04) VALUE X'58F01000'. > > * STCKE INTO ARGUMENT AREA STCKE 0(15) > > 05 FILLER PIC X(04) VALUE X'B278F000'. > > * SET RETURN-CODE = 0 XR 15,15 > > 05 FILLER PIC X(02) VALUE X'17FF'. > > * RETURN TO CALLER BR 14 > > 05 FILLER PIC X(02) VALUE X'07FE'. > > > > 01 WS-GETTOD-PTR. > > 05 GETTOD-ADDR PROCEDURE-POINTER VALUE NULL. > > 05 FILLER REDEFINES GETTOD-ADDR. > > 10 GETTOD-ADDR1 POINTER. > > 10 GETTOD-ADDR2 POINTER. > > > > PROCEDURE DIVISION. > > > > SET GETTOD-ADDR1 TO ADDRESS OF WS-GETTOD-PROGRAM. > > CALL GETTOD-ADDR USING WS-TOD-VALUE. > > DISPLAY FUNCTION HEX-OF (WS-TOD-VALUE). > > GOBACK. > > > > 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. > > > > ---------------------------------------------------------------------- > > For IBM-MAIN subscribe / signoff / archive access instructions, > > send email to [email protected] with the message: INFO IBM-MAIN > > > > ---------------------------------------------------------------------- > > For IBM-MAIN subscribe / signoff / archive access instructions, > > send email to [email protected] with the message: INFO IBM-MAIN > > > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to [email protected] with the message: INFO IBM-MAIN
-- Mike A Schwab, Springfield IL USA Where do Forest Rangers go to get away from it all? ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to [email protected] with the message: INFO IBM-MAIN
