Golden Rules of Locking - PowerPoint PPT Presentation

1 / 62
About This Presentation
Title:

Golden Rules of Locking

Description:

Amazon.com/rexx. This presentation is published under the Open. Publication License (OPL) ... All languages have their strengths & roles. Not here to 'put down' ... – PowerPoint PPT presentation

Number of Views:255
Avg rating:3.0/5.0
Slides: 63
Provided by: hfo5
Learn more at: http://www.apcu.org
Category:
Tags: golden | locking | rules

less

Transcript and Presenter's Notes

Title: Golden Rules of Locking


1
Free Rexx !
Everything You Ever Wanted to Know About Rexx
(but were afraid to ask)
Howard Fosdick (C) 2006 FCI

Version
2.0
2
  • Who Am I?
  • Presentation by Howard Fosdick,
  • author of Rexx Programmers Reference
  • Find the book at www. Amazon.com/rexx
  • This presentation is published under the Open
  • Publication License (OPL).

3
  • Viewpoint / Purpose
  • All languages have their strengths roles
  • Not here to put down other languages
  • Here to present Rexxs strengths and
  • discuss where it fits in your toolbox

(1) Know where Rexx fits (2) Teach you to
script it in lt 2 hours !
Goals
4
  • Outline
  • Why Scripting ?
  • Why Rexx ?
  • Rexx Tutorial
  • Further Info

5
I. Why Scripting ?
6
  • 2 Big Software Trends Converge

Ka-Boom!
Free and Open Source
Scripting
Perl, Python, Rexx, Tcl/Tk, Bash, Korn, Ruby, ot
hers
Java, C/C, COBOL
Visual Basic, VBScript, WSH
7
Whats a Scripting Language ?
Rexx
  • General purpose
  • Free / open source
  • Universal
  • Portable code
  • Transferable skills
  • Standardized
  • (8 of 9 free Rexxes meet stds)
  • Dynamic
  • Sizing (variables arrays)
  • Memory management
  • No variable declarations
  • No data typing
  • Integrated debugger
  • Interpreted
  • High-level
  • Glue language

8
  • Scripting Vs. Traditional Languages

Scripting
Traditional
-- Lower level -- Compiled -- More
detail-oriented -- Manual variable management --
Pre-declared variables -- More programmer
effort -- Coding languages -- Optimize
execution speed
-- High level -- Interpretive -- More
productive -- Varying degrees of automatic
variable management -- Shifts burden to the
machine -- Glue languages -- Acceptable
execution speed
Rexx, Perl, Python, Tcl/Tk, Ruby, others
C/C, COBOL, Java, Pascal, others
9
When to Use Rexx
No
Yes
-- Productivity -- Reliability -- Quick
development -- Glue language -- Prototyping --
Systems administration -- OS extensions --
Portable apps -- Mainframe migrations -- Embedded
programming -- Handhelds -- Text processing --
Interactive development /
debugging
-- Optimal execution speed is required --
Systems -level programming (No BIOS
interrupts, direct addressing, etc.)
10
Performance
3M
Ratio of compiler to interpreter speed remains
constant while processor speeds
increase exponentially
200k
10k
4k
70
Year-- 1981 1988
1993 1998 2005 Mhz--
4.77 8
66 266 3 ghz
CPU-- 8088 386
486 PII PIV
11
II. Why Rexx ?
12
  • Why Rexx Vs Other Scripting Languages ?

Easy but Powerful
Easy but Powerful
Ease of use benefits experienced developers ...
  • FAST coding !
  • Reliable code
  • Easy to code right out of memory
  • Maintainable code
  • 70 of IT does maintenance
  • This determines your codes longevity
  • Saves your company

13
Why Rexx Vs Other Scripting Languages ?
Power
Simplicity
Conflict !
Rexx uses specific technologies to tie them
together
14
  • Power Through Simplicity by
  • Small instruction set, w/ power in the
    functions
  • Extensible
  • Call external functions just like internal
  • Glue language (uses OS commands, interfaces,
  • DLLs, shared libraries, services,
    objects, etc.)
  • Minimal syntax
  • Minimal special characters, variables, etc.
  • Automated memory management
  • Automated variable management
  • No data definitions
  • No data typing
  • Dynamic array sizes
  • Dynamic string or variable lengths

15
  • Power Through Simplicity

Rexx presents a radically different philosophy on
how to achieve power than the Unix tradition
languages (Perl, Bash, Korn, Awk, etc.)
Rexx presents a unique scripting paradigm
16
The Language Structure Makes Rexx Easy
Operators Arithmetic Comparison
Logical String
2 dozen Instructions
Learn from the inside out
70 Built-in Functions
Other Features
OS commands, external functions, DLLs, APIs,
widgets, etc.
17
  • Rexx Runs Everywhere

