REXX

#### Search Results

Search

# REXX

Com-plete supports only non-TSO REXX environments; it invokes IRXJCL internally in order to execute a REXX script. Please refer to the IBM TSO/E REXX Reference documentation to learn more about the difference between TSO and non-TSO REXX environments.

## Activating REXX Support in Com-plete

### z/OS

In order to enable REXX, simply add the following DD statements to the Com-plete startup JCL:

    //SYSEXEC  DD DISP=SHR,DSN=your.rexxexec.library
    //SYSTSPRT DD DUMMY

Executing REXX scripts involves a large number of load modules, many of which are reentrant. It is therefore highly recommended to allow automatic loading of reentrant modules into RESIDENTPAGE.

### z/VSE

1. Add a LIBDEF PROC,SEARCH= lib.sublib statement to the Com-plete startup for the library containing the REXX PROCs.

2. Add the following entries to the sysparms:

       RESIDENTPAGE=ARXCMPTM
       RESIDENTPAGE=ARXCONAD
       RESIDENTPAGE=ARXEFVSE
       RESIDENTPAGE=ARXEMSG
       RESIDENTPAGE=ARXJCLAD
       RESIDENTPAGE=ARXOUT
       RESIDENTPAGE=ARXPARMS
       RESIDENTPAGE=ARX00ENU
       RESIDENTPAGE=ARX01ENU
       RESIDENTPAGE=ARX02ENU
       RESIDENTPAGE=ARX03ENU
       RESIDENTPAGE=ARX04ENU
       RESIDENTPAGE=ARX05ENU

3. Make sure UREXX is catalogued with at least 148K , PV and AF.

## Using Dataset Allocation Functions (z/OS)

Since Com-plete does not support TSO REXX environments, TSO commands like ALLOCATE, FREE, etc. will fail with a return code of (-3) when executed in REXX scripts under Com-plete. You can use BPXWDYN for dynamic allocation functions; see the IBM documentation Using REXX and z/OS UNIX System Services for details.

| Warning: Extreme care must be taken when using dynamic dataset allocation functions under Com-plete. You should always keep in mind that the scope of DD names is the address space. This means, if two users change the allocation of the same DD name simultaneously, then they override each other's allocation, causing unpredictable results. If you change the allocation of a DD name used by Com-plete itself, you are likely to cause a crash of Com-plete. Software AG recommends that, whenever possible, you let BPXWDYN chose a SYSnnnnn DD name for a dynamically allocated dataset, having the DD name returned to the REXX script using the RTDDN(gennedDD) parameter of BPXWDYN.

#### Example:

    /* REXX *** */
    Parse Arg dsn .
    xrc = bpxwdyn("ALLOC DA("dsn") RTDDN("mydd") SHR")
    If xrc <> 0 Then Do
       Say "Allocation failed, RC=" || D2X(xrc,8)
       Return xrc
    End
    Say "Here's the contents of the file:"
    "EXECIO * DISKR" mydd "(STEM in. FINIS)"
    Do i = 1 To in.0
      Say in.i
    End
    bpxwdyn("FREE FI("mydd")")
    Exit

## Running REXX EXECs

Com-plete provides a utility program UREXX that acts as an interface to REXX, handling input from and output to the terminal. In order to run a REXX EXEC, simply type at the command prompt:

    *UREXX execname args

Another way to use REXX in Com-plete is as a CGI scripting language with the HTTP server, as described in section Using REXX in Programming CGI Requests in the Com-plete HTTP Server documentation.

The returncodes eventually issued come directly from REXX, e.g. a value of 4E26 is 20006 in decimal, which refers to the message IRX0006 (see IBM Manual TSO/E REXX Reference, IRXEXEC Returncodes).

### On this page

- Activating REXX Support in Com-plete
- Using Dataset Allocation Functions (z/OS)
- Running REXX EXECs