Object REXX

Last updated
Object REXX
Rexx3 orig size transparent.gif
Paradigm Object-oriented (class-based)
Designed by Simon C. Nash (IBM)
First appeared1988;36 years ago (1988)
Stable release
5.0.0 [1]   OOjs UI icon edit-ltr-progressive.svg / 10 May 2023;12 months ago (10 May 2023)
Preview release
5.1.0
Platform IA-32, x86-64, ARM, s390x
OS Cross-platform: Linux, Microsoft Windows, macOS, Solaris, AIX, OS/2
License CPL 1.0, GPLv2
Filename extensions .rxs, .rex, .rexx, .cls
Website www.rexxla.org
Major implementations
ooREXX (since 2004)
Influenced by
Rexx, Smalltalk [2]
Influenced
NetRexx [3]

The Object REXX programming language is a general-purpose object-oriented scripting language.

Contents

Based on the Rexx programming language (often called "Classic Rexx"), Object REXX is designed to be easy to learn, use, and maintain. Object REXX retains all the features and syntax of Classic Rexx while adding full object-oriented programming capabilities.

History

Object REXX was initially introduced by IBM for the operating system OS/2. IBM later [4] ported it to Microsoft Windows and IBM's AIX.

Object REXX was a follow-on to and a significant extension [lower-alpha 1] of the "Classic Rexx" language. Classic Rexx is a cross-platform scripting language that runs on all popular operating systems. It was originally created for the Conversational Monitor System (CMS) component of the operating system VM/SP Release 3 [5] and later implemented by IBM on Multiple Virtual Storage (MVS), [lower-alpha 2] OS/2, PC DOS, and AIX. Other organizations subsequently implemented Classic Rexx interpreters for Windows, Linux, Unix, macOS, Android, and many other operating systems.

On October 12, 2004, IBM released Object REXX as free and open-source software. [7] In this new incarnation, Object REXX was rechristened Open Object Rexx (ooREXX). Since 2004, the Rexx Language Association has supported, maintained, and further developed ooRexx. The association organises annual symposia for the further development of the Rexx language, including ooRexx. [8]

IBM's original Object REXX interpreter continues to be available in OS/2-derived operating systems, such as ArcaOS and eComStation.

Releases

The following table contains noteworthy features and changes of major ooRexx interpreter versions. All releases [9] and the necessary documentation [10] are available on Sourceforge. For Arch Linux based distributions the current and the development version are available as Arch User Repository. Since release 5.0.0, portable versions of the interpreter are available that allow it to be used without installation.

Legend:
Old version
Older version, still maintained
Latest version
Latest preview version
Future release
Major ReleasesRelease DateNotable Features and Changes
Old version, no longer maintained: 3.0.0 [11] [12] 2005-03-30
Old version, no longer maintained: 3.1.0 [13] 2006-08-21
  • Various enhancements of interpreter
  • Separate documentation for ooDialog
Old version, no longer maintained: 3.1.1 [14] 2006-11-23
  • Support for Linux, Windows, AIX and Solaris
  • Additional functions for the RexxUtil library
  • Additional methods for several classes
  • Addition of CircularQueue class and associated methods
Old version, no longer maintained: 3.1.2 [15] 2007-09-17
Old version, no longer maintained: 3.2.02008-01-22
  • Several enhancements
Old version, no longer maintained: 4.0.0 [16] 2009-09-30
  • Support for 64bit versions of Linux, AIX and Windows
  • Addition of C++ application programming interface for writing extensions
  • Restructuring of ooDialog and addition of 7 classes and 24 methods
  • Addition of Buffer, IdentityTable, Orderable, Package, Pointer, RexxContext, Routine, WeakReference and SocketClass classes and associated methods
  • Addition of 17 samples to illustrate ooRexx concepts
  • Separate documentation for Windows Extension library
  • Four new methods for the RexxQueue, three for the Object, four for the DateTime and one each for the Method, Stem and String classes
  • The MutableBuffer class now supports most of the String class methods
  • Addition of seven methods to the OLEObject class, which is responsible for the Object Linking and Embedding/ActiveX interface
