[index (frame version)] [index (text version)]
uni-REXX, an interpreter (rxx), has been upgraded from Version 1.63b to Version 2.02. This file contains extracts from the readme file supplied by the vendor of uni-REXX.
The Workstation Group -- uni-REXX readme file -- 12 September 1994
uni-REXX is a UNIX implementation of IBM's popular REXX programming
language. It provides an alternative to shell programming and other
languages such as awk or perl for command procedures, rapid prototyping,
or more complex application development. It may also be embedded
as a macro language within applications written in compiled languages such
as C. It is the macro language for uni-XEDIT, a Unix implementation
from The Workstation Group of IBM's XEDIT System Product for VM/CMS.
It is also the language for development of customized dialogs in uni-SPF,
a Unix implementation of IBM's Interactive System Productivity Facility,
also from The Workstation Group.
__________________________________________________________________________
uni-REXX 2.02 NOTES
This section contains information specific to Version 2.02 of uni-REXX. It covers enhancements or modifications implemented after the documentation was printed and special items of interest. Topics in this section are:
1. Recent Enhancements
2. uni-REXX Sample Library
3. "Incorrect" PROCEDURE Syntax
_______________________________________________________________________
1. Recent Enhancements
Version 2.02 includes support or a number of environment variables to override internal defaults.
The enhancements included since the last release are detailed in the "Release Guide" section of this file.
This version is fully compliant with REXX Language Level 4.00, as
documented in "The REXX Language, A Practical Approach to Programming"
(Second Edition, 1990) by M. F. Cowlishaw.
2. The uni-REXX Sample Library provides sample applications that you may use as is or adapt for your specific needs. It includes the following directories:
functions useful functions which
may be called from any
uni-REXX program; also includes a math function
package that may be added to your interpreter
filters useful filters
that accept input from STDIN or from
a pipe and send output to STDOUT, which may be
redirected to a file or piped to another command or
program
utilities general-purpose programs
which may be used alone or
called from other programs; includes date calculation
programs, a system administration tool for AIX/3,
a program to perform the equivalent of the Unix
'which' command, and many more
api.samples all the examples from the
reference manual chapter on
Application Programming Interfaces, and a program
to build the examples on your system
extensions.samples the example applications from the
reference manual
chapter on Unix-Specific Extensions and programs top
build them on your system
The functions, api.samples, and extensions.samples
directories each
include samples that must be compiled and built
for use on your system.
Each of these directories includes the appropriate
programs to automate
this process. These programs have names
that end in the characters
"bld". The README file in each directory
describes how to use the "bld"
programs. In addition, the program provides
its own help if you invoke
it with the '-h' option, as in "apibld -h".
3. "Incorrect" Procedure Syntax
The IBM implementations of REXX allow what appears to be an incor- rect internal procedure syntax to operate properly. uni-REXX does not support this syntax, which does not appear to conform toCowlishaw's definition of the language. The following is an example of the "incorrect" syntax (which actually works in the IBM mainframe implementations) and of the corresponding syntax which will work in both the IBM mainframe and the Unix environments:
/* The following way of using interpret
to access a stem
works on the mainframe, and
will not work with uni-REXX */
name:
arg stem .
interpret 'procedure expose' stem'.'
The language definition does not allow for any instructions being placed between the label ("name:") and the procedure instruction. Hence the "arg" command cannot be placed between the label and the (interpreted) procedure instruction.
/* here is a way to accomplish the same thing
that is valid under
Cowlishaw's language definition
and will work in both
environments */
name:
interpret
'procedure expose' arg(1)'.'
Note that both these methods imply that the "interpret" isn't really
a REXX instruction that lies between the label and the procedure instruction.
The supposition here is that the "interpret" instruction isn't actually
executed, but its operand(s) are.
_________________________________________________________________________
uniREXX RELEASE GUIDE FOR VERSION V2.02
This Release Guide includes a description of all enhancements that have been made to this product since the last major release. Clients who are on a product maintenance program automatically receive major releases as part of their maintenance contract.
The development and enhancement of products from The Workstation Group is a continuous process between each major release. When an interim release is made available to correct a specific problem, such an interim release may already contain some of the enhancements scheduled for the next major release. Users in some environments may have received interim releases (containing such enhancements) that were not suitable for other environments.
This Release Guide is organized to accommodate these situations,
with the enhancements included in the order that they were implemented.
For ease of understanding, the version number in which a set of enhancements
first appeared is identified in the text. Any version number that
does not end in a zero represents an interim release, which may not have
been available for your particular platform.
ENHANCEMENTS IN uni-REXX V2.00:
This version is compliant with REXX Language Level 4.00 as defined in "The REXX Language, A Practical Approach to Programming" (Second Edition, 1990) by M. F. Cowlishaw.
New Built-In Functions:
B2X - converts
binary representation to hexadecimal
CONDITION - returns information about the current
trapped condition
STREAM - determines the state of
a stream or operates on a stream
X2B - converts
hexadecimal representation to binary
Enhancements to Built-In Functions:
DATE - support for 'B'
option (base date)
FORMAT - support for fourth and
fifth arguments
POPEN - additional argument
to specify whether command output
is PUSHed or QUEUEd on the stack
Enhancements to Instructions:
Support for CALL ON <condition> NAME <trapname>
Support for SIGNAL ON <condition> NAME <trapname>
Enhancement of TRACE command output
Support for additional addressable environments:
csh
ksh
sh
command
Support for external PROCEDURE EXPOSE
Unix-Specific Extensions:
Commands - EXECIO
GLOBALV
MAKEBUF
DROPBUF
DESBUF
Functions - Process Management:
_exit
_setsid
_fork
_sleep
_getpid
_wait
_getppid _waitpid
_kill
Configuration Management: _geteuid
_gethostname
_gethostbyname _getservbyname
_gethostid _getuid
File/Directory Management: _closedir
_stat
_opendir _truncate
_readdir _umask
System Error Processing: _errno _syserrlist
Regular Expressions: _regex
Interprocess Communication: _accept
_getservbyname
_bind
_listen
_closesocket _recv
_connect _send
_gethostbyname _socket
_gethostname
ENHANCEMENTS IN uni-REXX V2.02:
This version includes support for a number of environment variables to override internal default settings. Each of these environment variables is described below.
REXXENVPREFIX The prefix used for all uni-REXX environment variables.
Default: REXX
If this environment variable is set, all uni-REXX environ-
ment variables shown below plus REXXLIB and REXXPATH
(described in the Reference Manual) begin with the charac-
ters specified.
Examples: If you set REXXENVPREFIX to "ABC", then
uni-REXX searches the path specified by the
variable ABCPATH to find external programs.
If you set REXXENVPREFIX to "abc_", then
uni-REXX searches the path specified by the
variable abc_PATH to find external programs.
Note that the setting of REXXENVPREFIX and its use with
other environment variables is case sensitive.
REXXSUFFIXSOURCE The suffix used when searching for uni-REXX programs.
Default: rex
When the default is used, if two source programs ("abc" and
"abc.rex") exist, uni-REXX runs program "abc". If this
environment variable is set, uni-REXX runs the program with
the specified suffix, regardless of the existence of the
non-suffixed program.
The uni-REXX compiler (rxc) always uses a suffix to locate
its input file.
REXXTEMP The directory where temporaries are placed.
Default: /tmp
REXXTEMPDISK The directory where temporary disk files are placed.
Default: current setting of REXXTEMP or its default
REXXTEMPIPC
The directory where temporary interprocess communication
files are placed
Default: current setting of REXXTEMP or its default
REXXMODULECC For
generating executable binaries using "rxc -m", the path
to the C compiler on the current system.
Default: cc
REXXMODULECFLAGS For generating executable
binaries using "rxc -m", the
compiler flags to be used.
Default: platform-specific
REXXMODULELDFLAGS For generating executable binaries
using "rxc -m", the
loader (ld) flags to be used.
Default: platform-specific
REXXMODULELDSYMBOLS For executable binaries
generated with "rxc -m", an
indicator of whether or not the resulting binary is to
be stripped.
Default: module is stripped
If this environment variable is set to any value, the
module is not stripped.
[index (frame version)] [index (text version)]