IBM Object REXX V1.1.10.0 of Object REXX for AIX README

5765-D62 IBM Object REXX for AIX
(C) Copyright International Business Machines Corporation 1998, 2004.
All rights reserved.


CONTENTS

1.0 ABOUT THIS README FILE
2.0 INSTALLATION INFORMATION
2.1 System requirements
2.2 Installation instructions
2.3 Removing installed software
3.0 GENERAL INFORMATION
4.0 LIST OF FIXES AND ADDITIONS
4.1 Known problems
5.0 HINTS AND TIPS
5.1 README file locations
5.2 Case sensitivity of commands
5.3 Case sensitivity of library names
5.4 Deleting shared memory
5.5 Documentation
5.6 User Switch (su -)
6.0 DESCRIPTION OF NEW FUNCTIONS
6.1 SysGetErrortext
6.2 SysQueryProcess
6.3 SysCreatePipe
6.4 SysFork
6.5 SysWait
6.6 FtpGetResume
6.7 USERID
6.8 The MutableBuffer Class
6.9 MakeString Method of array class
6.10 RexxAllocMem RexxFreeMem
6.11 ANSI Compliance for lines function and method
7.0 LIST OF REXX UTILITY FUNCTIONS
8.0 CONTACTS
9.0 NOTICES


1.0  ABOUT THIS README FILE

This README file is for the summary PTF number 025 for the Object
REXX Interpreter. The PTF contains all fixes from previous PTFs.


2.0 INSTALLATION INFORMATION

2.1 System Requirements

Object REXX for AIX version 1.1.10.0 can be installed under
AIX version 4.3.3 and higher. Object REXX for AIX is a 32Bit
application.

2.2 Installation instructions

If you have got the .tar file, you must unpack the file with the
following command to get the .bff file for installation:

       tar -xvf orx00nn.tar

       (smit(ty) panels:)   enter smit or smitty

      on the menu
       select:  Software Installation and Maintenance
       select:  Install and Update Software
       select:  Install/Update Selectable Software (Custom Install)
       select:  Install Software Products at Latest Level
       select:  Install New Software Products at Latest Level
       fill in:  INPUT device / directory for software
       select the device or enter the file name of the
       installable image of IBM Object REXX for AIX
       and press ENTER to start the installation.

NOTE: If a TRIAL version of IBM Object REXX for AIX exists
on the system:
 o  It must be removed (see 2.3)
 o  The new version of IBM Object REXX for AIX can be installed.
 o  The system must not be rebooted if the procedure "rxdelipc"
    is used to delete the shared memory of Object REXX before
    its first use.


2.3 Removing installed software

    (smit(ty) panels:)   enter smit or smitty

     on the menu
      select:  Software Installation and Maintenance
      select:  Maintain Installed Software
      select:  Remove Software Products
      fill in:  SOFTWARE name
      enter "orexx" and change PREVIEW only? to "no"
        and press ENTER.


3.0 GENERAL INFORMATION

In order to try Object REXX statements, enter  trexx. The
command opens its own window. If the system cannot open a window,
you can enter

     rexx rexxtry.cmd

for the same purpose.

Visit our REXX Internet home page
     http://www.ibm.com/software/awdtools/obj-rexx
for more information.


4.0 LIST OF FIXES AND ADDITIONS

 o  Performance improvements on stem processing, REXX kernel
    processing, and memory management.

 o  New libraries for:

          o  Mathematical functions
          o  Regular expressions

 o  New options "-force" and  "-help" for binary "rxdelipc".

 o  The default mode for opening a stream is NONE SHARED. This
    default mode can be changed by explicitly opening the stream
    with the stream open command or method using the SHARED/
    SHAREDREAD or SHAREDWRITE mode.

    If a file was opened NONE SHARED and another REXX procedure
    tries to open it again, the NOTREADY signal will be raised.
    For more information see Object REXX Reference chapter 6
    "Stream Class" and chapter 8 "Stream Function".

 o  Memory leak was caused if a REXX program called another
    external REXX program in a loop.

 o  CTRL_Z character for end-of-file is ignored by REXX now.

 o  Delayed and piped input from "stdin" (keyboard) is recognized.

 o  The binary "rexxrt" retokenizes old tokenized REXX scripts to
    the latest REXX version. ( See the description "rexxc" and "rexxrt"
    in the Object REXX Reference for more information.)

 o  Tokenized Object REXX scripts for AIX  do not run on another
    AIX system before Object REXX version 1.1.9.0.