Linux-- all versions Unix-- all
versions BSD-- all versions Windows-- all
versions Mac OS-- all versions DOS all versions
(32- and 16- bit), IBM PC-DOS 2000 and
7 Handhelds-- Windows CE / Mobile / PPC / etc,
Palm OS,
Symbian/EPOC32, EPOC, DOS emulation Embedded-- Em
bedded Linux, DOS, Windows variants Mainframes--
z/OS, z/VM, z/VSE (all versions) IBM
iSeries-- i5/OS, OS/400 (all versions) Many
others-- AmigaOS, AROS, MorphOS, OpenVMS,
BeOS, OpenEdition,
AtheOS/Syllable, SkyOS,
QNX (QNX4/QNX6), OS/2, eCS, osFree, more

Rexx predominates on systems in red
18
  • Rexx Has Critical Mass...

Perl
Critical mass
Python
Rexx, Tcl/Tk, Ruby
Many other good languages (Korn, C-shell, bash,
Bourne, Lua, Mumps, etc)
Do not have critical mass
Open source, general purpose scripting languages
with critical mass -- Run everywhere
(on all major OSs and platforms)
Have strong standards Enjoy wide use
and offer good support
Internationally In many spoken
languages Offer thousands of free
tools and scripts Interface to
everything (databases, web programming, GUIs,
etc, etc) NOTE-- The chart excludes non-open
source (eg VB, VBScript) and non-general purpose
(eg PHP) scripting languages
19
The Free Rexx Interpreters
BRexx
Regina
Rexx/imc
Windows, DOS (32/16 bit), Windows CE, Linux,
Unix, Mac OS, AmigaOS, others
All major operating systems
Unix, Linux, BSD
Rexx for Palm OS
Reginald
r4
Windows
Palm OS
Windows
Open Object Rexx
OOP extensions
roo!
NetRexx
Any Java Environment
Linux, Windows, Solaris, AIX
Windows
20
Rexx Free Tools and Interfaces
  • Over 2000 free tools scripts for Rexx.
    Examples
  • SQL database access
  • GUIs
  • XML
  • Web programming
  • Math libraries
  • Regular Expressions
  • Code managers
  • Communications functions
  • OS interface libraries
  • Graphics
  • Speech, MIDI, sound
  • . . . you name it . . .

21
III. Lets Code !
22
Example Script 1
/
/ / Find Payments
/ /
Reads accounts lines one by one, and displays
overdue / / payments (lines
containing the phrase PAYMENT_OVERDUE).
/ /
/   arg filein
/ Read the input file name/   do
while lines(filein) gt 0 / Do while
a line to read /   input_line
linein(filein) / Read an input line
/   if pos('PAYMENT_OVERDUE',input_line) gt 0
then say 'Found it' input_line
/ Write line if overdue /   end
23
  • Simplicity in this script
  • Minimal syntax
  • Minimal special characters and variables
  • Free format
  • Use spaces blank lines however desired
  • Case-insensitive (capitalize however you want)
  • No explicit file definition
  • File is automatically OPENed and CLOSEd
  • Automatic declaration of variables
  • (see FILEIN and INPUT_LINE)
  • No data typing
  • All variables are strings
  • Numbers are strings that look like numbers
  • Decimal arithmetic (portable, consistent
    results)
  • Automatic conversions where sensible

24
  • What is Power ?
  • Is it the number of Lines of Code (LOC) ?
  • Can reduce LOC by nesting functions
  • But why write a complex fortune-cookie script
    ?

Power is not solving the problem in the fewest
LOC! Power is a deft script that solves
the problem in a reliable, readable,
maintainable manner
25
Example Script 2
arg filein fgrep PAYMENT_OVERDUE filein
This script does the same thing as Example 1
26
  • The Power of Glue Languages
  • Rexx evaluates a statement, sends anything
  • that is not Rexx to the external
    environment
  • (by default this is the OS)
  • Full power of a string-manipulation language
  • to direct external interfaces
  • Inspect return code, command output, messages,
  • and respond
  • Rexx is a glue language

27
Structured Control Instructions
If
If then else
Do End
Do While
Select
Call
(case)
Subroutine or Function
28
Un-Structured Control Instructions
Do Until
Do Forever
Iterate
Leave
Signal
(goto)
29
  • Rexx Functions
  • 70 Built-in Functions
  • String manipulation (character, bit, hex)
  • Word manipulation
  • I/O
  • Numeric
  • Environmental
  • Conversion
  • Other
  • 2 statements access external function library
  • Those functions are then coded just like
    built-ins

