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

Reply via email to