View previous topic :: View next topic
|
Author |
Message |
geelapidus
New User
Joined: 16 Dec 2020 Posts: 4 Location: Israel
|
|
|
|
I am glad to introduce a new Open Source REXX framework,
SummeRx version 2.01 for REXX on z/OS.
SummeRx Features:
- Allowing modularity in REXX.
- Sharing stems between external modules.
- Adding elements of object oriented programming to REXX.
- And much more...
SummeRx is fully written in REXX.
There is a SummeRx White Paper on the github repository
https://github.com/geelapidus/SummeRx
Please let me know your thoughts and suggestions.
Please share this post with other REXX programmers.
Thanks,
Gennady Lapidus |
|
Back to top |
|
|
enrico-sorichetti
Superior Member
Joined: 14 Mar 2007 Posts: 10873 Location: italy
|
|
|
|
from the docs
Quote: |
Rexx + java + Linux. Future development. |
no need
open object rexx is alive and kicking on macOS Linux( various flavours and architectures )
and on the BSD family
same thing as far as java is concerned, BSF4ooRexx is very healthy |
|
Back to top |
|
|
Willy Jensen
Active Member
Joined: 01 Sep 2015 Posts: 712 Location: Denmark
|
|
|
|
I read the documentation. I fully agree that PIPEs should be a standard feature of TSO REXX. I also would love to see something like your function, but as as a part of the standard REXX load process.
Correct me if I am wrong, but I read it as basically copy books with another name? In that case wouldn't a REXX compile provide the same functionality, though that of course require that you have the REXX compiler.
I must admit that I am not so keen on the need for ISPF services.
You do what amounts to a compile where you include all external routines and build one large program. Which is why you can pass stems, actually all variables, between routines, as long as these are not procedures?
If your aim is mostly to be able to pass variables between functions then there are other options: I seem to recall a STEMPUT/GET program, but I cannot remember where, but program REXXGBLV from cbttape.org file 669 can store and load REXX variables across external functions.
I can see that your solution could find it's place in a structured environment, especially if you provide a couple of generally usabel subfunctions. |
|
Back to top |
|
|
geelapidus
New User
Joined: 16 Dec 2020 Posts: 4 Location: Israel
|
|
|
|
Thank you for your interest in SummeRx. Below are my answers and comments.
Copy books vs. injection.
The directive ++INC in SummeRx is similar to %INCLUDE of the REXX compiler. There are still some advantages over the standard approach. SummeRx allows you to use a variable in ++INC directive. This is very useful if, for example, you decide to change the data source in the SummeRx provider-consumer scheme.
Suppose a subroutine needs to access a routine variable from a higher layer. The standard way in REXX is to use parameters or the EXPOSE clause. SummeRx can inject the value of a variable into a “deep level” routine during the preprocessing, providing the REXX program with GLOBAL VARS.
Methods to pass stems
Using Assembler is always a good option, especially if you have a structured (formatted) stem, i.e. the stem structure is somehow defined within the stem or known to Assembler. Thus, you can share the stem between the REXX modules. SummeRx is written in pure REXX. It uses its own method of serializing/deserializing stems between external modules, or, as you addressed in your comments, passing stems through the EXPOSE clause in one large program. By the way, I usually do not keep a raw REXX code in “copy books”. I always try to follow a “modular” approach, i.e. using “copy books” for REXX subroutines.
OOP and the aim
SummeRx offers HEAP which is a sophisticated stem for exchanging data such as linked lists, maps, objects, etc. SummeRx handles HEAP with its own Garbage Collector. Using HEAP makes writing in REXX easy.
SummeRx uses both TSO and ISPF services and can equally work in either BATCH or ONLINE.
I believe that diversified z/OS environments such as USS, Docker, Git and AWS need a lot of new APIs. SummeRx could be a suitable platform for this. |
|
Back to top |
|
|
Willy Jensen
Active Member
Joined: 01 Sep 2015 Posts: 712 Location: Denmark
|
|
|
|
Thanks you for the clarification. As you say, SummeRx offer a way to handle common subroutines without having to include them permantly in the main program. |
|
Back to top |
|
|
geelapidus
New User
Joined: 16 Dec 2020 Posts: 4 Location: Israel
|
|
|
|
enrico-sorichetti wrote: |
from the docs
Quote: |
Rexx + java + Linux. Future development. |
no need
open object rexx is alive and kicking on macOS Linux( various flavours and architectures )
and on the BSD family
same thing as far as java is concerned, BSF4ooRexx is very healthy |
Suppose you need to synchronize/exchange messages between a REXX program in z/OS and a Linux Container application over SSH or in just Linux outside MF . OOREXX is not always an option. Java@MF + Python@Linux provide a functional secure channel with callbacks. I developed such a channel 3 years ago, so I'm sure of it. Or another example. You have a minimal Linux installation where SSH and Python are only the options. How do you manage it from z/OS ? Java@MF + Python@Linux is a good agentless solution. |
|
Back to top |
|
|
geelapidus
New User
Joined: 16 Dec 2020 Posts: 4 Location: Israel
|
|
|
|
Willy Jensen wrote: |
Thanks you for the clarification. As you say, SummeRx offer a way to handle common subroutines without having to include them permantly in the main program. |
Correct |
|
Back to top |
|
|
|