30
Example Script 3
/
/ / Code Lookup
/ /
Looks up the area code for the town the user
enters. / /
/   area.
'' / Initialize array
entries to null /   area.CHICAGO 312
/ Define a table of area codes /
area.HOMEWOOD 708 area.EVANSTON 847
  do while town ltgt '' / Loop until
user enters null line /   say 'For which town
do you want the area code?' pull town   if
town ltgt '' then do if area.town ''
then say 'Town' town 'is not in my database'
else say 'The area code for' town 'is'
area.town end   end
31
  • Simplicity in this script
  • Array recognized by the period (area.)
  • Do not have to declare arrays or predefine
    their size
  • Sets all possible elements to null string
    (area. )
  • Subscript array by any arbitrary string
  • (content-addressable memory or associative
    memory)
  • Arrays can be
  • Dense or sparse
  • Contain homogenous or heterogeneous elements
  • Represent records or C structs
  • Expand to size of memory
  • Automatic capitalization (pull array element
    names)
  • Can always override Rexxs automation

32
Example Script 4
(part I)
/ Find Books
/ / This program
illustrates how arrays may be of any dimension
/ / in retrieving book titles based on
their keyword weightings. /   keyword. ''
/ Initialize both arrays to all null strings
/ title. '' / The array of keywords
to search for among the book descriptors
/   keyword.1 'earth' keyword.2
'computers' keyword.3 'life' keyword.4
'environment'   / The array of book titles, each
having several descriptors /   title.1
'Saving Planet Earth' title.1.1 'earth'
title.1.2 'environment' title.1.3
'life' title.2 'Computer Lifeforms'
title.2.1 'life' title.2.2 'computers'
title.2.3 'intelligence' title.3 'Algorithmic
Insanity' title.3.1 'computers' title.3.2
'algorithms' title.3.3 'programming'
33
Example Script 4 (part II)
arg weight / Get number keyword matches
required for retrieval /   say 'For weight of'
weight 'retrieved titles are' / Output header
/   do j 1 while title.j ltgt ''
/ Look at each book / count 0 do
k 1 while keyword.k ltgt '' / Inspect
its keywords / do l 1 while
title.j.l ltgt '' / Compute its weight
/ if keyword.k title.j.l then count
count 1 end end   if count gt
weight then / Display titles matching the
criteria / say title.j end
34
  • Discussion
  • Array keyword. is a lookup table or list
  • key/value pairs like Perl or Berkeley DB
  • Array title. is a tree
  • Trees can be balanced or not

DO I 1 TO n BY m WHILE condition FOR
x DO UNTIL DO FOREVER DO n IF condition
THEN DO . . . END ELSE DO . .
. END
DO
IF
Enclose multiple statements within a DO END pair
35
Create Any Data Structure With Rexx Arrays
b.1 b.1.1 b.1.1.1 b.1.1.2 b.2 b.2.1
b.2.2 b.2.3 b.3 b3.1 b.3.1.1 b.3.1.1.1
Element 1
Key 1 Value 1
Key 2 Value 2
Element 2
Key 3 Value 3
Element 3
Key 4 Value 4
A Simple List or Look-up Table
Key-value Pairs
b.1 b.1.1 b.1.2 b.2 b.2.1
b.2.2 b.3 b.3.1 b.3.2
b.1 b.1.1 b.2 b.2.1 b.2.2
b.2.3 b.3 b.4
A Multi-level Tree (unbalanced)
Also linked list, doubly linked list, stack,
queue, dequeue, etc...
Balanced Tree
Un-Balanced Tree
36
Example-- Creating a Linked List
list.0 HEAD list.0.next 1 / Define
linked list. / list.1 'a' list.1.next 2
/ You could also / list.2 'b'
list.2.next 3 / create it
/ list.3 TAIL list.3.next TAIL /
dynamically. / call display_linked_list
/ Display the linked list / list.99
'after a, before b' / Add new item in list
/ list.99.next 2 / Point
new item to next / list.1.next 99
/ Point to the new item / call
display_linked_list / Display the
linked list / exit display_linked_list
/ Displays the linked list/ sub 0
do while list.sub.next ltgt TAIL say
'Element' list.sub sub list.sub.next
end return
37
Why Rexx Vs Other Scripting Languages ?
For a language that lacks data structures, Rexx
sure has a lot of them!
Power thru Simplicity!
38
IV. More about Rexx
39
Rexx Standards
Extensions
TRL-2
ANSI
  • 8 of 9 free Rexx interpreters adhere to TRL-2
  • ANSI adds little beyond TRL-2
  • Most Rexxes offer extensions
  • Extensions offer OS-specific stuff and other
    niceties

40
Rexx Standards
Early 90s
1990
1996
1985
TRL-1
TRL-2
SAA
ANSI
Language Level
4.00
5.00
3.50
41
The Evolution of Rexx
Object-oriented Rexx
Early 1980s
Mid 1990s
Standard or Classic Rexx
NetRexx (for Java environments)
42
Rexx on Handhelds
Native
DOS Emulation
Interpreter
Interpreter
Windows CE BRexx Palm OS
Rexx for Palm OS Symbian /
EPOC32 Regina
PocketDOS XTM others
BRexx
Integrates with... DOS Services
DOS Applications Many DOS apps
instantly available without any changes
Faster Integrates with native services
43
How DOS Emulation Works
Rexx Scripts
Rexx Interpreter
DOS Operating System
DOS Emulator
Native operating system
Each layer runs on top of the one below it
PC Hardware
44
Object-Oriented Rexx Means
Classic Rexx
Classes and Methods
PLUS
Inheritance Derivation
Encapsulation
Abstraction
Polymorphism
Huge Class Library
45
Object Rexx Adds to Classic Rexx . . .
Classes and Methods
Complete Object Orientation
Built-in Objects, Special Variables, many other
features
Object Rexx
New Instructions
And Much More
More Functions
New Operators
46
NetRexx
  • A Rexx-like language
  • Brings Rexx ease of use to Java environment
  • NetRexx scripts use Java classes
  • Script
  • Classes for use by Java
  • Applets
  • Applications
  • Servlets
  • Java Beans (EJBs)
  • Client server sides both

47
NetRexx Goes Beyond Classic Rexx
Java environment integration
Classic Rexx
Object orientation
New instructions
Changed and Extended with . . .
Data typing (types)
Indexed strings
Special names
Special methods
and much more
48
Developing and Running NetRexx Scripts
To translate, compile and run in one step enter
nrc -run hello
Translate NetRexx source into a Java program
Class file Eg hello.class
Source script Eg hello.nrx
Java file Eg hello.java
Compile Java into bytecode
Run
NetRexx interprets and/or compiles. Can generate
commented, formatted Java code. Runs under JVM
or stand-alone.
49
V. More Rexx Features
50
How Rexx Supports Modularity
Modularity
Internal Routines
External Resources
-- Extensions and Function Libraries --
Operating System Commands -- Commands to other
environments -- External Programs -- API
Interfaces to external features -- API into Rexx
-- Built-in Functions -- Functions you
develop -- Subroutines
51
String Processing Operations
abc abc
abcabc
Concatenation
Joins two or more strings
abcabc
Bifurcation
Splits a string
abc abc
abcabc
Parsing
Scans and analyzes a string, may split it into
its constituent
components
Parse Count 2
abcdef
Pattern Matching
Identifies patterns in strings
Find def
52
Parsing Operations
Separate by words
By Words
By Pattern
Separate , using , commas
By Numeric Pattern
abc abc abc
Columns 1 5 9
53
The Two I/O Modes
Line-oriented Process one line at a
time
Character-oriented Process one
character at a time
linein
charin
charout
lineout
lines
chars
More portable
Reads special characters
54
The Stack is both a Stack and a Queue
PULL, PARSE PULL
PUSH
QUEUE
Rexxs Stack is a generalized communications
mechanism
55
Rexx Supports Recursion
Script X
How Recursion Works
Yes
End Test Fufilled ?
No
Call Script X
56
Tip Steps to Good Programming Style
Ect !
Error checking
Structured Code
Modularity
Comments
Limit Nesting
Spacing indentation
Good variable names
Capitalization
57
Debugging Options
SAY Instruction
TRACE Instruction in batch mode
Interactive TRACE
Quick, informal Great for simple problems
Requires changing code (adding SAY
instructions)
Resolves challenging problems Allows
real-time code tests Programmer-directed
interaction resolves problems Quick easy, but
powerful
Batch script trace Can set trace level based
on user input Many trace settings available
Good for paperanalysis of a problem
58
Condition / Exception Trapping
signal on condition name label_name
code of the main routine...
label_name
code of the error handling routine...
Conditions error, failure, halt, novalue,
notready, syntax, lostdigits
59
VI. Conclusions
60
Trends !
Conclusions
  • Free open source languages have taken over
  • Scripting is the quiet revolution
  • Rexx offers Power through Simplicity
  • Useful addition to your toolbox

61
Resources
Next...
Find everything at
www.RexxInfo.org -- download Rexx --
download tools -- tutorials, articles,
how-tos -- reference materials Rexx
Programmers Reference at Amazon
www.amazon.com/rexx
62
?
  • ?

?
?
?
questions...
?
?
?
?
Write a Comment
User Comments (0)
About PowerShow.com