Old version, no longer maintained: 4.1.0 [17] 2011-09-28
  • Addition of File class including four new class methods and 29 instance methods
  • Addition of extension library for Unix systems which includes 49 functions
  • Separate documentation for the Rexx Extensions Library and the Unix Extensions Library
  • Addition of extension classes for handling the comma-separated values, multipurpose internet mail extensions and simple mail transfer protocol
  • Addition of ooSQLite extension [18] to create, modify, and query SQL based databases
  • Enhancement of TCP/IP socket support
  • Additional class and method for ooDialog
  • Additional method for DateTime class
Old version, no longer maintained: 4.2.0 [19] 2014-02-23
  • Inclusion of over 43 enhancement requests
  • Standalone installer for ooDialog 4.2.3 and several new classes and methods
  • Separate documentation for ooSQLite external library
  • Systemd support for Linux system and compliance with Linux Standard Base
  • Add trace information about method invocations
  • Additional method each for the String, Mutablebuffer, StackFrame, Queue and OrderedCollection classes
  • Additional methods for the Relation class, several sorting methods for OrderedCollections and methods for inserting and deleting elements for the Array class
Current stable version:5.0.0 [20] 2022-12-22
  • Inclusion of a total of 86 feature requests and 76 enhancement requests
  • Addition of several new keyword instructions
  • Addition of several new directives
  • Addition of AlarmNotification, Json, MessageNotification, RexxInfo, StringTable, StringTable and Validate classes and associated methods
  • Additional methods for Alarm, Class, Collection, Directory, Message, Method, MutableBuffer, Object, Package, Routine, String and RxFtp classes
  • Separate documentation for ooRexxUnit the unit testing framework for the ooRexx interpreter
  • Separate documentation for using ncurses for writing text-based user interfaces
  • Separate documentation for extending Rexx by using Rexx C++ application programming interfaces
  • Separate documentation explaining the release and build environment for ooRexx
Future release: 5.1.0upcoming

Features

As supersets of Classic Rexx, ooRexx and Object REXX endeavor to retain all the features of Classic Rexx.

To this, ooRexx and Object REXX add all the features typical of object-oriented languages, such as subclassing, polymorphism, and data encapsulation. Further features include multiple inheritance via the use of mixin classes.

ooRexx and Object REXX are designed to be a compatible superset of Classic Rexx. They conform [lower-alpha 3] to the ANSI standard for the Rexx language (X3.274-1996, “Programming Language Rexx” [21] ), for interoperability across platforms with other conforming Rexx implementations. Thus Classic Rexx programs that conform to the ANSI-1996 standard typically run under ooRexx and Object REXX without any changes. This makes it easy to transport both program code and developer knowledge from Classic Rexx to ooRexx and Object REXX.

For Windows, ooRexx includes a Windows Script Host (WSH) Scripting Engine for Rexx. It also includes Object Linking and Embedding/ActiveX support and OODialog Runtime to support OODialog programs. However, the code that IBM released to open source in 2004 did not include the classes for IBM System Object Model (SOM) and Workplace Shell (WPS) support. [22]

The OS/2 version of IBM Object REXX includes classes to support the IBM System Object Model [23] and Workplace Shell. [24] These are also included OS/2's initial follow-on product, eComStation, and also in its current descendant, ArcaOS. [25]

Notes

  1. Object REXX and Open Object Rexx do not include all of the new features of ANSI standard Rexx, although they have many new features of their own.
  2. As part of Time Sharing Option Extensions (TSO/E) Version 2 [6]
  3. Object REXX and Open Object Rexx do not include all of the new features of ANSI standard Rexx.

Related Research Articles

<span class="mw-page-title-main">OS/2</span> Operating system from IBM

OS/2 is a series of computer operating systems, initially created by Microsoft and IBM under the leadership of IBM software designer Ed Iacobucci. As a result of a feud between the two companies over how to position OS/2 relative to Microsoft's new Windows 3.1 operating environment, the two companies severed the relationship in 1992 and OS/2 development fell to IBM exclusively. The name stands for "Operating System/2", because it was introduced as part of the same generation change release as IBM's "Personal System/2 (PS/2)" line of second-generation personal computers. The first version of OS/2 was initially released in December 1987, and newer versions were released until December 2001.

