[go: up one dir, main page]

0% found this document useful (0 votes)
312 views30 pages

Ibm Rexx Compiler

The document describes IBM's REXX Compiler product from 1991. It provides an overview of REXX and interpreters, positions the compiler as complementing the CMS REXX interpreter, and details how the compiler works in two steps of compiling the REXX source code and running the compiled program. It also outlines the benefits of compiled REXX such as improved performance and protected, unreadable programs.

Uploaded by

MEHDI1360
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
312 views30 pages

Ibm Rexx Compiler

The document describes IBM's REXX Compiler product from 1991. It provides an overview of REXX and interpreters, positions the compiler as complementing the CMS REXX interpreter, and details how the compiler works in two steps of compiling the REXX source code and running the compiled program. It also outlines the benefits of compiled REXX such as improved performance and protected, unreadable programs.

Uploaded by

MEHDI1360
Copyright
© Attribution Non-Commercial (BY-NC)
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 30

IBM REXX COMPILER

BERT MCER
IBM

121
IBM REXX Compiler

Bert Moser

IBM Vienna Software Development Lab


Wien 1, Cobdengasse 2

c / o IBM Austria
Obere Donaustrasse 95
A - I 020 Austria
EUROPE

MOSER@VABVMI .IINUSl .IBM.COM

( + 431) 21 145-4476

May/9 1

122
Overview

REXX and Interpreters

CMS REXX Compiler COMPLEMENTS SPI

REXX Compiler Improvements and Requirements

05/91 EJM IBM REXX Compiler

123
I
REXX History

1 '79 Mike Cowlishaw becomes father of REXX I


'83 Command Language for IBMs VM/CMS
'87 SAA Procedures Language
'89 REXX supported on MVS
'90 REXX supported on OS/2 and OS/400

I ~2/89IBM announces the CMS REXX Compiler I


Available since 7/89

Developed by IBM Vienna Software Development Lab


Based on IBM Israel Scientific Center's feasibility study

- Compilability of REXX
- Appropriaterun-time performance improvements

I 11/89 Library becomes a separate product I

05/91 EJM IBM REXX Compiler

124
REXX Positioning w Compllsr

Development SDL vlonba


rn

~ ~~~

I
COMMAND PROCESSOR TEXT EDITOR

System Commands Editor Commands


Program Log ic Program Log ic

R E x x

Program Logic
J
System Commands
\ppl ication Commands
Program Logic

'CASUAL' APPLICATION APPLICATION PROTOTYPING


AND PROGRAMMING

REXX initially implemented by Interpreters

- Excellent debugging features


- Very short and appealing edit/run cycle

HOWEVER
- Better performance desirable

