How is this supposed to work without saving/restoring registers? Joe
On Wed, Mar 17, 2021, 12:07 Charles Mills <charl...@mcn.org> 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:IBM-MAIN@LISTSERV.UA.EDU] On > Behalf Of Farley, Peter x23353 > Sent: Wednesday, March 17, 2021 8:50 AM > To: IBM-MAIN@LISTSERV.UA.EDU > 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 lists...@listserv.ua.edu with the message: INFO IBM-MAIN > > ---------------------------------------------------------------------- > For IBM-MAIN subscribe / signoff / archive access instructions, > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN > ---------------------------------------------------------------------- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN