Jump to content

Object REXX

From Wikipedia, the free encyclopedia
Object REXX
ParadigmObject-oriented (class-based)
Designed bySimon C. Nash (IBM)
First appeared1988; 36 years ago (1988)
Stable release
5.0.0 / 10 May 2023; 14 months ago (10 May 2023)
Preview release
Implementation languageC++
PlatformIA-32, x86-64, ARM, s390x
OSCross-platform: Linux, Microsoft Windows, macOS, Solaris, OpenIndiana, AIX, FreeBSD, OS/2
LicenseCPL 1.0, GPLv2
Filename extensions.rxs, .rex, .rexx, .cls
Major implementations
Object REXX (until 2004)
ooRexx (since 2005)
Influenced by
Rexx, Smalltalk

Object REXX is a high-level, general-purpose, interpreted, object-oriented (class-based) programming language.

It is a follow-on and a significant extension of the Rexx programming language (often called "Classic Rexx"). Object REXX retains all the features and syntax of "Classic Rexx" while adding full object-oriented programming (OOP) capabilities. Although Object REXX does not implement all aspects of the "Information Technology – Programming Language REXX" ANSI X3.274-1996[1] standard, it offers many new features of its own.

Following its "Classic Rexx" influence, Object REXX is designed to be easy to learn, use, and maintain. Object REXX is today often referred to as Open Object Rexx (ooRexx).



In 1988, the "Oryx" project at IBM, under the technical direction of Simon C. Nash, experimented with merging "Classic Rexx" with the object model of Smalltalk.[2][3] The motivation behind the project was to transfer the advantages of OOP to "Classic Rexx" while remaining compatible and thus transferring the usability of "Classic Rexx" to OOP.[4] Early on, the projects focused on OOP aspect such as treating everything as an object, object-based encapsulation and message passing, object-based concurrency, classes and inheritance.[5]

This initial work later led under the direction of Rick McGuire to the first prototype of Object REXX, which was presented in 1992. In 1994, IBM announced that Object REXX would replace "Classic Rexx" as the standard REXX interpreter in the next version of OS/2.[3] In 1996, Object REXX[a] was released as part of the OS/2 Warp 4 operating system.[6] In 1997, versions for Windows 95, Windows NT and Linux followed.[7][8] In 1999 an Object REXX version for AIX V4.1.5 or higher was released.[9] In 2000, versions for  zLinux and Sun/Solaris followed. For Windows 2000, Windows Me, Windows 98 and Windows NT 4.0, the last major update for Object REXX was released in 2001.[10]

On 12 October 2004, IBM announced the discontinuation of Object REXX and transferred the source code and licensing rights[b] to the non-profit Special Interest Group (SIG), the Rexx Language Association (RexxLA). In 2005, the RexxLA released ooRexx as a new incarnation of Object REXX as free and open-source software under the Common Public License.[11] This first version of ooRexx 3.0.0 has been heavily refactored compared to the original IBM source code in order to increase readability. Later, the ooRexx kernel was rewritten in pure C++, and a new architecture and native interface were designed and implemented under the technical direction of Rick McGuire. This work enabled the RexxLA to release ooRexx 4.0.0 with support for 64-bit in 2009. To this day, the RexxLA continues to develop, support and maintain ooRexx as well as "Classic Rexx" and NetRexx. Furthermore, the RexxLA organizes annual symposia.[12]

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



The following table contains noteworthy features and changes of major Object REXX and ooRexx interpreter versions. All ooRexx releases and the necessary documentation are available on Sourceforge.[13][14] 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.

Old version
Older version, still maintained
Latest version
Latest preview version
Future release
Major Releases Release Date Notable Features and Changes
Old version, no longer maintained: Object REXX
  • First official release as part of OS/2 Warp 4
Old version, no longer maintained: Object REXX
1997-02-28 (IE)
1997-05-30 (DE)
  • First releases for Windows as "Interpreter Edition" (IE) and "Development Edition" (DE)
  • DE additionally provides a dialogue class library, a graphical dialogue editor and a built-in tokeniser
  • Provides structured programming constructs such as select, do loops, if-then-else branching and subroutine calls
  • Provides array handling, arithmetic and other build-in functions
  • Support for OOP concepts such as classes, object, methods, encapsulation, messaging, polymorphism, inheritance and multiple inheritance (metaclasses and mix-in classes)
  • Includes interfaces to DB2, TCP/IP sockets and C/C++ applications
Old version, no longer maintained: Object REXX
Old version, no longer maintained: Object REXX
  • Support for Windows 98, Windows Me, Windows 2000, and Windows NT
  • Support for Object Linking and Embedding/ActiveX, Windows Script Host (WSH) engine
  • Support for Unicode functions and addition of mathematical function package
  • Support for subroutine, procedure and function calls
  • Support for stems and compound variables
Old version, no longer maintained: ooRexx
  • First release of ooRexx as the open-source successor to Object REXX
  • Supports 28 keyword instructions, four directives, 29 classes with associated methods and 75 build-in functions
  • ooDialog 3.0.0 for creating graphical user interfaces on Windows systems
  • Includes extension classes for mathematical calculation, dealing with TCP/IP sockets, regular expressions and the file transfer protocol
  • Improved PDF documentation that supports links, meta information and document indexing
Old version, no longer maintained: ooRexx
  • Various enhancements
  • Separate documentation for ooDialog
