
NUMBER 289-048
DATE 890207
CATEGORY LS00, LS60
TYPE Programming
TITLE IBM VM REXX COMPILER FOR CMS
ABSTRACT IBM has already announced a Systems Application Architecture
(TM) (SAA) Procedures Language, the REXX language processor
(interpreter). This language will be supported in all the SAA
operating system environments. In response to specific requirements
from VM customers, IBM now announces VM REXX Compiler for CMS (CMS
REXX Compiler), which also supports the SAA Procedures Language
interface for the CMS environment.
OVERVIEW HIGHLIGHTS
The CMS REXX Compiler provides:
o SAA Procedures Language interface, as does the REXX language
processor (interpreter) for VM
o Run-time performance improvements
o User code security and integrity
o Exploitation of Extended Architecture (XA) and shared segment
capability
o Compile-time SAA conformance flagging
o Compiler listings and comprehensive static syntax checking
o Mutual invocation of interpreted and compiled programs
o Support of REXX interpreter's external program interfaces.
DESCRIPTION
SUPPORTS THE SAA PROCEDURES LANGUAGE INTERFACE, AS DOES THE REXX
LANGUAGE PROCESSOR (INTERPRETER) FOR VM: Programs compiled and run
with the CMS REXX Compiler are equivalent to programs being processed
by the VM/SP Release 6 System Product Interpreter (REXX interpreter)
provided:
o No errors are detected in the program at compile-time.
o The program does not use the INTERPRET instruction.
o The program does not use the TRACE instruction or the TRACE
built-in function.
o If used, the instruction OPTIONS ETMODE is the first instruction
of the program and specifies the option in the form of a literal
string.
With the above restrictions, all facilities defined in the SAA
Procedures Language and in VM/SP Release 6 REXX interpreter are
supported.
The REXX language defines the processing to occur in case
syntactic errors are detected. Because of its nature, the CMS REXX
Compiler diagnoses such syntactic errors already at compile time and,
depending on the severity of the errors, produces or does not produce
object code.
The INTERPRET instruction can in most cases be replaced by
other REXX constructs. In the rare cases where the INTERPRET
instruction is required, the program cannot be compiled, but has to
be interpreted. This in no way affects any programs that are being
called by the program containing the INTERPRET instruction or that
call this program: these programs can be compiled and will continue
to work together with the interpreted program.
A TRACE instruction is treated as a NOP instruction, and a
TRACE built-in function is assumed to return the value O (for OFF).
There is no need to delete those constructs from the source program.
The option ETMODE is inherently a static attribute of the
program. The compile-time support must know whether ETMODE is
specified as this influences the parsing of the source program.
RUN-TIME PERFORMANCE IMPROVEMENTS: Dependent on the REXX facilities
used in a program, different performance improvements can be
achieved.
Programs that mainly do integer arithmetic with default
precision (Numeric Digits 9) may improve performance by an order of
magnitude or more.
Programs that are just sequences of host commands will not
yield any noticeable performance improvement as the processing that
occurs by the run-time support is negligible when compared with the
processing of the host commands.
In general, programs will fall between these extremes and a
performance improvement of a factor between 3 and 7 can be expected.
USER CODE SECURITY AND INTEGRITY: Because the CMS REXX Compiler
produces object code, there is no longer an easy way to read the
code, understand the algorithms, and make specific changes. This
greatly reduces the possibility of unauthorized modifications. In
other words, the code is, in effect, EXECUTION ONLY.
EXPLOITATION OF EXTENDED ARCHITECTURE (XA) AND SHARED SEGMENT
CAPABILITY: The compiler as well as the object code generated by the
compiler support XA in exploitation mode. The run-time support can
be run from a shared segment either below or above the 16Mb line.
COMPILE-TIME SAA CONFORMANCE FLAGGING: A compiler option allows
detection and listing (FLAG) of the usages of REXX facilities in a
program that are not covered by the current level of the SAA
Procedures Language.
Most of the flagged facilities are additional facilities that
are implemented by the REXX interpreter and are also implemented by
the CMS REXX Compiler in order to ease migration between the two.
Deviations from the SAA Procedures Language that could only be
discovered by checks in the run-time support are not flagged.
COMPILER LISTINGS AND COMPREHENSIVE STATIC SYNTAX CHECKING: The CMS
REXX Compiler produces listings typical for compilers under the
control of compiler options.
Controlled by compiler options, the listings may contain:
o Source code (with the DO, IF, and SELECT nesting)
o Cross-references for all symbols and literal strings used with
typing information (as far as this can be derived by the
compiler)
o Messages.
As REXX does not need declarations, misspellings cannot be
detected by checking against a declaration. The cross-reference
listing is helpful for discovering such errors.
Static syntax checking is also typical for compilers. The
messages issued by the compile-time support are more detailed than
the REXX interpreter messages. Where feasible, the run-time message
(displaying the same error number as the REXX interpreter message) is
complemented by an additional message giving more detail.
MUTUAL INVOCATION OF COMPILED AND INTERPRETED PROGRAMS: Compiled and
interpreted programs may run together; that is, there is no
restriction on the mutual invocation of compiled and non-compiled
REXX programs.
SUPPORT OF REXX INTERPRETER'S EXTERNAL PROGRAM INTERFACES: Other
compiled High Level Language (HLL) programs such as VS COBOL II or VS
FORTRAN application programs can call programs compiled by the CMS
REXX Compiler in exactly the same way they call interpreted REXX
programs. This is known as the CALL REXX facility. The facility
allows the use of REXX programs for system-oriented tasks (like the
issuing of host commands) that would otherwise need assembler
programs, and is achieved by calling a routine in the Callable
Service Library (CSL) that activates the named REXX program.
Compiled REXX programs (like interpreted programs) can invoke
compiled HLL programs. These HLL programs use CSL routines for
accessing and/or manipulating any active variables of the calling
REXX program.
The CMS REXX Compiler supports all external interfaces that
are supported by the REXX interpreter, including EXECCOMM.
Therefore, all products working together with the REXX interpreter
using only such interfaces continue to work with compiled REXX
programs.
CUSTINFO SCHEDULE
Planned availability is June 1989.
TECHINFO TECHNICAL INFORMATION
SPECIFIED OPERATING ENVIRONMENT
MACHINE REQUIREMENTS: CMS REXX Compiler will run on any IBM
processor supported by VM/SP Release 5 (5664-167) (with or without
HPO), or VM/XA SP Release 1 (5664-308), and their subsequent
releases.
PROGRAMMING REQUIREMENTS: CMS REXX Compiler is designed to operate
under CMS Release 5 on VM/SP Release 5 (5664-167) (with or without
HPO), or CMS Extended Architecture Support (bimodal CMS) on VM/XA SP
Release 1 (5664-308), and their subsequent releases, unless otherwise
stated.
The CMS REXX Compiler compile-time support requires the
installation of the IBM C/370 Library (5688-039) as a prerequisite.
The run-time support of the CMS REXX Compiler does not require this
prerequisite.
Specific update levels of the operating systems will be
required to provide the interface needed for the compile-time support
and/or the run-time support of the CMS REXX Compiler. Details will
be provided at availability.
COMPATIBILITY: Compatibility of the CMS REXX Compiler with the REXX
interpreter is of great importance. Existing programs running on the
REXX interpreter will compile and run with the CMS REXX Compiler with
no (or little) modification. Exceptions, if any, will be described
in the USER'S GUIDE AND REFERENCE MANUAL (GH19-8120).
LIMITATIONS: The CMS REXX Compiler supports the CMS Release 6 REXX
interpreter language. Any facilities used in the user program that
are new in CMS Release 6 REXX interpreter cannot be debugged with an
earlier CMS release.
PERFORMANCE CONSIDERATIONS: In general, the CMS REXX Compiler will
improve run-time performance. The amount of improvement will depend
on the type of REXX programs.
USER GROUP REQUIREMENTS: CMS REXX Compiler addresses several
customer requests and satisfies fully three requirements and partly
one requirement submitted by the SHARE, SEAS, and European G.U.I.D.E.
IBM user groups.
SBCMSX84005 1984 SHARE requirement for a REXX compiler
CSVMVM83055 1983 SEAS requirement for a REXX compiler
ESVMDD85114 1985 EMEA G.U.I.D.E. REXX compiler for SPI
ESVMDD85115 1985 EMEA G.U.I.D.E. EXECUTE-ONLY
status for CMS files
PLANNING INFORMATION
INSTALLABILITY: CMS REXX Compiler will be shipped as a set of
modules, source, and EXEC files. The distribution medium is tape in
VMFPLC2 format. CMS REXX Compiler is installed by use of the VMFPLC2
LOAD command.
PACKAGING: CMS REXX Compiler will be shipped on one tape or one 3480
cartridge. A memo, program directory, and one copy of the following
will be supplied automatically with the basic machine-readable
material:
o General Information Manual
o Licensed Program Specifications
o User's Guide and Reference
o Diagnosis Guide
o The REXX Language supported by CMS REXX Compiler is described in
the VM/SP RELEASE 6 SYSTEM PRODUCT INTERPRETER REFERENCE MANUAL
(SC24-5239). This reference manual is shipped with VM/SP.
Note: the above is shown in the original announcement letter format.