o   The REXX utility function "SysFileSearch" now also counts lines
    that consist of only one new-line-character.

 o  The REXX utility function "SysMkDir" now takes the permission of the
    "umask" setting for a directory to be created.

 o  The pragma statements in the "rexx.h" file have been deleted to allow the
    compilation of C and C++ programs using the Object REXX API.

 o  The options of the "lines" method of the stream class and the
    "lines" function have changed (see chapter 6.11).

 o  Instore scripts and scripts in the macrospace now accept
    '#!/usr/bin/rexx' at the first line

 o  REXX runs from a current working directory which belongs to a
    different user if the permission has been set for it.

 o  The REXX utility function "SysSleep" now accepts a value of 3600.

 o  The anchor point "..IBM_OREXX1.1.10.0_$USER" of the shared memory is
    unique for each user after a switch of user.

 o  For each user the REXX semaphores are limited under AIX to:
                 1024 REXX semaphores for the utility functions;
                 4096 REXX semaphores for the REXX Queues.

 o  The Object REXX FTP API V2.7 and higher has got the additional transfer
    type "EBCDIC" for a file transfer to and from an EBCDIC system. The
    transfer type "EBCDIC" allows a restore of the data format for instance
    on z/VM.

    /* This REXX sample shows briefly how you can get a variable blocked */
    /* file from VM and put it back as fixed block 80:                   */

    /* Receive a file from VM -------------------------------------------*/
    say " FTPQUOTE "FtpQuote("type e", retstr )
    say "Message returned: "retstr
    say " FTPQUOTE "FtpQuote("mode b", retstr )
    say "Message returned: "retstr

    Say "Receiving a file via FtpGet ..."
    If FtpGet("local_ebcdic", "host_file1" ) = 0 Then
      Say " File transferred;"
    Else
      Call Terminate " *** No EBCDIC file received; Program ENDS."

    /* Send a file to VM ------------------------------------------------*/
    say " FTPQUOTE "FtpQuote("type e", retstr )
    say "Message returned: "retstr
    say " FTPQUOTE "FtpQuote("mode b", retstr )
    say "Message returned: "retstr
    say " FTPQUOTE "FtpQuote("site fix 80", retstr )
    say "Message returned: "retstr

    Say "Sending a file via FtpPut ... "
    If FtpPut("local_ebcdic", "most_file2" ) = 0 Then
      Say " File transferred;"
    Else
      Call Termination " *** No EBCDIC file sent; Program ENDS."
    /* ====================================================== */

    You must NOT define the transfer mode "EBCDIC" in the following
    REXX FTP API functions:
                           FtpSetBinary()
                           FtpAppend()
                           FtpGet()
                           FtpPut()
                           FtpPutUnique()
                           FtpProxy().



4.1 Known problems

    o Only piped "|" input and no redirected "<" input can be evaluated
      by Object REXX under Unix.
    o The option for the "rexxc" is "-s" and NOT "/s". This is wrong in
      the documentation.
    o The library "librxftp.so" is not thread save.


5.0 HINTS AND TIPS

5.1 README file locations

The OREXX README files are in the directory '/usr/lpp/orexx/'.


5.2  Case sensitivity of commands

