On 03.01.2022 17:35, Bob Bridges wrote:
> I've mentioned before on this forum that once I got the hang of
> object-oriented programming (in VBA, that was) and heard about ooREXX, I
> lusted after it, but resisted the temptation because I could see no way I
> could use it for my client's work. My job has a lot to do with extracting
> data for my clients, but I also write tools for their people to use to get
> the same data time after time, and really I ought to do that in a language
> that a) someone there can maintain after I leave, and of course b) doesn't
> have to be downloaded especially for the purpose. The languages that are
> available more or less universally are my palette, in other words, when
> working for my clients. In Windows that's VBA and VBS, .bat, and I'm sure
> I'll add Jscript to my repertoire eventually; on the mainframe it's REXX,
> maybe CLIST, JCL, and if I need a compiled language PL/1 or COBOL.
>
> I eventually broke down and installed ooREXX on my own PC for a particular
> task that just wasn't working in VBA -- I was trying to parse a text file and
> generate an medium-complex .rtf document from it -- but I still feel I
> shouldn't put such things on a client machine.
An American friend of mine has been a manager of beach clubs (each with appr.
7,000 members). They
started out with an IBM 5110/5120 system in 1980 (Basic/APL, two 8'' diskette
drives) and over the
course of time used the CORE International PC51 emulation for IBM Intel PCs in
the middle/end of the
90's. In 1999 I used Object REXX for Windows to create a little utility to
allow a file system
viewer which also allowed to inspect and exchange the PC51 files (stored in DOS
files) which meant
among other things translations between EBCDIC and ASCII, conversion of Binary,
NC and PD datatypes
to decimal in either direction. Just looked up that particular Object REXX
code, here a snippet from
it for amusement:
... cut ...
::ROUTINE pd2dec PUBLIC /* packed decimal to decimal */
parse arg pd, format, bStripLead0
return ibm_num2dec( pd, format, 'PD', bStripLead0)
::ROUTINE ibm_num2dec /* the conversion for PD and NC */
parse arg ibm_num, format, type, bStrip
bStrip = \(bStrip = .false) /* if .false as argument then do
not strip leading 0 */
if type = 'PD' then
do
dec = c2x( ibm_num )
sign= translate(right(dec,1), "+-++-", "CDAEB")
IF (pos(right(dec, 1), "CDAEB") > 0) THEN
sign=translate(right(dec,1), "+-++-", "CDAEB")
ELSE sign=""
dec = left(dec, length(dec)-1) /* number of digits */
end
else
... cut ...
They had no clues what REXX or Object REXX was, they just accepted my solution
and had used it for
quite a few years.
Later (around 2002) when they had their M&A app rewritten to MS Access I helped
them with the gate
entry program which was written in Object REXX on the gate PCs communicating
with an Object REXX
server program on the Windows server machines that interacted with MS Access.
Again, they did not
care about the software infrastructure at hand, they only cared whether they
could use it safely
without problems, especially on weekends when they need to be able to handle
thousands of beach club
members entering thru one of their gates.
Believe it or not, they have been using that system to this very day, the gate
server interface is
Object REXX (since the open sourcing they get to use ooRexx). The client got
changed to JavaFX
(almost ten years ago and never needed a change since then either) which
communicates via sockets
with the ooRexx server that still interfaces with MS Access (and makes sure
that the MS Access
database files get "compressed & repaired" on a regular basis sometimes in the
morning when everyone
sleeps to keep them up, running and healthy).
Again, they have not cared about the technology mix in use, they were
interested in a solution that
works without problems. From my point of view, the ooRexx code (the fastest way
to create a solution
from scratch to help them solve the problem) would be maintainable by third
parties, either
programmers who know how to code in REXX already or programmers who would have
to learn REXX, which
is easy (and the few ooRexx extensions to REXX that get exploited like the
ability to define public
routines that can be directly called from any other Rexx program as seen in the
above code snippet).
---
In the meantime, with ooRexx 5.0, it has become possible to use ooRexx without
a need to install it
into a system and if needed, allow even different ooRexx interpreters running
in parallel, e.g. a
32-bit and a 64-bit, without interfering with each other (this is something
that might be needed on
Windows, if programming with ooRexx 32-bit installations of MS-Office, but also
programming with
ooRexx 64-bit Windows applications). Another scenario is to test new versions
of ooRexx 5.0 without
a need to uninstall a currently installed (older) ooRexx 5.0 (the official
ooRexx site has
installers for ooRexx for the different operating system platforms).
Using this feature I experimented creating portable ooRexx interpreters for my
students, such that
they can get to run ooRexx without a need to install. If interested/curious you
could download this
portable ooRexx 5.0 for Windows in 32- and 64-bit as well as 64-bit for Linux
and (universal/fat)
MacOS temporarily from my dropbox link:
<https://www.dropbox.com/sh/n65twckpkixl9gm/AADrnjgHAqiWQQU17GjGrtpna?dl=0> (I
store it on an USB
stick and can run ooRexx off the stick, c.f. "readme.txt" after unzipping it):
06.12.2021 17:13 1 833 355
ooRexx-5.0.0-darwin64-r12337-universal-portable-release-runtime.zip
06.12.2021 17:13 11 446 419
ooRexx-5.0.0-darwin64-r12337-universal-portable-release.zip
06.12.2021 17:01 1 419 744
ooRexx-5.0.0-linux64-r12337-x86_64-portable-release-runtime.zip
06.12.2021 17:01 11 022 325
ooRexx-5.0.0-linux64-r12337-x86_64-portable-release.zip
06.12.2021 14:27 1 438 926
ooRexx-5.0.0-win32-r12337-x86_32-portable-release-runtime.zip
06.12.2021 14:27 21 010 496
ooRexx-5.0.0-win32-r12337-x86_32-portable-release.zip
06.12.2021 14:46 1 635 798
ooRexx-5.0.0-win64-r12337-x86_64-portable-release-runtime.zip
06.12.2021 14:46 21 211 652
ooRexx-5.0.0-win64-r12337-x86_64-portable-release.zip
Note: the zip archives labeled with"runtime" do not contain samples and
documentation.
> And I've never heard about ooREXX being available on z/OS. How do you manage
> that? Color me interested.
Best to give you the links for the tutorial (using ooRexx on the mainframe to
interface with DB2)
written by Paul Dunkley:
* either:
<https://sourceforge.net/p/bsf4oorexx/mailman/search/?q=jdbc+tutorial&limit=250>
* or directly:
o Part 1: <https://sourceforge.net/p/bsf4oorexx/mailman/message/35565829/>
o Part 2: <https://sourceforge.net/p/bsf4oorexx/mailman/message/35773359/>
o Part 3: <https://sourceforge.net/p/bsf4oorexx/mailman/message/35894589/>
o Part 4: <https://sourceforge.net/p/bsf4oorexx/mailman/message/35966208/>
o Part, Interim Note:
<https://sourceforge.net/p/bsf4oorexx/mailman/message/36164161/>
o Part 5: <https://sourceforge.net/p/bsf4oorexx/mailman/message/36183882/>
HTH,
---rony
> /* The early bird may get the worm, but the second mouse gets the cheese. */
>
> -----Original Message-----
> From: IBM Mainframe Discussion List <[email protected]> On Behalf Of
> Rony G. Flatscher
> Sent: Monday, January 3, 2022 09:02
>
> My name is Rony G. Flatscher and I have been working as an IS professor at a
> European Business university (WU Vienna) who has acquired quite a bit of
> experience in teaching BA students programming for the past 35 years. Over
> the course of the years I taught e.g. COBOL, BASIC, Pascal, Open Access
> Programmer, C/C++, VBS (Visual Basic), VBA (Visual Basic for Applications),
> Java, and tested one semester REXX with a very surprising effect: the BA
> students can learn programming much faster in REXX than in any other
> programming language (including Python taught by colleagues)!
>
> The secret lies in employing Object REXX for teaching as it includes
> structures/types and the powerful message paradigm in addition to all of the
> classic REXX capabilities. In a four hour lecture these BA students (some
> total newbies, some already with programming skills) learn REXX and then the
> object oriented concepts/features of Object REXX in a single semester (four
> months).
>
> In the middle of the semester (after two months), they not only are able to
> create simple programs in REXX and Object REXX, but taking advantage of the
> COM/OLE library on Windows that comes with the Windows version of Object
> REXX. This empowers them to interface/program the Windows shell and any
> Windows application with an OLE interface including all of MS Office using
> Object REXX only! It is impressive to see how quickly they become empowered
> to exploit MS Excel or MS Word for their needs with Object REXX!
>
> At the end of the semester (after another two months), using an Object REXX
> library that makes accessing Java possible from Object REXX, these very same
> BA (business administration) students have been empowered writing Object REXX
> programs to create GUIs (graphical user interface programs using awt, swing
> and later JavaFX), create client-server socket programs (including SSL/TLS),
> parse XML text files with SAX and DOM, interface/program Apache OpenOffice
> and LibreOffice all with Object REXX only.
>
> And the best about this is, because of using Java class libraries from Object
> REXX, there is no need to a) learn the Java programming language oneself and
> b) all Object REXX programs run unchanged on Windows, Linux and MacOS
> including GUI Object REXX programs!
>
> To get so far in teaching programming skills at a Business university in a
> single semester (only a four hour lecture) has become possible with Object
> REXX, it would not be possible with any other programming language I know of
> for reasons, that have mostly to do with the "human oriented" philosophy of
> the REXX programming language (set forth by its father Mike F. Cowlishaw)
> which also has been an important guiding principle when IBM developed Object
> REXX. This translates into becoming able to quickly learn the programming
> language Object REXX which also means that it is a rather cheap (cost
> effective) to learn programming language compared to learning many other
> programming languages!
>
> IBM and the REXX Language assocation (https://www.rexxla.org) entered into
> successful negotiations to hand over the source code of the IBM product
> Object REXX and since about 15 years there is an "open object Rexx (ooRexx,
> oorexx)" interpreter with source code that has been constantly maintained,
> developed further and that gets released by RexxLA.
>
> There have been also IBM mainframe shops that have started to use ooRexx on
> mainframes in the meantime.
>
> The purpose of this message is to draw your attention to a great REXX
> programming language, originally developed by IBM, open sourced by RexxLA,
> and as a result available for all important operating systems. ooRexx can be
> a great "SAK" (swiss army knife) tool for any REXX programmer! (ooRexx can
> run rings around many other programming languages including Python.)
>
> But before being able to take advantage of ooRexx at all one needs to learn
> about its existence in the first place, hence this post. Here are two short
> articles which you might find helpful in this context (download link at the
> top left hand corner):
>
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN