ooRexx (Open Object Rexx) is an Open Source project managed by Rexx Language Association (RexxLA) providing a free implementation of Object Rexx.
Object Rexx is an enhancement of classic Rexx; a powerful, full-featured programming language which has a human-oriented syntax.
The ooRexx interpreter allows you to write programs procedurally as well as in an object-oriented fashion.
NOTE: ooRexx is distributed under the Common Public License (CPL) v1.0.
Here are some key features of "ooRexx":
· Easy to use and easy to learn
· Upwardly compatible with classic Rexx
· The ability to issue commands to multiple environments
· Offers powerful functions
· Based on English-like commands
· Enhanced with full object orientation
· Designed for object-oriented programming, and also allows Rexx conventional programming
· Provides a standard Rexx API to develop external function libraries written in C
· An English-like language: To make Rexx easier to learn and use, many of its instructions are meaningful English words. Unlike some programming languages that use abbreviations and large numbers of punctuation characters, Rexx instructions are common words, such as SAY, PULL, IF...THEN...ELSE, DO...END, and EXIT.
· Fewer rules: Rexx has relatively few rules about format. A single instruction can span many lines, and you can include multiple instructions on a single line. Instructions can begin in any column and you can type them in uppercase, lowercase, or mixed case. You can also skip spaces in a line or entire lines, since there is no line numbering. Keywords are also only reserved in context; ie if you want a variable called date, then it is valid, even though Rexx has a built-in function of the same name. The Rexx interpreter knows which one you are refering to based on its context; just as the programmer also knows.
· Interpreted, not compiled: Rexx is an interpreted language. When a Rexx program executes, its language processor reads each statement from the source file and runs it, one statement at a time. Languages that are not interpreted must first be compiled into object code before being run. This slows down development time.
· Built-in functions and methods: Rexx has a rich set of built-in functions and methods that perform various processing, searching, and comparison operations for text and numbers. These also provide formatting capabilities and arithmetic calculations.
· Typeless variables: Rexx treats all data as objects of different kinds. Variables can hold any kind of object, so you do not need to declare variables as strings or numbers. If you want to do arithmetic operations on a variable, then provided the variable has a recognised numeric value it can be done.
· String handling: Rexx includes powerful functionality for manipulating character strings. This allows programs to read and separate characters, numbers, and mixed input. Rexx performs arithmetic operations on any string that represents a valid number, including those in exponential formats.
· Decimal Arithmetic: Rexx has always based its arithmetic operations on decimal arithmetic, rather than on binary arithmetic that other languages use. Decimal arithmetic is the type of arithmetic humans use and is accurate, unlike binary arithmetic which computers use internally which is inaccurate. Other languages have finally realized the benefits of accurate arithmetic and are starting to include decimal arithmetic capabilities that are based on Rexx's arithmetic. For a complete coverage of decimal arithmetic, see Mike Cowlishaw's Decimal Arithmetic Page.
· Clear error messages and powerful debugging: Rexx displays messages with full and meaningful explanations when a Rexx program encounters an error. In addition, the TRACE instruction provides a powerful debugging tool.
What's New in This Release: [ read full changelog ]
All Bugs:
· 3544442 The oodraw.rex example in ooRexx 4.1.1 does not execute.
· 3541163 cyclic dependency error not giving good position.
· 3537339 Incorrect message for ::ATTRIBUTE errors
· 3535883 rexx abends when hostemu execio attempted
· 3534403 Inccorect message for mising end on LOOP instruction
· 3534402 do over not working with strings
· 3533899 Mutablebuffer string method not getting used correctly.
· 3532728 system breaks when string method has no Return
· 3529966 ReleaseLocalReference() causes ooRexx to abend
· 3523656 SAMP13 Does Not Work
· 3146828 Lines() / chars() return 1 for stdin when no data is present
· 2849375 redirect output to a /dev/tty
Documentation:
· 3530214 Value returned by WindowsRegistry r~getvalue() may be wrong