yl(l

05/91 EJM IBM REXX Compiler

125
HOWdoes a REXX Interpreter work w Compller

Development SDL %nM


a

I Single Step Approach I

i
1

REXX
Source
Interpreter
Program

Running REXX Program

0 Everything needs to be done at run-time

On every REXX program invocation

e REXX source must be made available to every user

05/91 EJM IBM REXX Compiler

12G
How does the REXX Comp iler work

Two Step Approach I

u1
Compile

Comp i 1 ed
REXX
Program
Source
Program
Comp i 1 e r
Program
Documen-
t a t ion

Run

---
4
-

REXX
Library

~~~~~

Running REXX Program

05/91 EJM IBM REXX Compiler

127
Compiled REXX Program

Compiled Code I
Executable /370 instructions
- Reentrant and relocatable

Invocations of Library routines


References to static symbols resolved

Symbol Tree I
Descriptors for all static symbols
Upwards and downwards connected
Symbols identifiable by their name

Control Blocks I
Run-time required
Pre-allocated and pre-initialized

05/91 EJM IBM REXX Compiler

128
I
Forms of Compiled REXX Programs

1 EXEC-type I
Same behavior as interpreted - ”transparently” replace

Same way of invocation and search sequence


EXECLOADable
* Shared segment capability

Module-type I
Other HLL compilers’ object format (ESD, RLD, TXT,..)

Linkable to other object programs


* Need to be LQADed - can be GEN’d into a module

Search order is different


CMS restriction: SVC-type arg/parmIist (PLIST)

05/91 EJM IBM REXX Compiler

129
Iz m
Product Components

Set of phases performing all compilation tasks

Compiled with IBM SAAC/370 Compiler

@ Prerequisite when compiling:


IBM C/370 Library V I (5668-039) or later

Run-time Library

Routines invoked from compiled REXX programs

Common toevery compiled program


Initialization, Termination, ...

Too bulky as to be copied to every program


String Arithmetic, Conversions, Comparisons, Built-in Functions, Compound Variable
AccesdHandling, ...

Extremely timecritical --> writtenin Assembler

05/91 EJM I B M HEXX Compiler

130
Usage Scenarios

Compiler/lnterpreter COMPLEMENT Each Other I


Existing REXX Programs

Comp i 1 e Run
--e b-
Correct/Migrate

Newly Developed REXX Programs

Editor REXX Source

I
-__-___--.

NOCOMPILE Check Syntax

1
rxr
REXX Interpreter De bug REXX Compiler
___

Compile
_ p _ _ _ _ _ _ - p

Run
REXX Library
- ____

05/91 EJM IBM REXX Compiler

131
Compiled REXX - Benefits

Significantly Faster than Interpreted

"Plug-compatible" with Interpreted

Language Equivalent to Interpreter

"Unreadable" REXX Programs

Comprehensive Program Documentation

~~~ ~

05/91 EJM IBM REXX Compiler

132
- ... wars(
compllor

Compiled REXX Benefits Developnmnt (IDL Manna

I Comprehensive REXX Program Documentation I


Source and Cross-Reference Listings
Syntax check whole program
More accurate messages
Begin debugging with more-correct programs

Improveprogramquality
Increase developer productivity

I "Unreadable" Compiled REXX I


Executable /370 code

Provide programintegrity
Improved
maintainability
0 Protect REXX-coded assets

05/91 EJM IBM REXX Compiler

133
Source Listing Example

SAMPLE EXEC G1
CMS REXX COMPILER 1.1.0 TIME: 11:35:02 DATE: 30 May 1989

IF DO SEL LINE C -+-1-+--2--+---3---+---4---+---5--

1 /* SAMPLE i n c o r r e c t REXX program */


2
3 Parse Arg Tmp
Val.
4 = TRANSLATE(tmp)
5 l i n e . 2 = LEFT(val.,2, '40')

+++EAGGA00771S I n v a l i d o r m i s s i n g argumeni(s) on b u i l t - i n f u n c t i o n
6 $ = EXTFUNC(line.2)
7 C a l l INTFUNC 2
8 Exit
9
10 INTFUNK: Procedure Expose x. i
11
+++EAGGA00072S Label not found
Signal on NOVALUE NAME y-value
T
12 Do x . i
1 13 I f x . i / / 2 /= 0 then
1 1 14 say "Odd: x. i
1 15 End
Ret16 urn
17
18 my-valu: Say "NOVALUE r a i s e da t :s i g l
19 Ret urn

20
+++EAGGA00654S Unmatched
1
* end o f program SAMPLE
ql/*ll

05/91 EJM

134
rn
Cross Reference List Example

TTRIBUTE ITEM REFERENCES

LABELS,BUILT-INFUNCTIONS,EXTERNAL RTNS ____

EXTFUNC E X 1 RTN 6
INTFUNC EXTRTN 7
INTFUNK LABEL 10(d)
LEFT BUILT-IN 5
MY VALU LABEL 18 (dl
MY-VALUE LABEL+++ 11(u)
TR~NSLATE BUILT-IN 4
CONSTANTS ___

'NOVALUE raised at: ' L I T STR 18


'Odd: L I T STR 14
0 NUMBER 13
2 CONST SYM 5 6
2 NUMBER 5 7 13
'40' L I T STR 5
SIMPLEVARIABLES -

$ SIMP VAR 6(s)


I SIMP VAR 10 12 13 14
SIGL SIMP VAR 18
TNP SIMP VAR 3(s) 4
STEMS AND COMPOUND VARIABLES _____

LINE. 2 COMP VAR 5(s) 6


VAL. STEM 4(s) 5
x. I COMP VAR 10 12 13 14

05/91 EJM IBM REXX Compiler

135
I
Compiled REXX - Benefits

I Language Equivalence with


... - Compller

Osrrbpmsnt 3OL Vlrnw

REXX Interpreter

NO compiler-specific language features !


1
m

@ Minimize migration effort


Almost all REXX programs run unchanged
- except those with INTERPRET instructions

1 Flag Non-SAA Items - optional I


Support SAA Procedures Language level 1.1

Ease programming for multiple SAA environments

IBM REXX Compiler

136
Compiled REXX - Benefits m u m u m m

I "Plug-Compatibility" with Interpreted Programs I


Identical external interfaces - invocation and use

0 "Transparently" replace interpreted

No restriction on mutual invocation

I 31-Bit Capability I
Compiler, Library, and Compiled Code run and
use storage above the 16 Mega-byte line

0 Make room for others below the line

IBM REXX Compiler

137
Why is REXX Hard to Compile

I No Conventional Block Structure [


PROCEDURE is an executable instruction
- Not a syntactic boundary

Variables’ life-time is dynamic


- Depends on calling sequence
- ”Exposure” among procedures

No denotation of the END of a procedure


- Logical end is an executed RETURN

SIGNAL I
Control can be transferred to everywhere
- Even into ”procedure” and loop bodies

Computed GOT0 - SIGNALVALUE

05/91 EJM IBM REXX Compiler

138
Why is REXX Hard to Compile m m m

No data types I
All data is ”character string”

Sometimes contents must be ”numeric”,


- Wholenumber”, or ”Boolean”

No declarations 1
Variables come and go - EXECCOMM/DROP

Can be shared with external programs

Names of variables can be computed


- Tails of compound variables
Value of variables only limited by storage
- Storage for values must be allocated dynamically

Arithmetic precision can be set dynamically


- NUMERIC DIGITS

05/91 E J M IBM REXX Compiler

139
Run-Time
Performance
Improvements w Compllsr

Development aoL Vienna

1 Performance gains depend on program mix I


TIMES Performance
faster than Category
Programs with a lot of ... Interpreter

Default-precision Arithmetic 6 - 10+


String Arithmetic 4 - 25 VERY HIGH

Assignments 6 - 10

Changes to Variables' Values 4 - 6


HIGH
Constants and Simple Variables 4- 6
--
Reuse of Compound Variables 2 - 4 MEDIUM

Host Commands 1 - LOW

0 Up to 30% CPU load reduction reported - //


... better than
last CPU upgrade"
0

0 Savings example
Interpreted
program
runs 60 times a day (12 sec's)
us i ng 12 min's CPU
assume
improvement of 6 times
runs
compiled 2 min's

05/91 EJM IBM R E M Compiler

140
Differences to CMS Re1 6 Interpreter

1 INTERPRET Instruction not Supported I


Rarely used

e Compiler diagnoses - no code generated

Try to avoid

Interpret target’= ’expr

Call SETVAR target,expr

RXSETVAR sample Assembler program


User’s Guide & Reference SHl9-8120

e Restructure the program

Isolate interpretative part


Make it a separate program, and
Let the Interpreter handle it

05/91 EJM IBM REXX Compiler

141
... wars(
Compller

Differencesto CMS Re1 6 Interpreter Development SDL nbnm

1 TRACE Instruction and Function not Supported 1


Does not change the semantics of a REXX program

No need to change REXX program

TRACE instruction - NOP instruction


TRACE built-in function - lrON
Interpreter default - "N"

Diagnosed with an informational message

05/91 EJM IBM REXX Compiler

142
Compiled REXX Programs

Save CPU Time & Reduce System Load

Improve Program Quality

Increase Developer Productivity

Protect REXX-Coded Assets

Allow to Keep Applications in REXX

Save Expensive Rewrites to Other HLL’s

Attract to Write Even More REXX Applications

05/91 EJM IBM REXX Compiler

143
Improvements

I Reduce Storage Needed at Compile-Time I

I Improve Compiler's Performance I

Improve AccesdHandling of Compound Vars I


- Binarytails
- Faster algorithms

I ImproveBuilt-inFunctions I

~~

05/91 EJM IBM REXX Compiler

144
Complains

Compiled REXX Increases Paging I


Interpreted

Comp i1 ed

Running compiled on an I/O bound systems makes it WORSE

I Compiled REXX Scatters Storage I


Sorry for this one - was a bug
4 Bytes of a control block left over - sometimes

I Compiled REXX Needs More Storage when Run I


NO
Both implementations show similar storage consumption

05/91 EJM IBM REXX Compiler

145
Requirements

I Reduce Disk Space Needed by Compiled REXX I


Remember:Code + Symbol Tree + Control Blocks

Improve Assignment

Special casing by Compiler = lot of code

- Trade-off between performance and storage


- Move case distinction to Library

Compress Compiled Output

Compiler option

- Reduce med/large to size of source


- Automatically de-compress
- Reduce expensive I/O

05/91 EJM IBM HEXX Compiler

146
Requirements ...

I Static Binding I

Allow to link external subroutines and functions

For Module-type output only

Compiler option
Dualism - resolvedaddresddynamic invocation

Tie together REXX-written application


Function-package capability

I Tailorable Cross Reference Listing I

Make Xref of CONSTANTS and LITERALS optional

* Compileroption XREF(S)

05/91 EJM IBM REXX Compiler

147
Requirements =.. OsreIoDment SOL vlenlu\

1 Library as "Test" Shared Segment I

e Test new Library in parallel with "production" version

I Relax Restriction on INTERPRET I

e SEVERE ERROR - NO code generated

a Diagnoseas ERROR - produce code

Code should raise ERROR when executed


- Allow to program around
- Parse Version & REXXC370

- Support development of multi-environmental programs

05/91 EJM IBM REXX Compiler

148
Requirements WBB

I Implement INTERPRET I
Long Range Consideration

I Provide an MVS REXX Compiler I


Accepted

05/91 EJM IBM REXX Compiler

140
MVS Compiler - Requirements

Same language level as TSO/E Interpreter

Same external interfaces - invocation and run

Similar behavior and benefits asCMS REXX Compiler

* Cross compile ?

- REXX code could run unchanged in VM and MVS


- No need to re-compile

Support MVS Parameter List Conventions

- EFPL for external functions


- CPPL for TSO/E commands
- MVS JCL parameters for batch programs
- CALL command parameters for foreground programs

05/91 EJM IBM R E M Compiler

150

You might also like