summaryrefslogtreecommitdiff
path: root/lang/rexx-imc/pkg-descr
blob: 89d4fdacbf18e1fc475fed0362c39eb01bc91cf4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
What is REXX ?
==============

REXX is a programming language designed by Michael Cowlishaw
of IBM UK Laboratories.  In his own words:  "REXX is a
procedural language that allows programs and algorithms to
be written in a clear and structured way."
REXX doesn't look that different from any other procedural
language.  Here's a simple REXX program:

     /* Count some numbers */
     
     say "Counting..."
     do i = 1 to 10
         say "Number" i
     end

What makes REXX different from most other languages is that
it is also designed to be used as a macro language by
arbitrary application programs.  The idea is that
application developers don't have to design their own macro
languages and interpreters.  Instead they use REXX as the
macro language and support the REXX programming interface.
If a REXX macro comes across an expression or function call
that it cannot resolve, it can ask the application to handle
it instead.  The application only has to support the
features that are specific to it, freeing the developer from
handling the mundane (and time-consuming) task of writing a
language interpreter.  And if all applications use REXX as
their macro language, the user only has to learn one
language instead of a dozen.


Differences between TRL (The REXX Language) and REXX/imc
========================================================

The following are all nonstandard features of REXX-imc

 * Rejection of labels ending with dot (in case of confusion between
   function.(args) and stem.(tail))
 * Compound variable accesses of the form "stem.'string constant'" and
   stem.(expression)
 * Acceptance of any non-zero number for logical truth, rather than just 1
 * "SAYN expression" to output lines without carriage return
 * "SELECT expression" to switch on a value
 * "END SELECT"
 * "PARSE VALUE" with multiple strings separated by commas
 * "PROCEDURE HIDE"
 * The following functions: chdir getcwd getenv putenv system userid
   plus these I/O functions: open close fdopen popen pclose fileno ftell
 * error messages 80-210, -1 and -3.


Good sources of REXX information on the web:
============================================

REXX/imc Home page
	http://www.comlab.ox.ac.uk/oucl/users/ian.collier/Rexx/index.html

IBM's REXX Language Page
	http://rexx.hursley.ibm.com/rexx/

REXX Tutorials Page
	http://www2.hursley.ibm.com/rexxtut/