Jump to content

REXX: Difference between revisions

From EDM2
Ak120 (talk | contribs)
Ak120 (talk | contribs)
 
(26 intermediate revisions by 2 users not shown)
Line 1: Line 1:
[[Image:Rexxlogo.png|250px|right]]
[[Image:Rexxlogo.png|250px|right]]
An interpreted, procedural structured language that is included with every version of OS/2 1.2EE and later, IBM PC-DOS 7.0 and most AmigaOS variants and clones in addition to all current and recent IBM mainframe and minicomputer operating systems.
'''REXX''' is an interpreted, procedural structured language that is included with every version of OS/2 EE 1.2 and later, IBM PC-DOS 7.0 and most AmigaOS variants and clones in addition to all current and recent IBM mainframe and minicomputer operating systems.


Although REXX is a generic programming language and can be (and has been) used to construct everything from simple utilities to large business applications, it is  primarily used as a scripting or macro language, and as such is unusually easy to learn.
Although REXX is a generic programming language and can be (and has been) used to construct everything from simple utilities to large business applications, it is  primarily used as a scripting or macro language, and as such is unusually easy to learn.
Line 13: Line 13:
In 1989 the first version of IBM CMS REXX Compiler was released.
In 1989 the first version of IBM CMS REXX Compiler was released.


