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.
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.
Add a LIBDEF PROC,SEARCH= lib.sublib statement to the Com-plete startup for the library containing the REXX PROCs.
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
Make sure UREXX is catalogued with at least 148K , PV and AF.
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. |
/* 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
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).