When you issue a command to the system shell, or a REXX script is
called within a REXX script, the command must be put in quotes.
This causes the REXX interpreter to handle the command as a
case-sensitive string. If the command is not within quotes, the
interpreter translates the command to upper case, and AIX does not
recognize this command. This must be taken into account, if you run
REXX programs that were developed under OS/2,  Windows95/NT, or
other non-Unix platforms.


5.3 Case sensitivity of library names

If you want to load a function from an external library,
remember that the library is case sensitive.  For example,
if the library name is 'librexxutil.so',  you must enter:

     rxfuncadd 'SysSleep','rexxutil','SysSleep'

If you instead enter:

     rxfuncadd 'SysSleep','Rexxutil','SysSleep'

the interpreter does not find the library.


5.4 Deleting shared memory

The procedure "rxdelipc" can be used to delete the shared
memory, which Object REXX for AIX uses for "rxqueue" data,
for function registrations, for the macro space, and for
control purposes.

Shared memory can become corrupted as the result of a
"kill -9 PID" call to stop a REXX procedure.

You can also use the procedure "rxdelipc" if stored data of
a named REXX queue will never be fetched and does consume
storage.


5.5 Documentation

If the "orexxman.img" image file has been installed on your AIX
system, the following documentation is provided in directory
/usr/lpp/orexx.info.en_US/*

"Object REXX Reference"               - file:  rexxref.pdf
"Object REXX Programming Guide"       - file:   rexxpg.pdf
"Object REXX Mathematical Functions"  - file:   rxmath.pdf
"RxSock Reference"                    - file:   rxsock.pdf
"RxFtp Reference"                     - file:    rxftp.pdf
"Object REXX Regular Expression"      - file: rxregexp.doc

If you need the Adobe Acrobat reader to read the PDF files,
download it from URL

     http://www.adobe.com/prodindex/acrobat/readstep.html

or install it from your Object REXX for AIX CD-ROM.


5.6 User Switch (su -)

Object REXX uses a shared memory for controlling purposes and persistent
data storage. Only the owning user can read from and write to this shared
memory for security reasons. Therefore the  "User Switch"  command:
 "su - user_id" must be used to switch to another user and the environment
of this user (through the minus sign) too. Otherwise Object REXX will not
have an anchor point for the shared memory of the switched user.
For more information see the help text of the "rxdelipc -h" procedure.


6.0 DESCRIPTION OF NEW FUNCTIONS


6.1 SysGetErrortext

   >>-SysGetErrortext(errornumber)--------------------------><

Obtains a string describing the system error identified by the
error number.

Returns a string with the description of the error, or an empty
string if no description is available.

Example:

   err=SysMkDir("/home/NotKnown/temp")

   if err \= 0 then

   say "Error" err":"SysGetErrortext(err)


6.2 SysQueryProcess


                        .-PID------.
                        |          |
   >>-SysQueryProcess("-+----------+--")--------------------><
                        |          |
                        +-PPID-----+
                        |          |
                        +-PPRIO----+
                        |          |
                        +-PTIME----+
                        |          |
                        +-PMEM-----+
                        |          |
                        +-PSWAPS---+
                        |          |
                        '-PRCVDSIG-'

Retrieves information about the current process.

Parameter:

   PID
      Returns the process ID of the current process.

   PPID
      Returns the parent process ID of the current process.

   PPRIO
      Returns the priority number of the current process.

   PTIME
      Returns time information of the current process.

   PMEM
      Returns the maximum memory (RSS) used by the current
      process.

   PSWAPS
      Returns the number of times that the process has been swapped
      out of memory.

   PRCVDSIG
      Returns the number of signals that have been received by the process.

Return codes:

  o  For PID or PPID: an ID

  o  For PPRIO: a number from -20 to +20

  o  For PTIME: the summary and the duration that the process
     executed in kernel mode, and the duration that the process
     executed in user mode.


6.3 SysCreatePipe

                     .-Blocking----.
                     |             |
   >>-SysCreatePipe(-+-------------+-)-----------------------><
                     |             |
                     '-Nonblocking-'

Creates an interprocess channel called an "unnamed pipe", opens
it, and returns two handle identifiers, separated by a blank.
The first handle is opened for reading, and second for writing.

Unnamed pipes are used to allow communication between different
processes. Anything that is written to the writing pipe can be
read from the reading pipe. The restriction is that unnamed pipes
can only be shared between the process that creates them and the
child processes of that process.

Once an unnamed pipe is created with SysCreatePipe, the read and
write handles can be used directly with the system I/O functions,
or they can be concatenated with the string "HANDLE:" to form
stream names that can be used like any other transient streams in
REXX programs. Because they are transient streams, changing the
read and write positions is not allowed, CHARS returns only 1 or 0
(See Chapter "Input and Output Streams" for a discussion of
REXX input and output).

The "Blocking" option, which is the default, causes input operations
to wait until data is available in the pipe, or until an end-of-file
indication is returned by the Unix operating system (which means
that no processes remain that have the pipe open for writing).
The end-of-file indication causes the NOTREADY condition to be
raised when the native REXX input functions are used. For system
input functions, the end-of-file indication is returned.

The "Nonblocking" option causes input operations to return immediately,
regardless of the availability of data. If no data is present, but there
are still processes that have the pipe open for writing, the input
operations simply return null strings (""). An end-of-file indication
still raises the NOTREADY condition if the native REXX input functions
are used. For system input functions, the end-of-file indication is
returned.

The handles returned by SysCreatePipe are numeric, and equal to the
handle numbers returned by the "pipe" of the Unix operating system
subroutine. You can pass this information to any programs that you
call, so that they can make use of the pipes that you have created.

Examples:
   SysCreatePipe()       ->  "7 8"   /* maybe this */
   SysCreatePipe()       ->  "9 14"  /* maybe this */


