IBM REXX Family

   REXX Compiler for VM/CMS

 
 

7 Feb 1989
Copyright © International Business Machines Corporation, 1989. All Rights Reserved

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.