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

Reply via email to