'''[[Object REXX]]''' is a later version of the language that has been given object-oriented extensions modelled on those present in [[Smalltalk]] (IBM's language of choice at the time), while it is mostly compatible with Classic REXX there are some minor differences that mean that most larger REXX programs have to have at the least some modifications to run correctly under OREXX, and this has meant that in the OS/2 world it never gained any real traction. '''Amiga REXX''' is a clone of IBM's Classic REXX that has extensions to help its use as a mechanism for application to application and/or inter-application communication, [[Regina REXX]] supports those extensions.
'''[[Object REXX]]''' is a different language that has been given object-oriented extensions modelled on those present in [[Smalltalk]]. While it is mostly compatible with Classic REXX there are some minor differences. It means that some REXX programs have to be modified to run correctly under Object REXX.


==OS/2 Implementations and tools==
'''Amiga REXX''' is a clone of IBM's Classic REXX that has extensions to help its use as a mechanism for application to application and/or inter-application communication, [[Regina REXX]] supports those extensions.
*[[Object REXX]] - Open source - OS/2 version discontinued, but older version shipped with OS/2 Warp 4.
*[[Personal REXX]] - Commercial - Discontinued
*[[Regina REXX]] - Compatible with Classic REXX - Open Source - Current
*'''Procedures Language/2 REXX''' aka SAA REXX - Development discontinued, but shipped with all OS/2 32-bit versions.


====Libraries, extensions and bindings====
==Implementations==
<div style="column-count:2;-moz-column-count:2;-webkit-column-count:2">
{|class="wikitable"
* [[Bullet|Bullet/REXX]] - Allows you to work with [[xBase]] files or databases - Commercial - Discontinued.
!rowspan=2|Vendor||rowspan=2|Implementation||colspan=4|Operating environment||rowspan=2|Notes
* [[dbfREXX]] - Allows you to work with [[xBase]] files or databases - Commercial - Discontinued
|-
* [[Info-Zip]] - Compression/decompression, avl. in a REXX compatible DLL - Open source - Current
!OS/2||DOS||Win16||Win32
* [[LesTecIO]] - Sundry I/O routines - Commercial - Current
|-
*Pro*REXX - Bindings/Interface to a [[Oracle Database]] - Commercial - Discontinued
|rowspan=3|IBM||[[Procedures Language 2/REXX]]||X|| || || ||(aka SAA REXX) shipped with OS/2
* [[RexxBase]] - Allows you to work with [[xBase]] files or databases - Freeware - Discontinued.
|-
* [[REXXBOS]] - A complete OS/2 system interface for REXX - Commercial - Current
|[[REXXPC88]]|| ||X|| || ||IBM internal (1987/88)
* [[REXX/CURL]] - Bindings to the [[libcURL]] library - Open source - Current
|-
* [[REXX/CURL]] - Encode, compress and encryption ext. - Open source - Current
|[[PC DOS REXX]]|| ||X|| || ||introduced with IBM [[PC DOS]] 7
* [[REXX/GD]] - Bitmap manipulation extension - Open source - Sort of current
|-
* [[REXXIO]] - I/O routines, freeware version of LesTecIO -Current
|Quercus||[[Personal REXX]]||X||X||X|| ||Commercial
* [[REXX/ISAM]] - ISAM database files extension - Open source - Discontinued
|-
* [[REXX/SQL]] - [[SQL]] database access - Open source - Current
| ||[[Regina REXX]]||X||X|| || ||Compatible with Classic REXX - Open Source
* [[REXXSEM]] - Semaphore support for REXX - Used to be shareware, now freeware
|-
* [[OS2 API:RXULS|RXULS]] - REXX [[Unicode]] API - Open source - Current.
| ||[[BREXX]]|| ||X|| || ||Open Source
* [[SpUtils]] - PM and API functions - Open source - Discontinued.
|-
</div>
| ||Compact Rexx (CRX)|| ||X|| || ||Open source
|-
|Kilowatt Software||Portable Rexx|| ||X|| || ||Commercial
|-
| ||WinREXX|| || ||X|| ||Commercial
|-
| ||WREXX|| || ||X|| ||Commercial
|}


====GUI/Widget bindings====
===Text editor support===
* [[Rexx/Curses]] - Bindings to the [[PD Curses]] text mode UI library - Open source - Current
*[[Boxer]] - Regina, IBM and BREXX support included by default
* [[REXX/DW]] - Bindings to the [[Dynamic Windows]] GUI/Widget toolkit - Open source - Current
*[[FTE]] - support for syntax highlighting, code folding and syntax-aware autoindent.
* [[REXX/Tk]] - Bindings to the [[Tcl/Tk]] GUI/Widget toolkit - Open source - Discontinued
 
====Graphical front ends and REXX development systems====
* [[Dr. Dialog]] - Freeware - Discontinued
* [[GpfREXX]] - Commercial - Development discontinued but still available for sale at a discounted price.
* [[MAID]] -  Commercial - Current
* [[VisPro/REXX]] -  Was commercial, now freeware - Discontinued
* [[VREXX]] -  Freeware - Discontinued
* [[VX-REXX]] -  Commercial - Discontinued
 
====Utilities and translators====
* Rexx2Nrx - Converts SAA REXX code to NetRexx - Open Source - Discontinued
 
====OS/2 text & programmers editors with REXX support====
* [[Boxer]] - Classic REXX (Regina & IBM) and BREXX support included by default.
* [[Enhanced Editor]] - Has syntax highlighting, auto-formatting and automatic code summary for REXX.
* [[Fast Editor Lite]]
* [[FTE]] - Has support for syntax highlighting, code folding and syntax-aware autoindent. - Open source - Current.
* [[Future Wave Editor]] - macro & syntax support included by default - Shareware - Current.
* [[KEDIT]] - [[XEDIT]] clone - Commercial - Discontinued.
* [[Preditor/2]] - REXX template with syntax highlighting - Commercial - Discontinued.
* [[SourceLink]] - Commercial - Discontinued - Browser/Editor/Visualiser.
 
====Source code browsers, visualisers, analysers and other utilities====
* [[Exuberant ctags]] - Creates index files out of REXX source files - Open source - Current.
* [[Pillarsoft Suite]] - Contains a code template tool with REXX support - Shareware - Discontinued
* [[REXX/Trans]] - Helps you use REXX as a macro lang. in your app - Open source - Current.
* [[REXX/Wrapper]] - Wraps REXX code into a semi-exe - Open source - Current.
* [[SourceLink]] - Commercial - Discontinued - Browser/Editor/Visualiser.
 
====REXX source code snippets, archives and collections====
Small programs or routines that you can integrate into your own programs or study to learn from, but are not delivered in library form.
* [http://dhost.info/zabrodskyvlada/aat/ Album of Algorithms and Techniques for Standard Rexx]  - [[Vladimír Zábrodský]]'s collection of REXX code, mostly small snippets.
* [[BuildSOM]] - Creates program and folder objects via [[SOM]].
* [[Get Usenet News Articles Using REXX, Network News Transfer Protocol and Sockets]]
* [[Harold Zbiegien's date algorithms in REXX]]
* [http://mzelden.com/mvsutil.html Mark's MVS Utilities] - While mostly XEDIT and MVS related there are a few worthwhile REXX programs in there as well.
* [http://www.norrsken-data-teknik.com/eCS/index.html norrsken data teknik eCS tools] - Helge Nordmann's REXX utility collection.
* [http://pleac.sourceforge.net/pleac_rexx/index.html PLEAC-REXX] - Collection of common REXX rutines
* [http://www.robvanderwoude.com/rexxexamples.php REXX examples from Rob van der Woude's Scripting homepage]
* [http://www.rexswain.com/b2mmddyy.rex Rex Swain's B2MMDDYY.REX] - Convert Base format date to MM/DD/YYYY
* [[Send Mail to an Email List with REXX, SMTP and Sockets]]
* [[Stupid OS/2 Tricks/REXX Commands]]
* [http://www.wpachl.at/Rexx_Programs.html Walter Pachl's REXX code], [http://rosettacode.org/mw/index.php?title=Special%3ASearch&search=Walter+Pachl&go=Go on rosettacode.org] - Contains many REXX snippets.
* [[Update Homepage]]
 
====OS/2 applications that can be scripted with REXX====
OS/2 based application that have explicit REXX support, other software that has some sort of scripting support can sometimes be "hijacked" to use REXX as well by shaping the output of your REXX script to what the application expects.
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
*[[Enhanced Editor]] - Text editor
*Embellish - Bitmap graphics editing
*[[Future Wave Editor]] - Text editor
*[[Gnuplot]] - Plotting package
*HyperAccess - Communications program
*Impos/2 - Bitmap graphics editing
*[[KEDIT]] - Text editor
*Kermit 95 - Communications
*[[LPEX]] - Editor, part of [[VisualAge C++]]
*[[Lotus 1-2-3]]
*[[Mesa 2]] - Spreadsheet
*PhotoGraphics Pro - Line/pixel graphics
*PM-Mail - E-Mail program
*REXXterm - Communications program
*[[SourceLink]] - Source code browser/editor/visualiser
*[[THE]] - Editor
*ZOC - Communications program
</div>
 
==DOS Implementations==
* [[BREXX]] - Open Source - Current
* [[PC DOS REXX]] - Commercial - included in IBM PC DOS versions 7 and higher
* [http://speleotrove.com/rexxhist/rexxcrx.html Compact Rexx (CRX)] - Open source - Discontinued
* [[Personal REXX]] - Commercial - Discontinued
*Portable Rexx - Commercial - Discontinued
* [[Regina REXX]] - Compatible with classic REXX -  Open Source - Current
*REXXPC88 - 1987/88 IBM internal
 
===DOS text & programmers editors with REXX support===
* [[Boxer]] - Regina, IBM and BREXX support included by default
* [[FTE]] - Has support for syntax highlighting, code folding and syntax-aware autoindent. - Open source - Current
 
===REXX implementations that run under WinOS/2===
*[[Object REXX]] - Open source - Win32s version discontinued - IBM versions supported running under Win3x with Win32s.
*[[Personal REXX]] - Commercial - Discontinued
*WinREXX - Commercial - Discontinued
*WREXX - Commercial - Discontinued
 
==REXX implementations that run under Java==
* [[NetRexx]]


==Publications==
==Publications==
For listings of REXX related books and general articles see the [[REXX Bibliography]].
For listings of REXX related books and general articles see the [[REXX Bibliography]].
====Local articles====
* [[Douglas Clark]]: [[Rexx: The King is Alive and Well]]
* [[Dan Bridges]]: [[The Joy of REXX]] - Tutorial and Book review
* [[Roger Orr]]: [[OS/2 Procedures Language - REXX]] - Introductory material
* [[REXX Tips & Tricks:Sources]]
* [[Dave Briccetti]]: [[Sending Mail with REXX]]
* [[OS2 API:REXX]]
* [[Darin McBride]]: [[REXXSEM:The Reference]]
*[[Charles Daney]]: [[Common REXX Pitfalls]]
*Charles Daney: [[How to Do It in OS/2 REXX]]
*Charles Daney: [[Advanced REXX Programming Topics]]
*Charles Daney: [[Solving REXX and OS/2 problems with REXXLIB]]
* [[REXX Tips & Tricks]]
*[[Richard K. Goran]]: [[Introduction to object manipulation in REXX]]
*Richard K. Goran: [[REXX Components]]
*Richard K. Goran: [[Creating and building your own LaunchPad]]
*Richard K. Goran: [[Info-ZIP's UnZip REXX Interface]]
====Tutorials and other learning material====
* Our own introduction and turorial written by [[Roger Orr]]: [[OS/2 Procedures Language - REXX]]
* And a more thorough tutorial called "REXX for Newies" that was written by [[Chris Wenham]]:
** [[REXX for Newies:Part I]] (Oct 1998)
** [[REXX for Newies:Part II]] (Oct 1998)
** [[REXX for Newies:Part III]] (Nov 1998)
** [[REXX for Newies:Part IV]] (Nov 1998)
** [[REXX for Newies:Part V]] (Dec 1998)
* [http://www.cs.ox.ac.uk/people/ian.collier/Docs/rexx_info/whole.html Ian Collier's REXX tutorial]
* [http://www.cs.ox.ac.uk/people/ian.collier/Docs/rexx_info/whole.html Ian Collier's REXX tutorial]
* [[Vladimír Zábrodský]]: ''[http://www.os2.cz/en/introduction-rexx-programming-language An Introduction To The REXX Programming Language]'' - From OS/2.cz
* [[Vladimír Zábrodský]]: ''[http://zabrodsky-rexx.byethost18.com/introrexx.html An Introduction To The REXX Programming Language]''
* [[Keith Watts]]: ''[http://www.kilowattsoftware.com/tutorial/rexx/ The Classic REXX tutorial]'' - Teaches the language to "Language Level 4.00 (TRL-2)", that is roughly the same as the SAA REXX shipped with OS/2
* [[Keith Watts]]: ''[https://web.archive.org/web/20181120094832/http://www.kilowattsoftware.com/tutorial/rexx/ The Classic REXX tutorial]'' - Teaches the language to "Language Level 4.00 (TRL-2)", that is roughly the same as the SAA REXX shipped with OS/2
* [http://www.kyla.co.uk/other/rexx1.htm REXX: THE LANGUAGE] - Introduction and tutorial by James Barry of Kyla Computing.
* [http://www.kyla.co.uk/other/rexx1.htm REXX: THE LANGUAGE] - Introduction and tutorial by James Barry of Kyla Computing.
* [http://www.lesbell.com.au/rexxobj.html Using REXX to repair and control the desktop] - From Les Bell and Associates Pty Ltd
* Matt Slocum: [http://www.sloky.net/programming/Rexx.rtf Rexx Programming Guide] - Nov 2005
* Matt Slocum: [http://www.sloky.net/programming/Rexx.rtf Rexx Programming Guide] - Nov 2005
=====Czech language tutorials=====
* [[Vladimír Zábrodský]]: ''[http://dhost.info/zabrodskyvlada/cz_introrexx.html Úvod do programovacího jazyka REXX]'' - Short tutorial introduction to REXX in Czech.


==Links==
==Links==
* [http://www.rexxla.org The Rexx Language Association]
* [http://www.rexxla.org The Rexx Language Association]
* [http://users.comlab.ox.ac.uk/ian.collier/Rexx/index.html Ian Collier's REXX page]
* [https://erroneousbee.github.io/Computers/RexxStyleGuide.html Style Guide for Rexx]
* [http://www-01.ibm.com/software/awdtools/rexx/ IBM REXX page]
* [http://www.rexx.org Mark Hessling's Home Page] - Lots of Rexx and Regina information and files from the gent behind [[Regina REXX]], including a Rexx manual
* [http://www.lightlink.com/hessling/ Mark Hessling's Home Page] - Lots of Rexx and Regina information and files from the gent behind [[Regina REXX]], including a Rexx manual
* [http://www.spgmbh.de/tipstricks_en.htm Tips & Tricks, Samples] - Material collected by a mainframe REXX programmer and some of it does not apply to OS/2 REXX.
* [http://www.spgmbh.de/tipstricks_en.htm REXX Tips & Tricks] - In English & German, not to be confused with our [[REXX Tips & Tricks]], this is material collected by a mainframe REXX programmer and some of it does not apply to OS/2 REXX.
* [http://cosmosgrammaticus.blogspot.co.uk/ Cosmos Grammaticus] - REXX related blog
* [http://cosmosgrammaticus.blogspot.co.uk/ Cosmos Grammaticus] - REXX related blog
* [[Eric Giguère]]: ''[http://collaboration.cmc.ec.gc.ca/science/rpn/biblio/ddj/Website/articles/DDJ/1993/9312/9312d/9312d.htm REXX and the OS/2 Workplace Shell]''


* USENET: [news:comp.lang.rexx comp.lang.REXX]
* USENET: [news:comp.lang.rexx comp.lang.REXX]
* [http://www.rexxla.org/forum.html REXX LA forum] - The official [[REXX Language Association]] forum
* [http://www.rexxla.org/forum.html REXX LA forum] - The official [[REXX Language Association]] forum
* [https://listserv.uga.edu/cgi-bin/wa?A0=REXXLIST REXXLIST] - Long running list


;Built with REXX
;Standards
* [http://www.srehttp.org/ SRE-HTTP] - A web server written primarily in REXX
* [http://www.rexxla.org/rexxlang/standards/j18pub.pdf ANSI standard for Rexx (X3.274)], published in 1996.
* [https://archive.org/details/ProgrammingLanguageExtendedRexx Extended REXX proposal] (Nov 1998)


;Standards
;Source code snippets, archives and collections
* [http://www.rexxla.org/rexxlang/standards/j18pub.pdf ANSI standard for Rexx (X3.274)], Published in 1996.
Small programs or routines that you can integrate into your own programs or study to learn from, but are not delivered in library form.
* [https://archive.org/details/ProgrammingLanguageExtendedRexx Extended REXX proposal] - Published in 1998
* [http://zabrodsky-rexx.byethost18.com/aat/ Album of Algorithms and Techniques for Standard Rexx]  - [[Vladimír Zábrodský]]'s collection of REXX code, mostly small snippets.
* [http://mzelden.com/mvsutil.html Mark's MVS Utilities] - While mostly XEDIT and MVS related, there are a few worthwhile REXX programs in there as well.
* [http://pleac.sourceforge.net/pleac_rexx/index.html PLEAC-REXX] - Collection of common REXX routines
* [http://www.robvanderwoude.com/rexxexamples.php REXX examples from Rob van der Woude's Scripting homepage]
* [http://www.rexswain.com/b2mmddyy.rex Rex Swain's B2MMDDYY.REX] - Convert Base format date to MM/DD/YYYY
* [http://www.wpachl.at/Rexx_Programs.html Walter Pachl's REXX code], contains many REXX snippets.


[[Category:Programming Languages]][[Category:REXX]]
[[Category:Programming Languages]]

Latest revision as of 18:49, 2 April 2025

REXX is an interpreted, procedural structured language that is included with every version of OS/2 EE 1.2 and later, IBM PC-DOS 7.0 and most AmigaOS variants and clones in addition to all current and recent IBM mainframe and minicomputer operating systems.

Although REXX is a generic programming language and can be (and has been) used to construct everything from simple utilities to large business applications, it is primarily used as a scripting or macro language, and as such is unusually easy to learn.

History

The REXX language was created by Mike Cowlishaw in 1979 under VM/CMS. The second implementation (2.00) was used inside IBM in 1980. Language level 3.20 was included in VM/SP Release 3 which was released in 1983.

Third party implementations started appearing in 1985.

In 1987 REXX was chosen to be the Systems Application Architecture (SAA) procedural language.

In 1989 the first version of IBM CMS REXX Compiler was released.

Object REXX is a different language that has been given object-oriented extensions modelled on those present in Smalltalk. While it is mostly compatible with Classic REXX there are some minor differences. It means that some REXX programs have to be modified to run correctly under Object REXX.

Amiga REXX is a clone of IBM's Classic REXX that has extensions to help its use as a mechanism for application to application and/or inter-application communication, Regina REXX supports those extensions.

Implementations

Vendor Implementation Operating environment Notes
OS/2 DOS Win16 Win32
IBM Procedures Language 2/REXX X (aka SAA REXX) shipped with OS/2
REXXPC88 X IBM internal (1987/88)
PC DOS REXX X introduced with IBM PC DOS 7
Quercus Personal REXX X X X Commercial
Regina REXX X X Compatible with Classic REXX - Open Source
BREXX X Open Source
Compact Rexx (CRX) X Open source
Kilowatt Software Portable Rexx X Commercial
WinREXX X Commercial
WREXX X Commercial

Text editor support

  • Boxer - Regina, IBM and BREXX support included by default
  • FTE - support for syntax highlighting, code folding and syntax-aware autoindent.

Publications

For listings of REXX related books and general articles see the REXX Bibliography.

Links

Standards
Source code snippets, archives and collections

Small programs or routines that you can integrate into your own programs or study to learn from, but are not delivered in library form.