In computing, cross-platform software is computer software that is designed to work in several computing platforms. Some cross-platform software requires a separate build for each platform, but some can be directly run on any platform without special preparation, being written in an interpreted language or compiled to portable bytecode for which the interpreters or run-time packages are common or standard components of all supported platforms.

Bytecode is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references that encode the result of compiler parsing and performing semantic analysis of things like type, scope, and nesting depths of program objects.

<span class="mw-page-title-main">IBM Db2</span> Relational model database server

Db2 is a family of data management products, including database servers, developed by IBM. It initially supported the relational model, but was extended to support object–relational features and non-relational structures like JSON and XML. The brand name was originally styled as DB2 until 2017, when it changed to its present form.

<span class="mw-page-title-main">Windows Script Host</span> Automation technology for Windows

The Microsoft Windows Script Host (WSH) is an automation technology for Microsoft Windows operating systems that provides scripting abilities comparable to batch files, but with a wider range of supported features. This tool was first provided on Windows 95 after Build 950a on the installation discs as an optional installation configurable and installable by means of the Control Panel, and then a standard component of Windows 98 and subsequent and Windows NT 4.0 Build 1381 and by means of Service Pack 4. The WSH is also a means of automation for Internet Explorer via the installed WSH engines from IE Version 3.0 onwards; at this time VBScript became means of automation for Microsoft Outlook 97. The WSH is also an optional install provided with a VBScript and JScript engine for Windows CE 3.0 and following and some third-party engines including Rexx and other forms of Basic are also available.

<span class="mw-page-title-main">4DOS</span> Command line interpreter

4DOS is a command-line interpreter by JP Software, designed to replace the default command interpreter COMMAND.COM in Microsoft DOS and Windows. It was written by Rex C. Conn and Tom Rawson and first released in 1989. Compared to the default, it has a large number of enhancements.

<span class="mw-page-title-main">Workplace Shell</span>

The Workplace Shell (WPS) is an object-oriented desktop shell produced by IBM's Boca Raton development lab for OS/2 2.0. It is based on Common User Access and made a radical shift away from the Program Manager type interface that earlier versions of OS/2 shared with Windows 3.x or the application-oriented WIMP interface of the Apple Macintosh. The Workplace Shell was also used in OS/2 Warp 3 and Warp 4, and the OS/2-based operating systems eComStation and ArcaOS.

<span class="mw-page-title-main">IBM System Object Model</span> Programming framework

In computing, the System Object Model (SOM) is an object-oriented shared library system developed by IBM. DSOM, a distributed version based on CORBA, allowed objects on different computers to communicate.

<span class="mw-page-title-main">XEDIT</span>

XEDIT is a visual editor for VM/CMS using block mode IBM 3270 terminals.

Take Command Console (TCC), formerly known as 4DOS for Windows NT (4NT), is a command-line interpreter by JP Software, designed as a substitute for the default command interpreter in Microsoft Windows, CMD.EXE.

NetRexx is an open source, originally IBM's, variant of the REXX programming language to run on the Java virtual machine. It supports a classic REXX syntax, with no reserved keywords, along with considerable additions to support object-oriented programming in a manner compatible with Java's object model, yet can be used as both a compiled and an interpreted language, with an option of using only data types native to the JVM or the NetRexx runtime package. The latter offers the standard Rexx data type that combines string processing with unlimited precision decimal arithmetic.

help (command) Command in various command line shells

In computing, help is a command in various command line shells such as COMMAND.COM, cmd.exe, Bash, qshell, 4DOS/4NT, Windows PowerShell, Singularity shell, Python, MATLAB and GNU Octave. It provides online information about available commands and the shell environment.

<span class="mw-page-title-main">Scripting language</span> Programming language for run-time events

In computing, a script is a relatively short and simple set of instructions that typically automate an otherwise manual process. The act of writing a script is called scripting. Scripting language or script language describes a programming language that it is used for a script.

<span class="mw-page-title-main">ZOC (software)</span>

