Having received error reports from users of BSF4ooRexx like

         2 *-* /**/@
    Error 13 running 
rexx_invoked_via_[fxml_01.fxml]_at_2020_08_05T12_33_24_17Z.rex line 2:  Invalid 
character in program.
    Error 13.1:  Incorrect character in program "@" ('40'X).

and looking up the execution paths in those cases, it turns out that the ooRexx 
.routine class gets
used to create the executable in those cases with a string array representing 
the compiled and
encoded Rexx program.

So the "new" method of the .routine class gets the compiled and encoded source 
supplied as an array
of strings, e.g.:

    #!/usr/bin/env rexx
    /**/@REXX@
    LyoqL0BSRVhYAAAAAAAAAGcrKgAgAAAAVOwAAAAAAABwEgAAVPq7VhgAAAACAAAAAAAAAAAA
    AAAAAAAAgB68ViAAAAACAAAAKAAAAAAAAABwAAAAOAAAAAAAAADkSrxWOAAAAAIAAAAFAACA
    ... cut ...

Supplying the compiled and encoded data as a single string to the .routine 
class does not work as
this issues the error "13.1, Invalid character in program" caused by the 
presence of a LF ('0A'x)
character, here a rexxtry example:

    infile=.stream~new("nutshell_01.rex-compiled")~~open("read")
      ........................................... rexxtry.rex on WindowsNT
    pgm=infile~charin(infile~chars)
      ........................................... rexxtry.rex on WindowsNT
    infile~close
      ........................................... rexxtry.rex on WindowsNT
    r1=.routine~new("aha",pgm)
      Oooops ! ... try again.     Invalid character in program.
                                  Incorrect character in program "
    " ('0A'X).
      rc = 13.1 ................................. rexxtry.rex on WindowsNT

As a compiled and encoded form of a Rexx program always has the string 
"/**/@REXX@" as the value for
its second line it would be possible to determine that the String array comes 
from a compiled and
encoded Rexx program. Rather than creating an error in this case, the routine 
object could get
created successfully from the String array representing a compiled and encoded 
Rexx program.

Are there any objections to try to enhance the "new" method of the .routine 
(and the .method) class
such that the string array can represent a compiled and encoded Rexx program?

---rony


_______________________________________________
Oorexx-devel mailing list
Oorexx-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/oorexx-devel

Reply via email to