https://www.ibm.com/docs/en/zos/2.4.0?topic=services-variable-access-routine-irxexcom
REXX program
/* REXX */
/* CODE FOR REXCOB PROGRAM */
SAY "THIS IS FROM REXX "
LEREXX = "VALUE IS SET IN REXX"
SAY 'LEREXX: ' LEREXX
SAY 'CALLING COBREXL..'
"CALL *(COBREXL)"
SAY "RC : " RC
SAY "BACK FROM COBREXL"
SAY 'LEREXX: ' LEREXX
//STEPLIB DD DISP=SHR,DSN=MY.COBOL.LOAD
//SYSTSPRT DD SYSOUT=*
//SYSOUT DD SYSOUT=*
//SYSTSIN DD *
EX 'MY.REXX.PDS(REXCOB)'
/*
VARNAME1L refers to the length of the "REXX" variable name.
VARVALUE1L refers to length of the "REXX" variable value.
PROGRAM-ID. COBREXL.
ENVIRONMENT DIVISION.
DATA DIVISION.
WORKING-STORAGE SECTION.
* SHARED VARIABLE REQUEST BLOCK
*****************************************************
01 SHVBLOCK.
* CHAIN POINTER TO NEXT SHVBLOCK
02 SHVNEXT USAGE POINTER.
* USED DURING "FETCH NEXT"
* CONTAINS LENGTH OF BUFFER
* POINTED TO BY SHVNAMA
02 SHVUSER PIC S9(9) BINARY.
02 SHVCODES.
* FUNCTION CODE - INDICATES TYPE
03 SHVCODE PIC A.
* RETURN CODES
03 SHVRET PIC X.
* RESERVED (SHOULD BE 0)
02 PIC X(2).
* LENGTH OF FETCH VALUE BUFFER
02 SHVBUFL PIC S9(9) BINARY.
* ADDRESS OF VARIABLE NAME
02 SHVNAMA USAGE POINTER.
* LENGTH OF VARIABLE NAME
* (SET ON FETCH)
02 SHVNAML PIC S9(9) BINARY .
* ADDRESS OF VALUE BUFFER
02 SHVVALA USAGE POINTER.
* LENGTH OF VALUE BUFFER
02 SHVVALL PIC S9(9) BINARY .
77 SHVBLEN PIC 9(9) BINARY VALUE IS 32.
* SHARED VARIABLE REQUEST BLOCK - FUNCTION CODES
*******************************************************
* SET VARIABLE FROM GIVEN VALUE
77 SHVSTORE PIC A VALUE IS 'S'.
* COPY VALUE OF VARIABLE TO BUFFER
77 SHVFETCH PIC A VALUE IS 'F'.
* DROP VARIABLE
77 SHVDROPV PIC A VALUE IS 'D'.
* SYMBOLIC NAME SET VARIABLE
77 SHVSYSET PIC A VALUE IS 's'.
* SYMBOLIC NAME FETCH VARIABLE
77 SHVSYFET PIC A VALUE IS 'f'.
* SYMBOLIC NAME DROP VARIABLE
77 SHVSYDRO PIC A VALUE IS 'd'.
* FETCH NEXT VARIABLE
77 SHVNEXTV PIC A VALUE IS 'N'.
* FETCH PRIVATE INFORMATION
77 SHVPRIV PIC A VALUE IS 'P'.
* SHARED VARIABLE REQUEST BLOCK - RETURN CODES (SHVRET)
**********************************************************
* EXECUTION WAS OK
77 SHVCLEAN PIC X VALUE IS X'00'.
* VARIABLE DID NOT EXIST
77 SHVNEWV PIC X VALUE IS X'01'.
* LAST VARIABLE TRANSFERRED ("N")
77 SHVLVAR PIC X VALUE IS X'02'.
* TRUNCATION OCCURRED FOR "FETCH"
77 SHVTRUNC PIC X VALUE IS X'04'.
* INVALID VARIABLE NAME
77 SHVBADN PIC X VALUE IS X'08'.
* INVALID VALUE SPECIFIED
77 SHVBADV PIC X VALUE IS X'10'.
* INVALID FUNCTION CODE (SHVCODE)
77 SHVBADF PIC X VALUE IS X'80'.
77 REXXRC PIC S9(9) BINARY.
77 REXXRTNRC PIC S9(9) BINARY.
77 SHVRETB PIC S9(9) BINARY.
02 VARNAME1L PIC 999 VALUE 6.
02 VARNAME1V PIC X(250) VALUE 'LEREXX'.
02 VARVALUE1L PIC 999.
02 VARVALUE1V PIC X(250).
MOVE 250 TO SHVBUFL OF SHVBLOCK.
* FETCH (DIRECT NOT SYMBOLIC) THE VARIABLE
MOVE SHVFETCH TO SHVCODE OF SHVBLOCK.
PERFORM INVOKE-IRXEXCOM
DISPLAY 'FETCHING LEREXX FROM COBOL: '
DISPLAY 'LEREXX: ' VARVALUE1V
* STORE (DIRECT NOT SYMBOLIC) THE VARIABLE
MOVE 20 TO SHVVALL OF SHVBLOCK.
MOVE 'VALUE SET IN COBOL..' TO VARVALUE1V
MOVE SHVSTORE TO SHVCODE OF SHVBLOCK.
PERFORM INVOKE-IRXEXCOM
STOP RUN.
* THE VARIABLE NAME
SET SHVNAMA OF SHVBLOCK TO ADDRESS OF VARNAME1V.
MOVE VARNAME1L TO SHVNAML OF SHVBLOCK.
* THE VARIABLE VALUE
SET SHVVALA OF SHVBLOCK TO ADDRESS OF VARVALUE1V.
* CALL THE REXX SERVICE AS A SUBPROGRAM TO SET THE
* shared variable
CALL REXXRTN USING REXXRTN ,
OMITTED , OMITTED ,
SHVBLOCK ,
NULADDR , REXXRC
Returning REXXRTNRC.
*
MOVE SHVRET TO SHVRETB
DISPLAY "REXX RC IS " REXXRC ","
" IRXEXCOM RC IS " REXXRTNRC ","
" SHVRET IS " SHVRETB "." .
ACF0C038 ACF2 LOGONID ATTRIBUTES HAVE REPLACED DEFAULT USER ATTRIBUTES
READY
EX 'MY.REXX.PDS(REXCOB)'
THIS IS FROM REXX
LEREXX: VALUE IS SET IN REXX
CALLING COBREXL..
RC : 0
BACK FROM COBREXL
LEREXX: VALUE SET IN COBOL..
READY
END
******************************* Bottom of Data ********************************
REXX RC IS 000000000, IRXEXCOM RC IS 000000000, SHVRET IS 000000000.
FETCHING LEREXX FROM COBOL:
LEREXX: VALUE IS SET IN REXX
REXX RC IS 000000000, IRXEXCOM RC IS 000000000, SHVRET IS 000000000.
******************************* Bottom of Data ********************************