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.