[comp.lang.rexx] REXX Language levels

cathcart@ukfsc.iinus1.ibm.com ("Mark Cathcart") (12/19/90)

I thought you might be interested in the attached summary of changes to
the REXX Language. There are some notes on the IBM implementations.

You can find out the level of your REXX Interpreter using the Parse
Version Instruction.  For Example,

  Parse Version int lvl date
  Say 'REXX Interpreter' int 'is at level' lvl


 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 Level 3.40

    -   Base is SAA Procedures Language Level 1 being a (rather comprehensive)
        subset of REXX as supported by the VM/CMS Release 5 System Product
        Interpreter.



 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 Level 3.45


    -   add built-in functions: digits, form, fuzz, wordpos

    -   add DBCS built-in functions

    -   add VALUE to Numeric Form

    -   add <NO>EXMODE to Options for DBCS handling

    -   add FAILURE condition to Signal and Trace

    -   add 'Nomatch' option to verify bif

    -   add 'Basedate' and 'Normal' options to date bif

    -   add 'Civil' and 'Normal' options to time bif

    -   add strict comparison operators (<< >> <<= >>= \<< \>>)

    -   add backslash (\) as synonym/replacement for not (^) character

    All the following is not part of SAA Procedures Language.  It is still
    supported in VM and MVS implementations.  REXX OS/2 is the first
    implementation that excludes them.

    -   delete dollar, at, hash, cent from symbol character set

    -   delete 'Julian' and 'Century' options from date bif

    -   delete Upper instruction (use translate bif instead)

    -   delete externals, find, index, justify, linesize, userid bifs



 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 Level 3.46


    -   add Call On/Off for Error, Failure, and Halt conditions

    -   add Call/Signal On ... Name trapname

    -   add condition built-in function

    -   increase number of arguments from 10 -> 20

    -   improve precision of exponentiation and integer division/remainder



 =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
 Level 4.00


    -   add binary strings (e.g., '1100 1001'B)

    -   add b2x charin charout chars linein lineout lines stream x2b bifs

    -   add Linein to Parse (meaning: Parse Value linein() With...)

    -   add "subsidiary" namelist to Drop and Procedure Expose
               e.g., a='AA BB CC' Drop (a) is the same as Drop AA BB CC.

    -   add NOTREADY to Call/Signal On/Off

    -   add optional arguments newvalue and selector to value bif

    -   add prefix to variable patterns +(u), -(v), =(w)
                and '=' (for consistency) to positional pattern, e.g. =13
                 to denote relative positional patterns
                 (u,v,w must contain non-negative whole numbers).

    -   add system exits

    -   remove Scan option from Trace instruction

    -   enhance value built-in function with SET option and external variable

    -   all math built-in functions normalize before use

eric@sejnet.sunet.se (Eric Thomas, SUNET) (12/20/90)

In article <9012191426.AA00905@ucbvax.Berkeley.EDU>, cathcart@ukfsc.iinus1.ibm.com ("Mark Cathcart") writes...
> Level 3.45
> 
>    -   add built-in functions: digits, form, fuzz, wordpos
>(...)
>    -   delete externals, find, index, justify, linesize, userid bifs

I have *tons* of EXEC's that use FIND, because FIND is what there was at the
beginning. Since I run SP5 I do not even *have* a version of REXX that supports
WORDPOS, and SAA REXX does not support FIND any longer. Very, very clever of
IBM I must say.

  Eric

PS: Mark, I know it's not your fault :-) Besides which I don't care whether my
    EXEC's are SAA or not, it's just a philosophical comment.

cathcart@ukfsc.iinus1.ibm.com ("Mark Cathcart") (12/20/90)

Eric, I know you know... but just to make it clear these levels are the
REXX language levels. If your interpreter/compiler is at x.xx level then
it should at least support that level, there is no requirement to remove
function from previous levels, especially where the interpreter/compiler
had existed in that environment at a prior level. I see no good reason
to remove FIND or INDEX et al from the VM/CMS Interpreter.

For example, my VM/ESA Interpreter returns 3.46 for the level and
still supports externals, find, index, justify, linesize
and userid bifs. It would be daft if it didn't.

eric@sejnet.sunet.se (Eric Thomas, SUNET) (12/21/90)

I understand, but what it means is that I won't be able to convert my EXEC's to
the SAA compliant syntax for, oh, just another 5 years or so, because there
will be a significant amount of < 5.5 systems around for at least 5 years. By
that time I will have even more EXEC's to convert since I have to keep using
non-SAA-compliant functions for new code I am writing now, so it will be a huge
amount of work, rather than just a lot of work :-) In other words, chances are
that I will never do it. So much for standardization. 

  Eric