Appendix A. Distributing Programs without Source

Open Object Rexx comes with a utility called RexxC. You can use this utility to produce versions of your programs that do not include the original program source. You can use these programs to replace any Rexx program file that includes the source, with the following restrictions:

  1. The SOURCELINE built-in function returns 0 for the number of lines in the program and raises an error for all attempts to retrieve a line.

  2. A sourceless program may not be traced. The TRACE instruction runs without error, but no tracing of instruction lines, expression results, or intermediate expression values occurs.

The syntax of the REXXC utility is:

>>-RexxC--inputfile--+------------+--+------+------------------><
                     +-outputfile-+  +- -s -+

If you specify the outputfile, the language processor processes the inputfile and writes the executable version of the program to the outputfile. If the outputfile already exists, it is replaced.

If the language processor detects a syntax error while processing the program, it reports the error and stops processing without creating a new output file. If you omit the outputfile, the language processor performs a syntax check on the program without writing the executable version to a file.

You can use the s option (/s on Windows and -s on unixes) to suppress the display of the information about the interpreter used.

Note: You can use the in-storage capabilities of the RexxStart programming interface to process the file image of the output file.

Due to changes in the 4.0 interpreter it is not possible for Rexx programs, tokenized with any previous version of ooRexx, to run under ooRexx 4.0.0. The programs will need to be re-tokenized with the 4.0.0 interpreter. The changes are such that the old tokenized form can not be changed to the new form. Therefore, no utility such as the old RxMigrate can be provided. Part of the purpose of the changes is to make this sitaution less likely to occur in the future.