6.4 SysFork

   >>-SysFork()---------------------------------------------><

Returns the process ID (pid) of the created child process to the
parent process, and always returns a value of 0 to the child
process.


6.5 SysWait

   >>-SysWait()---------------------------------------------><

Waits for a child process to stop or to terminate, then returns
with the exit code of the child process. If the child process that
has not been waited for has already stopped or terminated prior to
the call, SysWait returns without waiting.


6.6 FtpGetResume

New function in the RxFTP library for a file transfer restart.

The FtpGetResume() call copies a single file from a restart position
of a file on the remote FTP server to the local FTP client. The copy
and the file to be copied need not have the same name.

The RestartPosition parameter is optional:

     If it is omitted (or if RestartPosition = 0), and if the local
     file exists, data from the remote file, beginning at its restart
     position, is appended to the local file.

     If it is omitted (or if RestartPosition = 0), and if the local
     file does not exist, the restart position of the remote file
     is ignored, and the entire remote file is copied.

     If a restart position greater than "0" is specified, data from
     the remote file, beginning at the restart position, is copied
     to a new local file. An existing file is overwritten.

The transfer mode is always BINARY.

The remote host running the FTP server is specified with the FtpSetUser()
call.

Note: The FtpGetResume() function can only be used with an FTP server
      that supports the restart facility.

Syntax:

rc = FtpGetResume(localFile,remoteFile<,restartPosition>)

where:

localFile
     is the name of the file on the local host.

remoteFile
     is the name of the file to be copied from the remote FTP
     server.

RestartPosition
     is the offset from the beginning of the remote file
     (in number of bytes) where the restart must begin.

The return value is an FTP error code.

================================================================

6.7 USERID

New built-in function of Object REXX.

Syntax:

user_id = UserID()

   >>-UserID()----------------------------------------------><

The return value is the active user identification.

================================================================


6.8 The MutableBuffer Class

                    ,-----,-256------,
>>-INIT(-+--------+-+----------------+-)-----------------------><
         '-string-' '-,-buffer size--'

