There is a new update to BSF4ooRexx850, dated 850.20230621, which is expected to be complete and stable. So if you encounter any problems or bugs, then please supply an example program to show the problem and register it with the BSF4ooRexx bug tracker at <>.  Note, there is a new category "JDOR (Java2D for ooRexx)" in case you find a bug in the "Java2D for ooRexx" Rexx command handler.

A few hints regarding this version that you can get from <>:

 * JDOR (Java2D for ooRexx) is regarded to be completed and can be used in 
headless mode (without a
   GUI, i.e. the JDOR winShow command does not get used). The added support for 
   allows for constructive area geometry (CAG) operations. The documentation 
for JDOR can be found
   in "BSF4ooRexx850/information/jdor/ jdor_doc.html" (temporarily you may look 
up that
   documentation directly from 

 * There is a new class BSF.Clipboard that allows to exchange strings and 
images with the system
   clipboard using the Java infrastructure for it. As strings may be encoded in 
different codepages
   there is a codepage option in setString() and getString() that indicates the 
codepage encoding.
   Consult the new samples (look-up the brief descritpions by viewing

 * There is a new environment entry ".dev.null" which returns a "null device" 
stream object that
   can be used in redirection cases. E.g. using the curl command the result 
will be returned via
   stdin, however curl may write status information to stderr. If you want to 
inhibit the stderr
   output you can use .dev.null as the redirection target, e.g.:

   -- note: curl returns the result as an UTF-8 encoded string to stdout 
command="curl"; say "command to run :" pp(command) say 
".dev.null :"
   pp(.dev.null) say "about to run statement:" pp(sourceline(.line+1)) 
outArr=.array~new -- array
   for collecting curl's output to stdout ADDRESS SYSTEM command WITH OUTPUT 
   USING (.dev.null) curlResult=outArr~makeString -- turn array into a string SAY 
"result of curl
   command:" pp(curlResult) SAY "copying curl's returned UTF-8 string to the 
clipboard for others
   to use ..." .bsf.Clipboard~setString(curlResult,"UTF-8") -- string is UTF-8 
encoded ::requires
   "BSF.CLS" -- get bidirectional ooRexx-Java bridge

   Possible output:

   command to run : [curl] .dev.null : 
[The NullDevice]
   about to run statement: [outArr=.array~new -- array for collecting curl's 
output to stdout]
   result of curl command: [Vienna: +23°C ↓17km/h] copying curl's returned 
UTF-8 string to the
   clipboard for others to use ...

 * Ad edited/new samples to check out:

     o all samples that include the string "JDOR" allow for a trailing argument 
? (question mark)
       which will cause to display the processed JDOR commands in canonical 
form on stdout,

     o Clipboard related samples, demonstrating exchange of strings encoded in 
various codepages,
       strings with Unicode characters that do not exist in 8-bit codepages and 





           1-250_JDOR_to_clipboard.rxj ... called by the following programs


           1-250_swriter_bsf_clipboard.rxj ... OpenOffice/LibreOffice, all 


           1-250_windows_swriter_ole_clipboard.rxj ... OpenOffice/LibreOffice: 
Windows only


           1-250_windows_word_ole_clipboard.rxj ... MS Word: Windows only

At this time BSF4ooRexx850 is regarded to be feature complete. There are no known bugs such that this version may be released as "general available" in the near future.


On 12.06.2023 17:14, Rony G. Flatscher wrote:

There is another mostly JDOR-related update of BSF4ooRexx850 available in form of the installation zip-archive at <> (... cut ...).

It adds among other things the JDOR commands "clipboardGet", "clipboardSet" and "clipboardSetWithoutAlpha" to copy and paste images to/from the system clipboard. The documentation can be found at "BSF4ooRexx850 -> Information ", go into "jdor" and load "jdor_doc.html".


Also, BSF.CLS has a new ooRexx class named "BSF.Clipboard" that allows one to copy/paste images and strings to/from the system clipboard. Here a brief synopsis of its class methods:

  * isEmpty: returns .true if empty, .false else
  * clear: clears the clipboard
  * getDataFlavors: returns an array of DataFlavor objects each representing 
the type of data in
    the clipboard; send it the "toString" message to get a legible 
  * setString: sets the clipboard to the supplied string (note, you can set 
even Unicode from Rexx
    using the Java string object reference returned by the routine
  * getString: returns the string from the system clipboard rendered to the 
session's codepage; if
    you want to receive a specific encoding then supply as argument the 
codepage name, e.g.
    "UTF-8", "CP-437" (US codepage), "CP-850" (Western Europe) etc.
  * setImage: sets the clipboard to the supplied image (e.g. from JDOR)
  * setImageWithoutAlpha: makes sure that the image has no alpha (translucency) 
that gets set to
    the clipboard
  * getImage: returns the image from the clipboard


Here a sample Rexx program that uses OLE to create a Word document, types some text, then defines a Rexx string with UTF-8 encoded characters, types them via OLE, then creates a Java string object from it and uses that to store the string in the system clipboard, then pastes the content via OLE into Word, followed by a sequence of JDOR commands to create an image that is copied to the system clipboard and then gets pasted via OLE into the Word document. A PDF rendering of the generated Word document is enclosed, here is the code for producing that particular Word document with the new version of BSF4ooRexx850:

... cut ...

See the new samples (BSF4ooRexx850/samples/index.html).

Enclosed please find the created Word and its PDF rendering.


On 08.06.2023 20:19, Rony Flatscher wrote:
Dear fellow members,

since a few minutes there is a new installation zip-archive named "" uploaded to <> representing a new beta.

The major work in this version was in JDOR ("Java2D for ooRexx") which allows any Rexx programmer to create any kind of Java2D graphics using simple Rexx commands. This version concludes the JDOR work (other than bug fixes) which is regarded to be complete by now. To check out some of the latest features you may want to run the samples located in "BSF4ooRexx850/samples" and named "1-190_JDOR_shapes.rxj", "1-210_JDOR_area_cag.rxj" and "1-220_JDOR_area_cag.rxj" (for further information look-up the comment at the top of each program with links to the respective tutorials on Java2D).

For those unsure whether JDOR is something that you might want to look into, you may want to look up this short video about JDOR that I had to create for a different task lately: <>; and of course, all the "BSF4ooRexx850/samples" that contain the name "JDOR" (if you open "BSF4ooRexx850/samples/index.html" then you will get has brief descriptions of all of the BSF4ooRexx samples in that directory).

Also, a brief introduction to JDOR was given at the 2022 International Rexx symposium such that you may want to check out in the printed proceedings for that conference (e.g. via Amazon) or you may want to go to the RexxLA symposium page for 2022 and there into the schedule and look for "JDOR" to get at the slides.

Any feedback on JDOR welcome!

Oorexx-devel mailing list

Reply via email to