ZOC is a popular computer-based terminal emulator and Telnet software client for the Microsoft Windows and Apple Macintosh macOS operating systems that supports telnet, modem, SSH 1 and 2, ISDN, serial, TAPI, Rlogin and other means of communication. Its terminal emulator supports Xterm emulation with full colors, meta-keys and local printing, VT102, VT220 and several types of ANSI as well as Wyse, TVI, TN3270, and Sun's CDE. It supports full keyboard remapping, scripting in REXX and other languages, and support for named pipes.

<span class="mw-page-title-main">SecureCRT</span>

SecureCRT is a commercial SSH and Telnet client and terminal emulator by VanDyke Software. Originally a Windows product, VanDyke later added a Mac OS X version in 2010 with release v6.6 and a Linux version in 2011 with release v6.7.

<span class="mw-page-title-main">Rexx</span> Command/scripting/programming language

Rexx is a programming language that can be interpreted or compiled. It was developed at IBM by Mike Cowlishaw. It is a structured, high-level programming language designed for ease of learning and reading. Proprietary and open source Rexx interpreters exist for a wide range of computing platforms; compilers exist for IBM mainframe computers.

<span class="mw-page-title-main">Command-line interface</span> Computer interface that uses text

A command-line interface (CLI) is a means of interacting with a computer program by inputting lines of text called command-lines. Command-line interfaces emerged in the mid-1960s, on computer terminals, as an interactive and more user-friendly alternative to the non-interactive interface available with punched cards.

References

  1. "ooRexx (Open Object Rexx) - Browse /oorexx/5.0.0 at SourceForge.net".
  2. René Jansen (2011-12-01). "7 Reasons that Rexx Still Matters". SmartBear blog. Retrieved 2014-02-02.
  3. "NetRexx – Programming language derived from Java and Rexx". OS/2 EWS. IBM PC BBS. 1996. Retrieved 2014-01-24.
  4. "IBM Object REXX for Windows V2R1 — Object-Oriented Programming for Beginners to Advanced Users", Announcement Letters, IBM, March 20, 2001, 201-063
  5. "VM/SYSTEM PRODUCT RELEASE 3 (VM/SP RELEASE 3) 5664-167". Announcement letters. IBM. February 1, 1983. 283-018. Retrieved February 21, 2022.
  6. "IBM TSO EXTENSIONS VERSION 2". Announcement letters. IBM. April 19, 1988. 288-191. Retrieved February 21, 2022.
  7. "IBM Contributes Scripting Language to the Rexx Language Association, Encourages Innovation Around REXX Application Development". IBM. 2004-11-29. Retrieved 2009-06-25.
  8. "RexxLA - Rexx Symposia". www.rexxla.org. Retrieved 2024-05-17.
  9. "ooRexx (Open Object Rexx) - Browse /oorexx at SourceForge.net". sourceforge.net. Retrieved 2024-05-18.
  10. "ooRexx (Open Object Rexx) - Browse /oorexx-docs at SourceForge.net". sourceforge.net. Retrieved 2024-05-18.
  11. "ooRexx News". Sourceforge. Retrieved 18 May 2024.
  12. Open Object Rexx Reference Version 3.0.0 Edition (PDF). RexxLA. 24 March 2005. Retrieved 18 May 2024.
  13. "ooRexx News". Sourceforge. Retrieved 18 May 2024.
  14. "ooRexx News". Sourceforge. Retrieved 18 May 2024.
  15. "ooRexx News". Sourceforge. Retrieved 18 May 2024.
  16. "ooRexx 4.0.0: Readme" (PDF). Retrieved 18 May 2024.
  17. "ooRexx 4.1.0: ReleaseNotes" . Retrieved 18 May 2024.
  18. "ooSQLite: Readme" . Retrieved 18 May 2024.
  19. "ooRexx 4.2.0: Changes" . Retrieved 18 May 2024.
  20. "ooRexx 5.0.0: Changes" . Retrieved 18 May 2024.
  21. "X3.274-1996 American National Standards Institute for Programming Language Rexx" (PDF).
  22. Where did SOM support go in 4.0.0?
  23. Willis Boughton (2004). "SOM and Object REXX". EDM/2. Retrieved 2014-02-02.
  24. "Accessing Workplace Shell Objects". Object REXX Reference. IBM.
  25. "Does ArcaOS include REXX support?" . Retrieved 2020-09-03.