Initialize the buffer, optionally assign a buffer content and
a starting buffer size. The default size is 256; the buffer
size increases to the length of the string if the string does
not fit into the buffer.


>>-APPEND(string)----------------------------------------------><

Appends string string to the buffer content. The buffer size
is increased if necessary.


>>-DELETE(n---+---------+--)-----------------------------------><
              '-,length-'

Deletes length characters from the buffer beginning at the
n'th character. If length is omitted, or if length is greater
than the number of characters from n to the end of the buffer,
the method deletes the remaining buffer contents (including
the n'th character). The length must be a positive integer
or zero. The n must be a positive integer. If n is greater than
the length of the buffer or zero, the method does not modify the
buffer content.


>>-GETBUFFERSIZE-----------------------------------------------><

Retrieves the current buffer size.


>>-INSERT(new-+-----------------------------------------+--)---><
              '-,--+---+--+--------------------------+--'
                   '-n-'  '-,--+--------+--+------+--'
                               '-length-'  '-,pad-'

Inserts the string new, padded or truncated to length length,
into the mutable buffer after the n'th character. The default
value for n is 0, which means insertion at the beginning of the
string. If specified, n and length must be positive integers
or zeros. If n is greater than the length of the buffer contents,
the string new is padded at the beginning. The default value for
length is the length of new. If length is less than the length of
string new, INSERT truncates new to length length. The default
pad character is a blank.


>>-LENGTH------------------------------------------------------><

Returns length of data in buffer.


>>-OVERLAY(new-+-----------------------------------------+--)--><
               '-,--+---+--+--------------------------+--'
                    '-n-'  '-,--+--------+--+------+--'
                                '-length-'  '-,pad-'

Modifies the buffer content by overlaying it, starting at the
n'th character, with the string new, padded or truncated to
length length. The overlay can extend beyond the end of the
buffer. In this case the buffer size will be increased. If
you specify length, it must be a positive integer or zero.
The default value for length is the length of new. If n is
greater than the length of the buffer content, padding is
added before the new string. The default pad character is a
blank, and the default value for n is 1. If you specify n,
it must be a positive integer.


>>-SETBUFFERSIZE(n)--------------------------------------------><

Sets the buffer size. If n is less than the length of buffer
content, the content is truncated. If n is 0, the entire
contents is erased and the new buffer size is the value given
in the INIT method.


>>-STRING------------------------------------------------------><

Retrieves the content of the buffer (a string).


>>-SUBSTR(n-+--------------------------+--)--------------------><
            '-,--+--------+--+------+--'
                 '-length-'  '-,pad-'

Returns a substring from the buffer content that begins at the
n'th character and is of length length, padded with pad if
necessary. The n must be a positive integer. If n is greater
than receiving_string~LENGTH, only pad characters are returned.
If you omit length, the remaining buffer content is returned.
The default pad character is a blank.


6.9 The MakeString Method of the array Class

                 .-(LINE)--.
>>-MAKESTRING----+---------+------><
                 '-(CHAR)--'

Returns a stream that contains the data of an array (one to n dimensional).
The elements of the array are treated either in line or character format,
starting at the first element in the array. The line format is the default.

6.10 Dynamically allocating and de-allocating memory

For several functions of the Rexx-API it is necessary or possible to
dynamically allocate or free memory. Depending on the operating system,
compiler and REXX interpreter, the method for these allocations and de-
allocations vary. To write system independent code, Object REXX comes with
two new API function calls called RexxAllocateMemory() and RexxFreeMemory().
These functions are wrapper for the corresponding compiler or operating
system memory functions.

6.10.1 The RexxAllocateMemory() function

PVOID APIENTRY RexxAllocateMemory( ULONG size );

where:

size

  is the number of bytes of requested memory

Return Codes

  returns a pointer to the newly allocated block of memory, or NULL if no
  memory could be allocated.

6.10.2 The RexxFreeMemory() function

APIRET APIENTRY RexxFreeMemory( PVOID MemoryBlock );

where:

MemoryBlock

  is a void pointer to the block of memory allocated by the Object REXX
  interpreter, or allocated by a previous call to RexxAllocateMemory().

Return Codes:

  RexxFreeMemory() always returns 0.



6.11 ANSI Compliance for lines function and method


The ANSI Standard has extended this function to allow an option: "Count"

If this option is used, "lines" returns the actual number of complete
lines remaining in the stream, irrespective of how long this operation takes.

The option "Normal" returns 1 if there is at least one complete line
remaining in the file or 0 if no lines remain.


The following syntax diagram shows the new option of the lines function:


                        +-Normal-+
>>-LINES(--+------+-,---+--------+---)-------><
           +-name-+     +-Count--+

The default is "Normal"


The following syntax diagram shows the new option of the lines method:

            +-Count--+
>>~-LINES(--+--------+----)-------><
            +-Normal-+

The default is "Count".


The defaults of the lines method and function are different because of
compatibility reasons.


6.12 Enhanced REXXRT utility

The REXXRT utility now supports new conversion parameters.


Usage: rexxrt -1|-2|-3|-4 oldfile newfile

options: -1 tokenize from V1.1.2 to V1.1.10 format
         -2 tokenize from V1.1.7 to V1.1.10 format
         -3 tokenize from V1.1.8 to V1.1.10 format
         -4 tokenize from V1.1.9 to V1.1.10 format


Note: Retokenizing to a previous version is not recommended.
      Instead, use an appropriate version to run the script.



7.0 LIST OF REXX UTILITY FUNCTIONS

=================================================================
 Function                 | Exists on platforms:  |
  Name:                   | OS/2 | Windows | UNIX | Remarks
--------------------------+------+---------+------+--------------
SysAddFileHandle          | YES  |   YES   | NO   |
SysAddRexxMacro           | YES  |   YES   | YES  |
SysBootDrive              | YES  |   YES   | NO   |
SysClearRexxMacroSpace    | YES  |   YES   | YES  |
SysCloseEventSem          | YES  |   YES   | YES  |
SysCloseMutexSem          | YES  |   YES   | YES  |
SysCls                    | YES  |   YES   | YES  |
SysCopyObject             | YES  |   NO    | NO   |
SysCreateEventSem         | YES  |   YES   | YES  |
SysCreateMutexSem         | YES  |   YES   | YES  |
SysCreateObject           | YES  |   NO    | NO   |
SysCreatePipe             | NO   |   NO    | YES+ |
SysCreateShadow           | YES  |   NO    | NO   |
SysCurPos                 | YES  |   YES   | NO   |
SysCurState               | YES  |   YES   | NO   |
SysDeregisterObjectClass  | YES  |   NO    | NO   |
SysDestroyObject          | YES  |   NO    | NO   |
SysDriveInfo              | YES  |   YES   | NO   |
SysDriveMap               | YES  |   YES   | NO   |
SysDropFuncs              | YES  |   YES   | YES  |
SysDropLibrary            | YES  |   YES   | NO   |
SysDropRexxMacro          | YES  |   YES   | YES  |
SysDumpVariables          | YES  |   YES   | YES  |
SysElapsedTime            | YES  |   NO    | NO   |
SysFileDelete             | YES  |   YES   | YES  |
SysFileSearch             | YES  |   YES   | YES  |
SysFileSystemType         | YES  |   YES   | NO   |
SysFileTree               | YES  |   YES   | YES* |
SysFork                   | NO   |   NO    | YES+ |
SysFromUnicode            | NO   |   YES   | NO   |
SysGetErrortext           | NO   |   YES   | YES**|
SysGetCollate             | YES  |   YES   | NO   |
SysGetEA                  | YES  |   NO    | NO   |
SysGetFileDateTime        | YES  |   YES   | YES  |
SysGetKey                 | YES  |   YES   | YES  |
SysGetMessage             | NO   |   YES   | YES  |
SysGetMessageX            | NO   |   NO    | YES  |
SysGetpid                 | NO   |   NO    | YES+ | use SysQueryProcess instead;
SysIni                    | YES  |   YES   | NO   |
SysLoadFuncs              | YES  |   YES   | YES  |
SysLoadLibrary            | YES  |   YES   | NO   |
SysLoadRexxMacroSpace     | YES  |   YES   | YES  |
SysMapCase                | YES  |   YES   | NO   |
SysMkDir                  | YES  |   YES   | YES  |
SysMoveObject             | YES  |   NO    | NO   |
SysNationalLanguageCompare| YES  |   YES   | NO   |
SysOpenEventSem           | YES  |   YES   | YES  |
SysOpenMutexSem           | YES  |   YES   | YES  |
SysOpenObject             | YES  |   NO    | NO   |
SysPostEventSem           | YES  |   YES   | YES  |
SysProzessType            | YES  |   YES   | NO   |
SysPulseEventSem          | YES  |   YES   | NO   |
SysPutEA                  | YES  |   NO    | NO   |
SysQueryClassList         | YES  |   NO    | NO   |
SysQueryEAList            | YES  |   NO    | NO   |
SysQueryExtLIBPATH        | YES  |   NO    | NO   |
SysQueryProcess           | YES  |   YES   | YES* |
SysQueryProcessCodePage   | YES  |   YES   | NO   |
SysQueryRexxMacro         | YES  |   YES   | YES  |
SysQuerySwitchList        | YES  |   NO    | NO   |
SysRegisterObjectClass    | YES  |   NO    | NO   |
SysReleaseMutexSem        | YES  |   YES   | YES  |
SysReorderRexxMacro       | YES  |   YES   | YES  |
SysRequestMutexSem        | YES  |   YES   | YES  |
SysResetEventSem          | YES  |   YES   | YES  |
SysRmDir                  | YES  |   YES   | YES  |
SysSaveObject             | YES  |   NO    | NO   |
SysSaveRexxMacroSpace     | YES  |   YES   | YES  |
SysSearchPath             | YES  |   YES   | YES  |
SysSetExtLIBPATH          | YES  |   NO    | NO   |
SysSetFileDateTime        | YES  |   YES   | YES  |
SysSetFileHandle          | YES  |   NO    | NO   |
SysSetIcon                | YES  |   NO    | NO   |
SysSetObjectData          | YES  |   NO    | NO   |
SysSetPriority            | YES  |   YES   | NO   |
SysSetProcessCodePage     | YES  |   YES   | NO   |
SysShutDownSystem         | YES  |   YES   | NO   |
SysSleep                  | YES  |   YES   | YES  |
SysStemCopy               | YES  |   YES   | YES  |
SysStemDelete             | YES  |   YES   | YES  |
SysStemInsert             | YES  |   YES   | YES  |
SysStemSort               | YES  |   YES   | YES  |
SysSwitchSession          | YES  |   YES   | NO   |
SysSystemDirectory        | YES  |   NO    | NO   |
SysTempFileName           | YES  |   YES   | YES  |
SysTextScreenRead         | YES  |   YES   | NO   |
SysTextScreenSize         | YES  |   YES   | NO   |
SysToUnicode              | NO   |   YES   | NO   |
SysUtilVersion            | YES  |   YES   | YES  |
SysVersion                | YES  |   YES   | YES  |
SysVolumeLabel            | YES  |   YES   | NO   |
SysWait                   | NO   |   NO    | YES+ |
SysWaitEventSem           | YES  |   YES   | YES  |
SysWaitForShell           | YES  |   NO    | NO   |
SysWaitNamedPipe          | YES  |   YES   | NO   |
SysWinDecryptFile         | NO   |   YES   | NO   |
SysWinEncryptFile         | NO   |   YES   | NO   |
SysWildCard               | YES  |   YES   | NO   |
==========================+======+=========+======+==============
SysOS2Ver                 | YES  |   NO    | NO   | use SysVersion instead;
SysWinVer                 | NO   |   YES   | NO   | use SysVersion instead;
SysLinVer                 | NO   |   NO    | YES++| use SysVersion instead;
=================================================================
     Legend: *  <=> works differently;
             ** <=> new function;
             +  <=> AIX only.
             ++ <=> Linux only.
=================================================================


8.0 CONTACTS

Please address any comments and problem reports via our home
page's problem reporting facility:

     http://www.ibm.com/software/awdtools/obj-rexx

or by e-mail to:

     rexxhelp@vnet.ibm.com

or by mail to postal address:

   IBM Deutschland Entwicklung GmbH
   REXX Development, Department 7804
   Postbox 1380
   D-71003 Boeblingen
   Germany


9.0 NOTICES

This information was developed for products and services offered
in the U.S.A. IBM may not offer the products, services, or features
discussed in this document in other countries. Consult your local
IBM representative for information on the products and services
currently available in your area. Any reference to an IBM product,
program, or service is not intended to state or imply that only
that IBM product, program, or service may be used. Any functionally
equivalent product, program, or service that does not infringe any
IBM intellectual property right may be used instead. However, it is
the user's responsibility to evaluate and verify the operation of
any non-IBM product, program, or service.

IBM may have patents or pending patent applications covering subject
matter described in this document. The furnishing of this document
does not give you any license to these patents. You can send license
inquiries, in writing, to:
  IBM Director of Licensing
  IBM Corporation
  North Castle Drive
  Armonk, NY 10504-1785
  U.S.A.

For license inquiries regarding double-byte (DBCS) information,
contact the IBM Intellectual Property Department in your country
or send inquiries, in writing, to:
  IBM World Trade Asia Corporation
  Licensing
  2-31 Roppongi 3-chome, Minato-ku
  Tokyo 106, Japan

The following paragraph does not apply to the United Kingdom or any
other country where such provisions are inconsistent with local law:
INTERNATIONAL BUSINESS MACHINES CORPORATION PROVIDES THIS PUBLICATION
"AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Some states do not
allow disclaimer of express or implied warranties in certain transactions,
therefore, this statement may not apply to you.

This information could include technical inaccuracies or
typographical errors. Changes are periodically made to the information
herein; these changes will be incorporated in new editions of the
publication. IBM may make improvements and/or changes in the product(s)
and/or the program(s) described in this publication at any time without
notice.

Licensees of this program who wish to have information about it for
the purpose of enabling: (i) the exchange of information between
independently created programs and other programs (including this one)
and (ii) the mutual use of the information which has been exchanged,
should contact:

  IBM Deutschland
  Informationssysteme GmbH
  Department 3982
  Pascalstrasse 100
  70569 Stuttgart
  Germany

Such information may be available, subject to appropriate terms and
conditions, including in some cases, payment of a fee.

The licensed program described in this document and all licensed
material available for it are provided by IBM under terms of the
IBM Customer Agreement, IBM International Program License Agreement
or any equivalent agreement between us.

COPYRIGHT LICENSE:

This information contains sample application programs in source
language, which illustrates programming techniques on various
operating platforms. You may copy, modify, and distribute these
sample programs in any form without payment to IBM, for the purposes
of developing, using, marketing or distributing application programs
conforming to the application programming interface for the operating
platform for which the sample programs are written. These examples
have not been thoroughly tested under all conditions. IBM, therefore,
cannot guarantee or imply reliability, serviceability, or function of
these programs. You may copy, modify, and distribute these sample
programs in any form without payment to IBM for the purposes of
developing, using, marketing, or distributing application programs
conforming to IBM's application programming interfaces.

