REXX

CMS Commands

rexx.helpcmd.txt
REXX Overview

The VM/370 Sixpack features an integrated version of BREXX.  REXX procedures
have a filetype of EXEC, and must begin with "/* on the first line.

Note that this is an incomplete port of BREXX to VM/370.  In particular the
external variable and subcommand interfaces are not operational.


The following instructions are supported (except for those marked with **):
   ADDRESS CMS
   ADDRESS SYSTEM
   ARG [template]
   CALL name [expression] [,expression] ...
   DO [repetitor] [conditional]; [statement-list] END [symbol]
   DROP name [name] ...
   EXIT [expression]
   IF expression THEN statement1; [ELSE statement2]
   INTERPRET expression
   ITERATE [symbol]
   LEAVE [symbol]
   NOP
   NUMERIC DIGITS [expression]
   NUMERIC FORM [form]
   NUMERIC FUZZ [expression]
   PARSE [UPPER] source [template]
   PROCEDURE [EXPOSE name [name] ...]
   PULL [template]
   PUSH [expression]
   QUEUE [expression]
   RETURN [expression]
   SAY [expression]
   SELECT; when-list [OTHERWISE [statement-list]] END
   SIGNAL name
** SIGNAL VALUE expression
** SIGNAL ON condition [NAME handler]
** SIGNAL OFF condition
   TRACE [VALUE] expression

The following built-in functions are provided:
   ABBREV(string1, string2, [length])
   ABS(number)
   ADDRESS()
   ARG([argument-number], [option])
   BITAND(string1, [string2], [pad])
   BITOR(string1, [string2], [pad])
   BITXOR(string1, [string2], [pad])
   B2X(binary-string)
   CENTER(string, length, [pad])
   CHANGESTR(substring, string, substring)
   CHARIN([name], [start], [length])
   CHAROUT([name], [string], [start]) *** 'start' is ignored, treated as 1
   CHARS([name])
   CMSFLAG(flag)
   COMPARE(string1, string2, [pad])
   CONDITION([option])
   COPIES(string, count)
   COUNTSTR(substring, string)
   C2D(data, [length])
   C2X(data)
   DATATYPE(string, [type])
   DATE([option])
   DELSTR(string, start, [length])
   DELWORD(string, start, [length])
   DIGITS()
   D2C(number, [length])
   D2X(number, [length])
   ERRORTEXT(number)
   FORM()
   FORMAT(number, [m], [n], [exp1], [exp2])
   FUZZ()
   INSERT(string1, string2, [pos], [length], [pad])
   LASTPOS(target, string, [start])
   LEFT(string, length, [pad])
   LENGTH(string)
   LINEIN([name], [line], [count])
   LINEOUT([name], [string], [line]) *** 'line' is ignored, treated as 1
   LINES([name])
   LINESIZE()
   MAX(number, [number], ...)
   MIN(number, [number], ...)
   OVERLAY(string1, string2, [pos], length], [pad])
   POS(target, string, [start])
   QUEUED()
   RANDOM([min], [max], [seed])
   REVERSE(string)
   RIGHT(string, length, [pad])
   SIGN(number)
   SOURCELINE([number])
   SPACE(string, [count], [pad])
   SQRT(number)
   STORAGE()
   STRIP(string, [option], [character])
   SUBSTR(string, start, [length], [pad])
   SUBWORD(string, start, [length])
   SYMBOL(name)
   TIME([option])
   TRACE([type])
   TRANSLATE(string, [output], [input], [pad])
   TRUNC(number, [digits])
   VALUE(]name, [value], [type])
   VERIFY(string, search, [option], [start])
   USERID()
   WORD(string, number)
   WORDINDEX(string, number)
   WORDLENGTH(string, number)
   WORDPOS(phrase, string, [start])
   WORDS(string)
   XRANGE([first], [last])
   X2B(hex-string) (not working)
   X2C(hex-string)
   X2D(hex-string, [length])


Usage Notes:

1.  The BREXX interpretr is somewhat flakey.  Please report any problems you
    encounter to the H390-VM group on Yahoo.  Try out REXXTRY EXEC!

2.  Note that loading REXX and the GCCLIB runtime (required for REXX) into
    memory consumes 250K of memory.  Thus you may want to run in a larger
    virtual machine than you previously used.  You can remove these programs
    from memory by using the RESLIB commands:
       RESLIB DELETE DMSREX
       RESLIB DELETE GCCLIB
    Doing this of course means that you cannot run REXX EXECs.