REXX Tips & Tricks:Additional Software for REXX
Development & Debugging Tools
This sections contains information about additional usefuls tools for developing REXX programs.
Samples & skeletons
Skeleton - a REXX program skeleton
Name SKELETON Version 1.0, 03.08.1995 Author Bob Rice Empirical Heuristics P.O. Box 189 West Hurley, NY 12491 (see EMail Addresses) Distrib. Shareware, $0 fee Type REXX programs Price - Source Internet Name: SKELETON.*
Description from the author:
"Extremely simple to use, the REXX Skeleton provides: display or extraction of embedded help code, automatic external function registration, automatic initialization of useful "global" variables, automatic trapping of REXX execution time events and errors with dump file generation containing variables and queues, and debug assistance. Needs only the standard OS/2 REXX but has more function with REXXLIB. Great for beginning REXX programmers as well as more advanced programmers. This is Zero-cost Shareware uploaded by the author, Bob Rice."
Note: see also Template for a REXX program
Preprocessors & Formating tools
PPWIZARD - a pre-processor
Name PPWIZARD - a generic pre-processor Version 03.059 Author Dennis Bareis (see EMail Addresses) Distrib. Freeware Type EXE Price - Source The home page of the author (see Internet - Web Pages) Name: ppwos2.*
Description from the author:
"This is a generic processor (for any text files) with specific support built in for rexx and html files.
When used with the "/rexx" switch it will by default remove comments and pack rexx code and then perform a syntax check.
You have access to instructions such as #define, #evaluate, #include, #if and #ifdef. You can develop macros that take both optional and manditory parameters and the macros can conditionally generate output.
The program is extendable through rexx. Commands such as #if tests can be very complex, for example it would be relatively simple to compare environment variables or contents of files etc.
The html capability of this program is the basis of a series of e-Zine! articles (3 so far). Its use for rexx development would have to be at least as important. AWE def files are being developed using PPWIZARD macros and I generate PPWIZARD itself plus the extensive PPWIZARD INF and HTML documentation using PPWIZARD macros."
MakeREXX - a pre-processor for REXX
Name MAKEREXX - pre-processor for REXX Version 10/92 Author Tony Thigpen 115 West York Court Longwood, FL 32779 Distrib. Freeware Type REXX program Price - Source Internet Name: MAKEREXX.*
Description from the author:
"MAKEREXX is a utility that allows a REXX programmer to create a library of generic routines. Those routines are maintained in a subdirectory named 'XXX' and must have a file suffix of '.XXX'. The REXX code produced by MAKEREXX is placed in a subdirectory of '.CMD' and will have a suffix of either '.CMD' or '.ERX'. '.CMD' files are OS/2 REXX routines while the '.ERX' files are EPM editor REXX routines. Mainline REXX routines are maintained in a subdirectory named 'REX' and must have a file suffix of either '.REX' or '.EPM'. '.REX' routines will be expanded into '.CMD' routines while '.EPM' routines will be expanded into '.ERX' routines."
PrepProc - pre-processor for REXX
Name PREPPROC - pre-processor for REXX Version v2.00 Author Hilbert Computing Gary Murphy Distrib. Freeware Type REXX program Price - Source Internet Name: PREPRC.*
PrepProc is a simple pre-processor for REXX programs written in REXX. Supported directives in this version are #define, #ifdef, #ifndef and #include.
RxPrep - REXX pre-processor
Name RXPREP Version 1.8, 24.11.1993 Author Richard Moore Distrib. Freeware, DAP Software Type REXX program Price - Source Internet Name: RxPREP.*
This is another pre-processor for REXX programs written in REXX.
RXPREP is only available for DAP members.
REXX Toolbox and pre-processor ($)
Name REXX Toolbox and Preprozessor Version V1.1 1995 Author Joerg Burdorf Im Leuters 12 53567 Asbach Germscheid Germany Distrib. Shareware Type REXX DLL Price 20,- DM Source Internet Name: FASTREXX.* Note All docs are in German!
FASTREXX is mainly a pre-processor for REXX programs. Also included are various REXX procedures.
RCF - REXX Code Formatter/2 ($)
Name RCF - REXX Code Formatter/2 Version Release 1.2.9 Author RKE Consulting, Inc. P.O. Box 11569 Spring, TX 77391-1569 USA Distrib. Shareware Type VisPro REXX Executable Price $15 Source Internet Name: rcf2102j.*
Description from the author:
REXX Code Formatter/2 Description
The REXX Code Formatter/2 (RCF/2) is an OS/2(*) REXX application written using VisPro/REXX(**) and VisPro/Reports(**). It is designed to allow a REXX programmer to format a program in a particular style, insuring that the format of each element of the REXX program conforms to that style.
Features of REXX Code Formatter/2
Using this product, users may, for example:
- Define the indentation to be used in general plus the amount for:
- Program statements subordinate to DO and SELECT,
- Statements that begin with THEN/ELSE, and
- Continued statements.
Specify whether:
- Lines are to be split at semicolons,
- Redundant spaces are to be removed from program statements,
- New lines are to start before or after THEN/ELSE keywords, and
- END statements are to be indented to align with the corresponding DO/SELECT subordinate statements.
�
Specify the formatting for:
- REXX keyword Instructions,
- REXX keywords besides those that begin a REXX keyword instruction,
- Variables names,
- Function names, and
- Labels.
- Define special formatting for selected function names.
- Check for duplicate labels and insure all labels start on a new line.
- Have RCF/2 create a file of label names as they appear in the program
- so that all references to them in the program (and even other programs) will reflect this same format.
- Align full-line, left-hand, and right-hand comments.
- Generate a listing of the formatted program.
In addition, while RCF/2 is not a syntax-checker or code debugger, it does provide some assistance in program development. It can, for example:
- Identify DO and SELECT instructions missing a corresponding END clause,
- Flag comments that are not started but not closed, and
- Highlight literal strings with a missing quote.
New features in Release 1.2.0 are:
- A cross reference facility for labels, variables, and function names.
- Optional formatting notes if undefined function names are found.
- The ability to add "Commented line numbers" to statements.
- Landscape printing formats.
- Right-hand alignment of full-line comments with extension and truncation to allow for "boxing" of comments.
- Specification of file name and directory for generated associated label files.
- Maintenance of multiple generated associated label file data in a single file.
- Separate formatting specification for the standard REXX built-in functions.
- The specification of the file to be edited as a parameter at RCF invocation.
- The extension of the allowable indentation values to be up to 999.
- Placement of the print specification in a separate page to facilitate changing of printer specifications.
- Use of WARP 4 notebook format for configuration settings when using OS/2 WARP 4.
RexxComm
Name RexxComm - Formats comments in REXX program files Version 2000-07-16 Author Marcus C. de Geus (see EMail Addresses) Distrib. Freeware Type REXX program Price - Source Internet Name: rexxcomm.*
This program formats comments in REXX program files according to a user-defined option and reports any uncommented program lines.
Syntax check programs
RXCALLLST - show the CALL structure of a program
Name RXCALLST Version 05/01/2003 Author Wilfried Eike Distrib. Freeware Type VisPro REXX EXE Price - Source Internet Name: RXCALLST.*
RXCALLST is a tool to show the CALL structure of REXX programs.
RXCALLLST shows the call structure of a REXX program in a TOP-DOWN-view and a BOTTOM-UP view. It can also detect rescursive code and dead code.
(see also Checkfunc - Function analysis of a REXX program and Codeanalizer)
Checkfunc - Function analysis of a REXX program
Name CheckFunc Version 1.02 Author Toby Thurston (see EMail Addresses) Distrib. Freeware Type REXX CMD Price - Source Internet Name: checkfunc102.*
Checkfunc is a handy routine to help you develop correct and portable REXX code. It contains a mini-parser for REXX that finds all the function calls in a program and lists them out for you to see. The output listing shows
- BIFs Used
- Internal functions
- Duplicate (and therefore unreachable) labels
- Rexxutil common functions
- Rexxutil OS/2 only functions
- Rexxutil Windows only functions
- Rexxutil Version 2 functions
- External functions
- External commands
(see also RXCALLLST - show the CALL structure of a program and Codeanalizer)
Codeanalizer
Name CheckFunc Version 1.02 Author Doug Rickman Distrib. Freeware Type REXX CMD Price - Source Internet Name: codeanalyzer###.* ### is the version number, e.g. 005
Description from the author:
"CodeAnalyzer is a generic engine for analyzing and formatting REXX code. This is a tool for the REXX programmer who works with large complex programs."
(see also Checkfunc - Function analysis of a REXX program and RXCALLLST - show the CALL structure of a program)
Debugger
RXD - Rexx Debugger
Name RXD Version V1.4 Author Patrick J. Mueller IBM Distrib. Freeware, IBM EWS Type REXX Debugger (PM) Price - Source Internet Name: RXD.*
RxD is a very useful debugger for OS/2 REXX programs. RxD supports Breakpoints, single stepping and watch variables. RxD is a PM program.
Note that RXD is an older 16-bit app and, according to the author, there may be some errors or unexpected conditions using it on 32-bit OS/2 (like WARP).
"Compiler" & Translator
Rexx/Wrapper
Name REXX/Wrapper Version 1.4 Author Mark Hessling (see EMail Addresses) Distrib. GPL (GNU) Type REXX cmd & more Price - Source Internet Name: rxwrap14.*
Description from the author:
"Rexx/Wrapper is a tool that wraps a Rexx source file, or tokenised code into an executable program. The Rexx source code can be optionally compressed and encoded to ensure that the original Rexx code cannot be viewed (unless you have the original encryption key).
To use Rexx/Wrapper you need two extra bits of software: 1) A supported Rexx interpreter 2) A supported C compiler
The Rexx interpreter that is linked with the executable must be capable of executing an "instore" Rexx macro via the SAA API. The Rexx interpreter used to build the executable wrapper can be different to the interpreter used to run the executable program. If wrapping tokenised code, then the Rexx interpreter that creates the tokenised code, MUST be the same interpreter that runs the tokenised code.
All suppliers of Rexx interpreters provide access to their interpreter via a shared or dynamic library. This means that it is not possible to build a completely stand-alone executable; you will always have to include the shared or dynamic library with the executable built with Rexx/Wrapper.
There is one exception to this rule; Regina. Regina also provides a static library, which means you can link your program with Regina's static library, and you will get a completely stand-alone executable.
There is a catch however with using the Regina static library :-(. The Rexx program that you wrap, cannot dynamically load an external function package. This is because the Regina static library does not (and cannot) support the dynamic loading of external functions. External functions, by their very nature, require the presence of a dynamic or shared library to operate.
Rexx/Wrapper supports all C compilers that support ANSI prototypes. Rexx/Wrapper will not work with older K&R C Compilers.
For a list of the supported C compilers for the current platform, run rexxwrap.cmd with the '-help' switch and see the list below."
see also RxCLS - a REXX 'compiler' ($), REXXCC - a REXX "compiler" and REXX2EXE a REXX "compiler"
REXXCC - a REXX "compiler"
Name REXXCC - a REXX "compiler" Version v3.22 Author Bernd Schemmer Distrib. Freeware Type "compiled" REXX program Price - Source Internet Name: RCnnn.* where nnn is the version number
REXXCC "compiles" an OS/2 REXX program by substituting the source code with any text. This is possible because the OS/2 REXX interpreter stores a tokenized copy of each executed REXX program in the EAs of the program. If you execute an OS/2 REXX program, the OS/2 REXX interpreter first checks, if the tokenized copy in the EAs is still valid and, if so, executes the tokenized copy and ignores the source code.
Beginning with version 3.00 REXXCC can also compress REXX programs (this means: delete all leading and trailing whitespaces, all linefeeds and all comments).
Beginning with version 3.10 REXXCC also contains a REXX program to unpack packed or compressed REXX files.
Beginning with version 3.20 REXXCC also contains a REXX program to use the macro space for creating token images of REXX programs.
REXXCC is a command line program. But there is also a PM front-end for REXXCC called REXXCC/2 in the archive. REXXCC/2 uses Rexx Dialog for the PM interface.
The current version of REXXCC is always available at Hobbes in the same library as RXT&T (see Distribution)
Note: The format of the token image for REXX programs is the same since OS/2 version 2.1. So you can use a REXX program "compiled" with REXXCC on any OS/2 version since 2.1. But: You can't use a "compiled" REXX program with the new Object-Oriented REXX (see also "Compiling" REXX programs).
see also Rexx/Wrapper, RxCLS - a REXX 'compiler' ($) and REXX2EXE a REXX "compiler"