Rexx - 1.1
Description
If your Mainframe application contains Rexx (z/OS TSO/E REXX) source code and you want to view these object types and their links with other objects, then you should install this extension.
The extension provides Rexx programs and routines, the calls between them and to other programs, the SQL queries run through DB2 (DSNREXX), the files accessed with EXECIO, and the links from JCL steps.
Download and installation instructions
The extension will be automatically downloaded and installed when any of the file types listed below are delivered in the source code. It can be managed through the Application → Extensions interface.
Supported file types
| Code type | Supported file extension | Required? | Comments |
|---|---|---|---|
| Rexx programs | *.rexx (case insensitive) |
✅ | 1 program per file |
Files that do not look like Rexx (no REXX comment on the first line and no Rexx-only statement such as PARSE ARG) get a Rexx Program object, but their content is not analyzed.
Supported languages
| Scope | Status |
|---|---|
TSO/E REXX execs on z/OS: TSO/ISPF execs, ISPF edit macros, batch execs (IRXJCL, IKJEFT*), REXX Compiler source |
✅ |
Classic REXX for other systems (VM/CMS, REXX/VSE, Regina, …): analyzed as REXX, but their host commands (ADDRESS CMS, CP, …) are not interpreted |
⚠️ |
| Object REXX / ooRexx extensions, NetRexx | ❌ |
Host commands are interpreted only for EXECIO, DB2 (DSNREXX) and ISPEXEC SELECT PGM. Other host environments (ISREDIT, SYSCALL, NetView, …) are analyzed as plain REXX code.
Transactions
Transaction support is derived from metamodel concepts used to build CAST Imaging Blueprint and structural transaction flows. Entry Points start transactions; Exit Points include both output/boundary concepts and Data Entities manipulated by transactions.
| Role | Support | Breakdown |
|---|---|---|
| Entry Point | No direct concept type details | |
| Exit Point |
|
Data version: 1.0.1-funcrel
ISO 5055 Structural Rules
Quality support is based on ISO 5055 structural rules available for the selected extension version.
| Reliability | Maintainability | Security | Performance Efficiency |
|---|---|---|---|
Data version: 1.0.1-funcrel
What results can you expect?
Programs, routines and calls
Each .rexx file is a Rexx Program. Each label is a Routine, or a Protected Routine when it is declared with PROCEDURE. A routine runs from its label to the next label.
Calls create a call link from the calling program or routine. The target is found as follows:
CALL nameand function callsname(...): the routine of the same file with this name. When a label is declared several times in the file, the last one is used. Otherwise, all the analyzed Rexx programs with this name. A data set member such asCALL 'MY.REXX.LIB(MYPGM)'is resolved by its member name (MYPGM). Calls to Rexx built-in functions (SUBSTR,DATE, …) and TSO/E external functions (OUTTRAP,LISTDSI,SYSDSN, …) are ignored.SIGNAL nameandSIGNAL ON condition [NAME name]: only the routine of the same file with this name (forSIGNAL ON conditionwithoutNAME, the routine named after the condition). ASIGNALnever targets another program, and aSIGNALto the routine it is written in (a jump back to its own label) creates no link.ADDRESS ISPEXEC "SELECT PGM(name)"(or a"ISPEXEC SELECT PGM(name)"command): only the analyzed Rexx programs with this name, never a routine of the same file.
When a CALL, a function call or an ISPF SELECT PGM matches no routine and no Rexx program, a Call to Generic Program object is created, which can be linked to programs of other languages (see Calls to other languages).
A program whose name is computed at run time (for example with INTERPRET) is not resolved.
SQL support
The extension creates a SQL Query object for each SQL statement run through the DB2 REXX interface (DSNREXX): CALL SQLEXEC, CALL SQLXCMD and EXECSQL commands. The query is linked from the program or routine that runs it. Links from the queries to the tables, views and procedures are created by the SQL Analyzer extension.
Dynamic SQL is supported: for PREPARE ... FROM :variable and EXECUTE IMMEDIATE :variable, the query text is the value assigned to the variable, with one query for each possible value. A part whose value is not known at analysis time is replaced by {}.
For example:
/* REXX - reorganize a department */
CALL REORG
EXIT
REORG: PROCEDURE
ADDRESS DSNREXX
"EXECSQL UPDATE DSN8C10.DEPT SET MGRNO = NULL WHERE DEPTNO = 'E21'"
SQLSTMT = "DELETE FROM DSN8C10.EMP WHERE WORKDEPT = 'E21'"
"EXECSQL EXECUTE IMMEDIATE :SQLSTMT"
RETURN

File access (EXECIO)
EXECIO commands create a Rexx File object for each DD name, with an access read link (DISKR), an access write link (DISKW) or both (DISKRU) from the program or routine that runs the command.
A DD name whose value is not known at analysis time (for example one passed as an argument) creates no Rexx File object.
For example:
/* REXX - copy the input records to the output file */
"EXECIO * DISKR INDD (STEM REC. FINIS"
"EXECIO" REC.0 "DISKW OUTDD (STEM REC. FINIS"
EXIT
Calls to other languages
Rexx programs are linked to and from programs written in other languages (COBOL, PL/I, Assembler, …) by the Web Services Linker extension. For example, the Rexx program below is linked to the COBOL program COBPGM, and a COBOL CALL 'MAINPGM' is linked to the Rexx program MAINPGM:
/* REXX - run the COBOL report program */
PARSE ARG MEMBER
CALL COBPGM MEMBER
EXIT
Objects
Links
Rexx links — UA analysis
Rexx links — Application level (cross-technology)
Quality rules
Known limitations
Anything that is not described in this documentation is not supported.
The following common constructs are not supported yet:
- Programs started through a TSO command are not linked:
"%NAME","EX 'HLQ.LIB(NAME)'"(orEXEC), an exec run as an implicit TSO command (ADDRESS TSO "NAME ..."), andISPEXEC SELECT CMD(...). OnlyCALL name,name(...)andISPEXEC SELECT PGM(name)are linked. - Load modules started with
ADDRESS LINKMVS,LINKPGM,ATTCHMVSorATTCHPGMare not linked. - Dynamic code is not analyzed:
INTERPRET,SIGNAL VALUE, and host commands held in a variable (for exampleADDRESS DSNREXX CMD). - SQL: only DB2 through
DSNREXXis supported. IMS DL/I calls (ADDRESS REXXTDLI) are not. - Files: only
EXECIOis supported.ALLOC/FREEare not analyzed, so a Rexx File is named after its DD name and is not linked to the dataset. Stream I/O functions (LINEIN,LINEOUT,CHARIN, …) are not supported. - JCL: in the
SYSTSINinput,EX/EXECcommands are not supported, and aPARMusing a symbolic parameter (&NAME) is not resolved.