ARexx is a
Rexx
Rexx (restructured extended executor) is a high-level programming language developed at IBM by Mike Cowlishaw. Both proprietary and open-source software, open source Rexx interpreter (computing), interpreters exist for a wide range of comput ...
interpreter for
Amiga, written in 1987 by William S. Hawes, with a number of Amiga-specific features beyond standard Rexx. An ARexx
script can communicate with software that implements an ''ARexx port''. An Amiga
application can define a set of
commands and
functions for ARexx to address, thus making the capabilities of the software available to an ARexx script. Several applications support running an ARexx script as a
macro.
An ARexx script can execute commands and functions in multiple applications which allows a script to
integrate the functionality of the applications. For example, an ARexx script could extract data from a
database
In computing, a database is an organized collection of data or a type of data store based on the use of a database management system (DBMS), the software that interacts with end users, applications, and the database itself to capture and a ...
, insert the data into a
spreadsheet
A spreadsheet is a computer application for computation, organization, analysis and storage of data in tabular form. Spreadsheets were developed as computerized analogs of paper accounting worksheets. The program operates on data entered in c ...
to perform calculations on the data, then insert tables and charts based on the results into a
word processor A word processor (WP) is a device or computer program that provides for input, editing, formatting, and output of text, often with some additional features.
Early word processors were stand-alone devices dedicated to the function, but current word ...
document.
ARexx allows a script to communicate with applications that are "ARexx compatible" able to receive commands from ARexx and execute them. Notable examples include: the ''MicroFiche Filer'' database application provides extensive ARexx commands, the ''Textra'' editor supplied with JForth provides an integrated programming environment, and the ''AmigaVision multimedia presentation'' application can control other programs via ARexx.
As in standard Rexx, ARexx uses ''typeless'' data representation. Other
programming languages distinguish types such as
integer
An integer is the number zero (0), a positive natural number (1, 2, 3, ...), or the negation of a positive natural number (−1, −2, −3, ...). The negations or additive inverses of the positive natural numbers are referred to as negative in ...
,
floating point,
string, but Rexx treats all data as text (string). This makes writing code easier, but leads to runtime inefficiency and errors. As is often the case in
dynamically scoped languages, variables are not declared before using them. They are created on first use.
ARexx provides built-in commands and access to its host Amiga
library
A library is a collection of Book, books, and possibly other Document, materials and Media (communication), media, that is accessible for use by its members and members of allied institutions. Libraries provide physical (hard copies) or electron ...
(rexxsyslib.library) as well as other libraries and functions. An Amiga program with an ARexx port can
serve its functionality to an ARexx script. An ARexx script can invoke other ARexx scripts.
History
ARexx was created in 1987, developed for Amiga by William S. Hawes. It is based on the Rexx language described by
Mike Cowlishaw in the book ''The REXX Language: A Practical Approach to Programming''. ARexx was included by
Commodore with
AmigaOS
AmigaOS is a family of proprietary native operating systems of the Amiga and AmigaOne personal computers. It was developed first by Commodore International and introduced with the launch of the first Amiga, the Amiga 1000, in 1985. Early versions ...
2.0 in 1990, and has been included with all subsequent AmigaOS releases. This later version of ARexx follows the official Rexx language closely; Hawes was later involved in drafting the
ANSI
The American National Standards Institute (ANSI ) is a private nonprofit organization that oversees the development of voluntary consensus standards for products, services, processes, systems, and personnel in the United States. The organiz ...
standard for Rexx.
From the ARexx manual:
ARexx was developed on an Amiga 1000 computer with 512k bytes of
memory and two floppy disk drives. The language prototype was
developed in C using Lattice C, and the production version was written
in assembly-language using the Metacomco assembler. The documentation
was created using the TxEd editor, and was set in TeX
Tex, TeX, TEX, may refer to:
People and fictional characters
* Tex (nickname), a list of people and fictional characters with the nickname
* Tex Earnhardt (1930–2020), U.S. businessman
* Joe Tex (1933–1982), stage name of American soul singer ...
using AmigaTeX.
This is a 100% Amiga product.
As ARexx is written in
68000 assembly language
In computing, assembly language (alternatively assembler language or symbolic machine code), often referred to simply as assembly and commonly abbreviated as ASM or asm, is any low-level programming language with a very strong correspondence bet ...
, it cannot function at full speed with
PPC CPUs of
MorphOS, a more modern descendant of Amiga. ARexx has not been rewritten for them and is still missing from MorphOS. William Hawes is no longer involved in development of Amiga software and no firm is financing new versions of ARexx. Notwithstanding, the existing version of ARexx continues to be used, although not distributed with MorphOS.
Examples
Implement new capabilities
If a user is using a program which builds animations by joining various
bitmap image files but which lacks image processing capabilities, they could write an ARexx script which performs these actions:
#ARexx locates the image files in their directories
#ARexx loads first image
#ARexx loads paint program
#The image is loaded into paint program which performs modifications to file
#The modified image is stored into another directory
#ARexx repeats procedure on any image in the directory
#The paint program is closed and the animation program is loaded
#The animation is built
#The animation is saved in its directory
#The animation program is closed
Automate repetitive tasks
EqFiles.rexx is a well-known example of a simple ARexx script written to automate repetitive and boring procedures. This script uses the ALeXcompare program
to compare files, and then finds all duplicates in a set of files and returns output by highlighting any results in a different color.
Extend AmigaOS
A significant value of ARexx is extending AmigaOS by adding capabilities it lacks. For example, a ARexx program could display a warning message or play an audio alert sound if a certain Amiga program stops, faults or has finished its scheduled job.
The following script is a ARexx script that displays warnings depending on events:
/* Alarm.rexx */
ARG event
IF event = 0 THEN EXIT
IF event = 1 THEN SAY "Program has ended unexpectedly"
IF event = 2 THEN SAY "Program has finished its job"
IF event = 3 THEN SAY "Cannot find data in selected directory"
See also
References
;Notes
*
*
External links
Beginning ARexx TutorialCommand and Function ReferenceDesign Tool
{{DEFAULTSORT:Arexx
Amiga APIs
Amiga development software
AmigaOS 4 software
AmigaOS
MorphOS
Scripting languages
CBM software
Assembly language software
Rexx
Inter-process communication