Old version, no longer maintained: ooRexx
  • 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: ooRexx
  • Added support for MacOS
  • Additional methods for the MutableBuffer, String and Object classes
  • Provides interface to Open Office
Old version, no longer maintained: ooRexx
  • Several enhancements
Old version, no longer maintained: ooRexx
  • Support for 64bit versions of Linux, AIX and Windows
  • Improved C++ application programming interface
  • 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, responsible for the Object Linking and Embedding/ActiveX interface
  • Drop support for the Windows Script Host (WSH) engine
Old version, no longer maintained: ooRexx
  • Addition of File class including four new methods and 29 instance methods
  • Addition of extension library for Unix systems (49 functions)
  • Separate documentation for Rexx extensions library and 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[26] 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: ooRexx
  • More than 43 enhancements
  • 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: ooRexx
  • A total of 86 new features and 76 enhancements
  • Addition of several new keyword instructions and 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 a) ooRexxUnit (unit testing framework), b) using ncurses for writing text-based user interfaces, c) the C++ application programming interfaces and d) explaining the release and build environment
Future release: ooRexx



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[c] to the ANSI standard for the Rexx language (X3.274-1996, “Programming Language Rexx”[1]), 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.[29]

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


  1. ^ Including interfaces to System Object Model (SOM) and Workplace Shell (WPS)
  2. ^ Excluding the SOM and WPS packages
  3. ^ Object REXX and Open Object Rexx do not include all of the new features of ANSI standard Rexx.


  1. ^ a b "X3.274-1996 American National Standards Institute for Programming Language Rexx" (PDF).
  2. ^ "7 Reasons that Rexx Still Matters". SmartBear.com. Retrieved 2024-06-19.
  3. ^ a b "IBM Object REXX - EDM2". www.edm2.com. Retrieved 2024-06-19.
  4. ^ Nash, Simon C. (1990-06-11). "Object Oriented REXX" (PDF). Proceedings of the REXX Symposium for Developers and Users: 76-100.
  5. ^ Nash, Simon C. (2009-05-21). "An Object Rexx Retrospective" (PDF). Proceedings of the 20th Rexx Language Symposium.
  6. ^ "IBM Object REXX for OS/2 - EDM2". www.edm2.com. Retrieved 2024-06-19.
  7. ^ "IBM Object REXX Now Runs on Windows NT and Windows 95". IBM. 1997-02-25.
  8. ^ Schweizer, Manfred; Berger, Uwe (2005-04-21). "From Object REXX to ooRexx" (PDF). Proceedings of the 16th Rexx Language Symposium.
  9. ^ "IBM Object REXX for AIX - Object-Oriented Scripting Language for Beginners to Advanced Programmers". IBM. 1999-03-30.
  10. ^ "IBM Object REXX for Windows V2R1 - Object-Oriented Programming for Beginners to Advanced Users". IBM. 2001-03-20.
  11. ^ "Software withdrawal and service discontinuance: IBM Object REXX". IBM. 2004-10-12.
  12. ^ "RexxLA - Rexx Symposia". www.rexxla.org. Retrieved 2024-05-17.
  13. ^ "ooRexx (Open Object Rexx) - Browse /oorexx at SourceForge.net". sourceforge.net. Retrieved 2024-05-18.
  14. ^ "ooRexx (Open Object Rexx) - Browse /oorexx-docs at SourceForge.net". sourceforge.net. Retrieved 2024-05-18.
  15. ^ "IBM Object REXX for OS/2 - EDM2". www.edm2.com. Retrieved 2024-06-19.
  16. ^ "IBM Object REXX Now Runs on Windows NT and Windows 95". IBM. 1997-02-25.
  17. ^ "IBM Object REXX for AIX - Object-Oriented Scripting Language for Beginners to Advanced Programmers". IBM. 1999-03-30.
  18. ^ "IBM Object REXX for Windows V2R1 - Object-Oriented Programming for Beginners to Advanced Users". IBM. 2001-03-20.
  19. ^ "ooRexx News". Sourceforge. Retrieved 18 May 2024.
  20. ^ Open Object Rexx Reference Version 3.0.0 Edition (PDF). RexxLA. 24 March 2005. Retrieved 18 May 2024.
  21. ^ "ooRexx News". Sourceforge. Retrieved 18 May 2024.
  22. ^ "ooRexx News". Sourceforge. Retrieved 18 May 2024.
  23. ^ "ooRexx News". Sourceforge. Retrieved 18 May 2024.
  24. ^ "ooRexx 4.0.0: Readme" (PDF). Retrieved 18 May 2024.
  25. ^ "ooRexx 4.1.0: ReleaseNotes". Retrieved 18 May 2024.
  26. ^ "ooSQLite: Readme". Retrieved 18 May 2024.
  27. ^ "ooRexx 4.2.0: Changes". Retrieved 18 May 2024.
  28. ^ "ooRexx 5.0.0: Changes". Retrieved 18 May 2024.
  29. ^ Where did SOM support go in 4.0.0?
  30. ^ Willis Boughton (2004). "SOM and Object REXX". EDM/2. Retrieved 2014-02-02.
  31. ^ "Accessing Workplace Shell Objects". Object REXX Reference. IBM.
  32. ^ "Does ArcaOS include REXX support?". Retrieved 2020-09-03.