Re: Rexx command handlers implemented in Java and in ooRexx (Re: Rexx is quite cool, flexible, powerful, feature-rich, thank you! (Re: z/OS 3.1 Enhancements & Support News

2024-07-02 Thread Seymour J Metz
See "External functions and subroutines, and function packages" and "Chapter 
15. Initialization and termination routines" in TSO/E REXX Reference, SA32-0972.

Basically, when an application calls IRXINIT, it can define a bunch of 
functions handled by the application. While details vary, the same 
functionality exists in ooRexx.

Of course, ooRexx has the additional option of a ::REQUIRES directive 
specifying a package containing multiple ::ROUTINE directives.

--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3
עַם יִשְׂרָאֵל חַי
נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר


From: IBM Mainframe Discussion List  on behalf of 
Rony G. Flatscher 
Sent: Tuesday, July 2, 2024 10:11 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Rexx command handlers implemented in Java and in ooRexx (Re: Rexx 
is quite cool, flexible, powerful, feature-rich, thank you! (Re: z/OS 3.1 
Enhancements & Support News

On 02.07.2024 15:08, Seymour J Metz wrote:
> What about function packages?

What are you thinking about?

---rony

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Rexx command handlers implemented in Java and in ooRexx (Re: Rexx is quite cool, flexible, powerful, feature-rich, thank you! (Re: z/OS 3.1 Enhancements & Support News

2024-07-02 Thread Rony G. Flatscher

On 02.07.2024 16:04, Paul Gilmartin wrote:

On Tue, 2 Jul 2024 13:02:50 +0200, Rony G. Flatscher wrote:


On 02.07.2024 12:58, Rony G. Flatscher wrote:

Prolog: it seems that the mailer has distorted the code and made it illegible, 
hence resending the
mail, now with the code preformatted in the hope that than the mailer does not 
reflow the code.
Sorry about this inconvenience. ---rony

Well, unfortunately that did not solve the problem. :(


Post via the web interface.


Do you have a direct URL by any chance?

Otherwise, I supplied a direct download link to the zip-archive, so anyone can get at it in a minute 
after unzipping it.


Unblocking on Windows is done via the property menu of the file (right mouse-click on the file in 
explorer, pick properties, check the unblock checkbox and click apply; from the commandline you can 
use powershell's Unblock-File fn). Unblocking on MacOS involves removing the extended attributes 
Apple adds when downloading files from the Internet, there xattr is your friend to get to see and to 
delete them.


In case you are on the RexxLA mailing list then you can get the oorexx-packages bundle with the 
supplied URL as communicated by e-mail, it includes ooRexx, Jean Louis Faucher's powerfull 
oorexxshell and among other packages also the ooRexx Java bindings with its documentation and all 
its samples (there is a new bundle in the works that will have NetRexx on board and a new 
Rexx/ooRexx GUI debugger taking advantage of the Java bindings and Java's awt/swing if running on 
non-Windows systems).So you can get at the Java and ooRexx sample that demonstrate how easy it is 
actually creating Rexx command handlers for ooRexx.



In case anyone wants to see the code in a legible form, download the zip-archive
<https://sourceforge.net/projects/bsf4oorexx/files/GA/BSF4ooRexx-850.20240304-GA/BSF4ooRexx_install_v850-20240620-refresh.zip/download>,
unblock and unzip it. Then go into the subdirectory
 for the 
Java version and to
 
for the ooRexx version.


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Rexx command handlers implemented in Java and in ooRexx (Re: Rexx is quite cool, flexible, powerful, feature-rich, thank you! (Re: z/OS 3.1 Enhancements & Support News

2024-07-02 Thread Rony G. Flatscher

On 02.07.2024 15:08, Seymour J Metz wrote:

What about function packages?


What are you thinking about?

---rony

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Rexx command handlers implemented in Java and in ooRexx (Re: Rexx is quite cool, flexible, powerful, feature-rich, thank you! (Re: z/OS 3.1 Enhancements & Support News

2024-07-02 Thread Paul Gilmartin
On Tue, 2 Jul 2024 13:02:50 +0200, Rony G. Flatscher wrote:

>On 02.07.2024 12:58, Rony G. Flatscher wrote:
>> Prolog: it seems that the mailer has distorted the code and made it 
>> illegible, hence resending the
>> mail, now with the code preformatted in the hope that than the mailer does 
>> not reflow the code.
>> Sorry about this inconvenience. ---rony
>
>Well, unfortunately that did not solve the problem. :(
>
Post via the web interface.

>In case anyone wants to see the code in a legible form, download the 
>zip-archive
><https://sourceforge.net/projects/bsf4oorexx/files/GA/BSF4ooRexx-850.20240304-GA/BSF4ooRexx_install_v850-20240620-refresh.zip/download>,
>unblock and unzip it. Then go into the subdirectory
> for the 
>Java version and to
>
> for the ooRexx version.

-- 
gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Rexx command handlers implemented in Java and in ooRexx (Re: Rexx is quite cool, flexible, powerful, feature-rich, thank you! (Re: z/OS 3.1 Enhancements & Support News

2024-07-02 Thread Seymour J Metz
What about function packages?

--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3
עַם יִשְׂרָאֵל חַי
נֵ֣צַח יִשְׂרָאֵ֔ל לֹ֥א יְשַׁקֵּ֖ר


From: IBM Mainframe Discussion List  on behalf of 
Rony G. Flatscher 
Sent: Tuesday, July 2, 2024 6:34 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Rexx command handlers implemented in Java and in ooRexx (Re: Rexx is 
quite cool, flexible, powerful, feature-rich, thank you! (Re: z/OS 3.1 
Enhancements & Support News

On 01.07.2024 20:45, Phil Smith III wrote:
> Paul Gilmartin wrote:
>> Lack of closure: I don't believe a function package, much less a
>> command environment can be coded in REXX. those must be coded in
>> another language, therefore less portable.
> Well, that's a good point. OORexx makes that somewhat better, but not like 
> P/P. But I could imagine writing an interface to enable this. The tricky part 
> with Classic Rexx would be variable passing, but Pipes demonstrates that it's 
> quite doable. I think it'd be easier with OORexx, no?

You can implement Rexx command handlers for ooRexx e.g. in C, C++, Java and ... 
ooRexx.

The Java bindings for ooRexx has a sample demonstrating how to do that in 
ooRexx only, see
"samples\Java\handlers\commandHandlers\30_java_starter850\rexxonly". This is 
what index.html in that
directory says about this sample:

RunRexxProgram.rex
An ooRexx program that configures another Rexx interpreter to use its 
two command handlers
named |ONE| and |DEUX| for the Rexx program it runs.

The companion Rexx program sending commands to the command handlers is:
testPreconfiguredCommandHandlers.rex. The two preconfigured command 
handlers understand the
following commands:

  * HELLO
  * INFO
  * PING

To run enter the following command on the command line:

 rexx RunRexxProgram testPreconfiguredCommandHandlers.rex

In case anyone is curious how such an ooRexx implemented command handler looks 
like that also takes
advantage of ooRexx features like creating multiple Rexx interpreter instances 
that can be
differently configured and define two different command handlers (that for 
demonstration purposes do
the same but can be addressed independently of each other and in parallel) in 
ooRexx:

parse arg rexxProgram if rexxProgram="" then do say "You must supply the 
name of a Rexx program
to run." exit -1 end mgr = .bsf~new("org.apache.bsf.BSFManager") re =
mgr~loadScriptingEngine("rexx") rexxconf = re~getRexxConfiguration say 
"default
rexxconf="pp(rexxconf~toString) rhOne = .OneCommandHandler~new jhOne = 
BsfCreateRexxProxy(rhOne,
, "org.rexxla.bsf.engines.rexx.AbstractDirectCommandHandler") 
rexxconf~addCommandHandler("ONE",
jhOne) rhDeux = .DeuxCommandHandler~new jhDeux = BsfCreateRexxProxy(rhDeux, 
,
"org.rexxla.bsf.engines.rexx.AbstractRedirectingCommandHandler")
rexxconf~addCommandHandler("DEUX", jhDeux) 
rexxconf~setInitialAddressEnvironment("ONE"); say say
"after configuration:" say "edited rexxconf="pp(rexxconf~toString) say "now 
running the Rexx
    program you supplied in file """rexxProgram""":" -- Rexx code to run 
rexxCode= "call
"""rexxProgram""" ;" - "::requires BSF.CLS ;" -- get ooRexx support 
(camouflage Java as ooRexx)
say "rexxCode="pp(rexxCode) signal on syntax -- invoke the interpreter and 
call the Rexx program
in the supplied file name re~apply(rexxProgram, 0, 0, rexxCode, .nil, .nil) 
mgr~terminate --
make sure that the Rexx interpreter instance gets terminated! exit syntax: 
co=condition('o') say
ppJavaExceptionChain(co,.true) say "---" raise propagate ::requires BSF.CLS 
-- get ooRexx
support (camouflage Java as ooRexx) ::class OneCommandHandler ::method 
handleCommand use arg
slot, address, command, slotDir say "[OneCommandHandler] 
address="pp(address)
"command="pp(command) parse upper var command cmd . -- carrying out 
received commands, return
values set the RC variable in Rexx select case cmd when "HELLO" then return 
"Hello, ooRexx! This
is your Rexx (!) OneCommandHandler greeting you!" when "INFO" then return
slotDir~javaObject~toString(slot,address) when "PING" then return "Pong!" 
otherwise -- unknown
command received create a failure jarr = 
bsf.createJavaArrayOf("java.lang.String", "Unknown
command" pp(command) ) slotDir~javaObject~raiseCondition(slot, "Failure", 
command, jarr, "-1")
return .nil end ::class DeuxCommandHandler ::method handleCommand use arg 
slot, address,
command, slotD

Re: Rexx command handlers implemented in Java and in ooRexx (Re: Rexx is quite cool, flexible, powerful, feature-rich, thank you! (Re: z/OS 3.1 Enhancements & Support News

2024-07-02 Thread Rony G. Flatscher

On 02.07.2024 12:58, Rony G. Flatscher wrote:
Prolog: it seems that the mailer has distorted the code and made it illegible, hence resending the 
mail, now with the code preformatted in the hope that than the mailer does not reflow the code. 
Sorry about this inconvenience. ---rony


Well, unfortunately that did not solve the problem. :(

In case anyone wants to see the code in a legible form, download the zip-archive 
<https://sourceforge.net/projects/bsf4oorexx/files/GA/BSF4ooRexx-850.20240304-GA/BSF4ooRexx_install_v850-20240620-refresh.zip/download>, 
unblock and unzip it. Then go into the subdirectory 
 for the Java version and to 
 for the ooRexx version.


---rony

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Rexx command handlers implemented in Java and in ooRexx (Re: Rexx is quite cool, flexible, powerful, feature-rich, thank you! (Re: z/OS 3.1 Enhancements & Support News

2024-07-02 Thread Rony G. Flatscher
Prolog: it seems that the mailer has distorted the code and made it illegible, hence resending the 
mail, now with the code preformatted in the hope that than the mailer does not reflow the code. 
Sorry about this inconvenience. ---rony


On 01.07.2024 20:45, Phil Smith III wrote:

Paul Gilmartin wrote:

Lack of closure: I don't believe a function package, much less a
command environment can be coded in REXX. those must be coded in
another language, therefore less portable.

Well, that's a good point. OORexx makes that somewhat better, but not like P/P. 
But I could imagine writing an interface to enable this. The tricky part with 
Classic Rexx would be variable passing, but Pipes demonstrates that it's quite 
doable. I think it'd be easier with OORexx, no?


You can implement Rexx command handlers for ooRexx e.g. in C, C++, Java and ... 
ooRexx.

The Java bindings for ooRexx has a sample demonstrating how to do that in ooRexx only, see 
"samples\Java\handlers\commandHandlers\30_java_starter850\rexxonly". This is what index.html in that 
directory says about this sample:


   RunRexxProgram.rex
   An ooRexx program that configures another Rexx interpreter to use its 
two command handlers
   named |ONE| and |DEUX| for the Rexx program it runs.

   The companion Rexx program sending commands to the command handlers is:
   testPreconfiguredCommandHandlers.rex. The two preconfigured command 
handlers understand the
   following commands:

 * HELLO
 * INFO
 * PING

   To run enter the following command on the command line:

rexx RunRexxProgram testPreconfiguredCommandHandlers.rex

In case anyone is curious how such an ooRexx implemented command handler looks like that also takes 
advantage of ooRexx features like creating multiple Rexx interpreter instances that can be 
differently configured and define two different command handlers (that for demonstration purposes do 
the same but can be addressed independently of each other and in parallel) in ooRexx:


   parse arg rexxProgram if rexxProgram="" then do say "You must supply the 
name of a Rexx program
   to run." exit -1 end mgr = .bsf~new("org.apache.bsf.BSFManager") re =
   mgr~loadScriptingEngine("rexx") rexxconf = re~getRexxConfiguration say 
"default
   rexxconf="pp(rexxconf~toString) rhOne = .OneCommandHandler~new jhOne = 
BsfCreateRexxProxy(rhOne,
   , "org.rexxla.bsf.engines.rexx.AbstractDirectCommandHandler") 
rexxconf~addCommandHandler("ONE",
   jhOne) rhDeux = .DeuxCommandHandler~new jhDeux = BsfCreateRexxProxy(rhDeux, ,
   "org.rexxla.bsf.engines.rexx.AbstractRedirectingCommandHandler")
   rexxconf~addCommandHandler("DEUX", jhDeux) 
rexxconf~setInitialAddressEnvironment("ONE"); say say
   "after configuration:" say "edited rexxconf="pp(rexxconf~toString) say "now 
running the Rexx
   program you supplied in file """rexxProgram""":" -- Rexx code to run rexxCode= 
"call
   """rexxProgram""" ;" - "::requires BSF.CLS ;" -- get ooRexx support 
(camouflage Java as ooRexx)
   say "rexxCode="pp(rexxCode) signal on syntax -- invoke the interpreter and 
call the Rexx program
   in the supplied file name re~apply(rexxProgram, 0, 0, rexxCode, .nil, .nil) 
mgr~terminate --
   make sure that the Rexx interpreter instance gets terminated! exit syntax: 
co=condition('o') say
   ppJavaExceptionChain(co,.true) say "---" raise propagate ::requires BSF.CLS 
-- get ooRexx
   support (camouflage Java as ooRexx) ::class OneCommandHandler ::method 
handleCommand use arg
   slot, address, command, slotDir say "[OneCommandHandler] address="pp(address)
   "command="pp(command) parse upper var command cmd . -- carrying out received 
commands, return
   values set the RC variable in Rexx select case cmd when "HELLO" then return 
"Hello, ooRexx! This
   is your Rexx (!) OneCommandHandler greeting you!" when "INFO" then return
   slotDir~javaObject~toString(slot,address) when "PING" then return "Pong!" 
otherwise -- unknown
   command received create a failure jarr = 
bsf.createJavaArrayOf("java.lang.String", "Unknown
   command" pp(command) ) slotDir~javaObject~raiseCondition(slot, "Failure", command, 
jarr, "-1")
   return .nil end ::class DeuxCommandHandler ::method handleCommand use arg 
slot, address,
   command, slotDir say "[DeuxCommandHandler] address="pp(address) 
"command="pp(command) parse
   upper var command cmd . -- carrying out received commands, return values set 
the RC variable in
   Rexx select case cmd when "HELLO" then return "Hello, ooRexx! This is your 
Rexx (!)
   DeuxCommandHandler greeting you!" w

Rexx command handlers implemented in Java and in ooRexx (Re: Rexx is quite cool, flexible, powerful, feature-rich, thank you! (Re: z/OS 3.1 Enhancements & Support News

2024-07-02 Thread Rony G. Flatscher

On 01.07.2024 20:45, Phil Smith III wrote:

Paul Gilmartin wrote:

Lack of closure: I don't believe a function package, much less a
command environment can be coded in REXX. those must be coded in
another language, therefore less portable.

Well, that's a good point. OORexx makes that somewhat better, but not like P/P. 
But I could imagine writing an interface to enable this. The tricky part with 
Classic Rexx would be variable passing, but Pipes demonstrates that it's quite 
doable. I think it'd be easier with OORexx, no?


You can implement Rexx command handlers for ooRexx e.g. in C, C++, Java and ... 
ooRexx.

The Java bindings for ooRexx has a sample demonstrating how to do that in ooRexx only, see 
"samples\Java\handlers\commandHandlers\30_java_starter850\rexxonly". This is what index.html in that 
directory says about this sample:


   RunRexxProgram.rex
   An ooRexx program that configures another Rexx interpreter to use its 
two command handlers
   named |ONE| and |DEUX| for the Rexx program it runs.

   The companion Rexx program sending commands to the command handlers is:
   testPreconfiguredCommandHandlers.rex. The two preconfigured command 
handlers understand the
   following commands:

 * HELLO
 * INFO
 * PING

   To run enter the following command on the command line:

rexx RunRexxProgram testPreconfiguredCommandHandlers.rex

In case anyone is curious how such an ooRexx implemented command handler looks like that also takes 
advantage of ooRexx features like creating multiple Rexx interpreter instances that can be 
differently configured and define two different command handlers (that for demonstration purposes do 
the same but can be addressed independently of each other and in parallel) in ooRexx:


   parse arg rexxProgram if rexxProgram="" then do say "You must supply the 
name of a Rexx program
   to run." exit -1 end mgr = .bsf~new("org.apache.bsf.BSFManager") re =
   mgr~loadScriptingEngine("rexx") rexxconf = re~getRexxConfiguration say 
"default
   rexxconf="pp(rexxconf~toString) rhOne = .OneCommandHandler~new jhOne = 
BsfCreateRexxProxy(rhOne,
   , "org.rexxla.bsf.engines.rexx.AbstractDirectCommandHandler") 
rexxconf~addCommandHandler("ONE",
   jhOne) rhDeux = .DeuxCommandHandler~new jhDeux = BsfCreateRexxProxy(rhDeux, ,
   "org.rexxla.bsf.engines.rexx.AbstractRedirectingCommandHandler")
   rexxconf~addCommandHandler("DEUX", jhDeux) 
rexxconf~setInitialAddressEnvironment("ONE"); say say
   "after configuration:" say "edited rexxconf="pp(rexxconf~toString) say "now 
running the Rexx
   program you supplied in file """rexxProgram""":" -- Rexx code to run rexxCode= 
"call
   """rexxProgram""" ;" - "::requires BSF.CLS ;" -- get ooRexx support 
(camouflage Java as ooRexx)
   say "rexxCode="pp(rexxCode) signal on syntax -- invoke the interpreter and 
call the Rexx program
   in the supplied file name re~apply(rexxProgram, 0, 0, rexxCode, .nil, .nil) 
mgr~terminate --
   make sure that the Rexx interpreter instance gets terminated! exit syntax: 
co=condition('o') say
   ppJavaExceptionChain(co,.true) say "---" raise propagate ::requires BSF.CLS 
-- get ooRexx
   support (camouflage Java as ooRexx) ::class OneCommandHandler ::method 
handleCommand use arg
   slot, address, command, slotDir say "[OneCommandHandler] address="pp(address)
   "command="pp(command) parse upper var command cmd . -- carrying out received 
commands, return
   values set the RC variable in Rexx select case cmd when "HELLO" then return 
"Hello, ooRexx! This
   is your Rexx (!) OneCommandHandler greeting you!" when "INFO" then return
   slotDir~javaObject~toString(slot,address) when "PING" then return "Pong!" 
otherwise -- unknown
   command received create a failure jarr = 
bsf.createJavaArrayOf("java.lang.String", "Unknown
   command" pp(command) ) slotDir~javaObject~raiseCondition(slot, "Failure", command, 
jarr, "-1")
   return .nil end ::class DeuxCommandHandler ::method handleCommand use arg 
slot, address,
   command, slotDir say "[DeuxCommandHandler] address="pp(address) 
"command="pp(command) parse
   upper var command cmd . -- carrying out received commands, return values set 
the RC variable in
   Rexx select case cmd when "HELLO" then return "Hello, ooRexx! This is your 
Rexx (!)
   DeuxCommandHandler greeting you!" when "INFO" then return
   slotDir~javaObject~toString(slot,address) when "PING" then return "Pong!" 
otherwise -- unknown
   command received create a failure jarr = 
bsf.createJavaArrayOf("java.lang.String"

Is there a Java takesocket method?

2024-01-17 Thread Steve Austin
I have an assembler program using ‘givesocket’ to give a socket to another
address space running a REXX using ‘takesocket’; this works fine. I’d like
to replace the REXX with a Java app, but I’ve not yet found a Java
takesocket method. My Java app is currently using java.net.ServerSocket and
java.net.Socket. Do I need to make a native call via the JNI for this? If
so, having taken the socket in the JNI how do I give it to the Java app? Is
there an example somewhere?

Thanks Steve

-- 
This e-mail message has been scanned and cleared by Google Message Security 
and the UNICOM Global security systems. This message is for the named 
person's use only. If you receive this message in error, please delete it 
and notify the sender. 

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


IntelliJ Rexx plugin (Re: JAVA IDE

2023-08-24 Thread Rony G. Flatscher
IntelliJ users may gain Rexx syntax highlighting and syntax checking if installing the ooRexxPlugin 
for IntelliJ which a former student created and has been maintaining since. It covers Rexx, ooRexx 
5.0 and Executor. He was kind enough to add support for the mainframe Rexx programs characters that 
got removed for TRL2.


Here a presentation from this year's International Rexx symposium about IntelliJ with the ooRexx 
plugin and its included Rexx documentation support that can be exploited for any Rexx program: 
<https://www.rexxla.org/presentations/2023/04_ooRexx_Plugin_2_2.pdf>. It also demonstrates its 
auot-completion feature which can be supplemented with one own's names.


Here the plugin location with the readme for installation: 
<https://sourceforge.net/projects/bsf4oorexx/files/Sandbox/aseik/ooRexxIDEA/GA/2.2.0/>.


---rony


On 23.08.2023 21:33, David Crayford wrote:

100% agree with Kirk. IntelliJ IDEA is head and shoulders the best Java IDE. 
I’ve mostly been coding in Java for the last few years and use the Ultimate 
edition which is quite expensive but worth every penny. We also use the 
Jetbrains CLion IDE for C/C++ and Python. I’ve recently been playing with VS 
Code for doing some Python presentations and it’s an excellent editor.


On 24 Aug 2023, at 1:11 am, Kirk Wolf  wrote:

BTW:  ibm-main is probably the worst place to ask :-)

Kirk Wolf
Dovetailed Technologies

To answer you question, for a real Java IDE, Java programmers generally believe 
that IntelliJ is the best and that's hard to argue with.I've used Eclipse 
for a really long time. If you are doing z/OS Java development, it's 
generally best to develop on your workstation and just deploy compiled jars to 
z/OS.   We use some enhanced Ant SSH/SFTP tasks that we developed to target 
z/OS from the IDE (for C/C++, assembler, and Java).
https://coztoolkit.com/community/antssh.html


On Wed, Aug 23, 2023, at 11:35 AM, Seymour J Metz wrote:

The question "What is the best foo?" is guarantied to start a religious war, 
whether foo be an editor, an IDE, a language, an OS or a shell. Try a few and see what 
you like.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Steve Beaver [050e0c375a14-dmarc-requ...@listserv.ua.edu]
Sent: Wednesday, August 23, 2023 11:07 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: JAVA IDE

I can believe that I'm asking this question.





What is the best/most friendly JAVA IDE?





Steve



--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: JAVA IDE

2023-08-23 Thread Andrew Rowley

On 24/08/2023 3:11 am, Kirk Wolf wrote:

To answer you question, for a real Java IDE, Java programmers generally believe 
that IntelliJ is the best and that's hard to argue with.I've used Eclipse 
for a really long time. If you are doing z/OS Java development, it's 
generally best to develop on your workstation and just deploy compiled jars to 
z/OS.


I use Eclipse, but it's mainly inertia preventing me from trying 
something else.


VS Code looks interesting because of the focus on supporting other z/OS 
languages, and the ability to edit datasets and files on the mainframe.


I have been playing with Java single file source code programs under 
Java 11 on z/OS, and that's a nice facility. It makes Java more like 
e.g. Rexx, in that you don't have to run a compile step. Does anyone 
know whether it's possible to set a classpath and have auto-complete and 
syntax checking using VS Code to edit a Java file on z/OS?


--
Andrew Rowley
Black Hill Software

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: JAVA IDE

2023-08-23 Thread David Crayford
> On 24 Aug 2023, at 5:16 am, Rahim Azizarab 
> <03f036d88eeb-dmarc-requ...@listserv.ua.edu> wrote:
> 
> Eclipse is free.

So is IntelliJ. You pay for the enterprise features. 

> 
> 
> regards;
> 
> Rahim 
> 
> 
> 
>
> 
> 
> 
>On Wednesday, August 23, 2023 at 10:07:57 AM CDT, Steve Beaver 
> <050e0c375a14-dmarc-requ...@listserv.ua.edu> wrote:  
> 
> I can believe that I'm asking this question.
> 
> 
> 
> 
> 
> What is the best/most friendly JAVA IDE?
> 
> 
> 
> 
> 
> Steve
> 
> 
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> 
> 
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: JAVA IDE

2023-08-23 Thread Rahim Azizarab
Eclipse is free.


regards;

Rahim 



   

 

On Wednesday, August 23, 2023 at 10:07:57 AM CDT, Steve Beaver 
<050e0c375a14-dmarc-requ...@listserv.ua.edu> wrote:  
 
 I can believe that I'm asking this question.

 

 

What is the best/most friendly JAVA IDE?

 

 

Steve


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
  

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: JAVA IDE

2023-08-23 Thread David Crayford
100% agree with Kirk. IntelliJ IDEA is head and shoulders the best Java IDE. 
I’ve mostly been coding in Java for the last few years and use the Ultimate 
edition which is quite expensive but worth every penny. We also use the 
Jetbrains CLion IDE for C/C++ and Python. I’ve recently been playing with VS 
Code for doing some Python presentations and it’s an excellent editor. 

> On 24 Aug 2023, at 1:11 am, Kirk Wolf  wrote:
> 
> BTW:  ibm-main is probably the worst place to ask :-)
> 
> Kirk Wolf
> Dovetailed Technologies
> 
> To answer you question, for a real Java IDE, Java programmers generally 
> believe that IntelliJ is the best and that's hard to argue with.I've used 
> Eclipse for a really long time. If you are doing z/OS Java development, 
> it's generally best to develop on your workstation and just deploy compiled 
> jars to z/OS.   We use some enhanced Ant SSH/SFTP tasks that we developed to 
> target z/OS from the IDE (for C/C++, assembler, and Java).
> https://coztoolkit.com/community/antssh.html
> 
> 
> On Wed, Aug 23, 2023, at 11:35 AM, Seymour J Metz wrote:
>> The question "What is the best foo?" is guarantied to start a religious war, 
>> whether foo be an editor, an IDE, a language, an OS or a shell. Try a few 
>> and see what you like.
>> 
>> 
>> --
>> Shmuel (Seymour J.) Metz
>> http://mason.gmu.edu/~smetz3
>> 
>> 
>> From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
>> Steve Beaver [050e0c375a14-dmarc-requ...@listserv.ua.edu]
>> Sent: Wednesday, August 23, 2023 11:07 AM
>> To: IBM-MAIN@LISTSERV.UA.EDU
>> Subject: JAVA IDE
>> 
>> I can believe that I'm asking this question.
>> 
>> 
>> 
>> 
>> 
>> What is the best/most friendly JAVA IDE?
>> 
>> 
>> 
>> 
>> 
>> Steve
>> 
>> 
>> --
>> For IBM-MAIN subscribe / signoff / archive access instructions,
>> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>> 
>> --
>> For IBM-MAIN subscribe / signoff / archive access instructions,
>> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>> 
> 
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: JAVA IDE

2023-08-23 Thread Kirk Wolf
BTW:  ibm-main is probably the worst place to ask :-)

Kirk Wolf
Dovetailed Technologies

To answer you question, for a real Java IDE, Java programmers generally believe 
that IntelliJ is the best and that's hard to argue with.I've used Eclipse 
for a really long time. If you are doing z/OS Java development, it's 
generally best to develop on your workstation and just deploy compiled jars to 
z/OS.   We use some enhanced Ant SSH/SFTP tasks that we developed to target 
z/OS from the IDE (for C/C++, assembler, and Java).
https://coztoolkit.com/community/antssh.html


On Wed, Aug 23, 2023, at 11:35 AM, Seymour J Metz wrote:
> The question "What is the best foo?" is guarantied to start a religious war, 
> whether foo be an editor, an IDE, a language, an OS or a shell. Try a few and 
> see what you like.
> 
> 
> --
> Shmuel (Seymour J.) Metz
> http://mason.gmu.edu/~smetz3
> 
> 
> From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
> Steve Beaver [050e0c375a14-dmarc-requ...@listserv.ua.edu]
> Sent: Wednesday, August 23, 2023 11:07 AM
> To: IBM-MAIN@LISTSERV.UA.EDU
> Subject: JAVA IDE
> 
> I can believe that I'm asking this question.
> 
> 
> 
> 
> 
> What is the best/most friendly JAVA IDE?
> 
> 
> 
> 
> 
> Steve
> 
> 
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> 
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> 

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: JAVA IDE

2023-08-23 Thread Seymour J Metz
The question "What is the best foo?" is guarantied to start a religious war, 
whether foo be an editor, an IDE, a language, an OS or a shell. Try a few and 
see what you like.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Steve Beaver [050e0c375a14-dmarc-requ...@listserv.ua.edu]
Sent: Wednesday, August 23, 2023 11:07 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: JAVA IDE

I can believe that I'm asking this question.





What is the best/most friendly JAVA IDE?





Steve


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: JAVA IDE

2023-08-23 Thread Cameron Conacher
Personally, I use Intellij.
I am happy with it.
I found many training videos on Pluralsite.
I have not used any other, so I cannot comment on the best or the most friendly.


Thanks

...Cameron

From: IBM Mainframe Discussion List  On Behalf Of 
Steve Beaver
Sent: Wednesday, August 23, 2023 11:08 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: JAVA IDE

I can believe that I'm asking this question. What is the best/most friendly 
JAVA IDE? Steve 
-- For 
IBM-MAIN subscribe / signoff / archive access instructions, send email to


I can believe that I'm asking this question.











What is the best/most friendly JAVA IDE?











Steve





--

For IBM-MAIN subscribe / signoff / archive access instructions,

send email to lists...@listserv.ua.edu<mailto:lists...@listserv.ua.edu> with 
the message: INFO IBM-MAIN


American Express made the following annotations

This e-mail was sent to you by a representative of Amex Bank of Canada, P.O. 
Box 3204, Station "F", Toronto, ON, M1W 3W7, www.americanexpress.ca. If you no 
longer wish to receive these e-mails, please notify the sender by reply e-mail.

This e-mail is solely for the intended recipient and may contain confidential 
or privileged information. If you are not the intended recipient, any 
disclosure, copying, use, or distribution of the information included in this 
e-mail is prohibited. If you have received this e-mail in error, please notify 
the sender by reply e-mail and immediately and permanently delete this e-mail 
and any attachments. Thank you.

American Express a fait les remarques suivantes
Ce courriel vous a ?t? envoy? par un repr?sentant de la Banque Amex du Canada, 
C.P. 3204, succursale F, Toronto (Ontario) M1W 3W7, www.americanexpress.ca. Si, 
par la suite, vous ne souhaitez plus recevoir ces courriels, veuillez en aviser 
les exp?diteurs par courriel.

Ce courriel est r?serv? au seul destinataire indiqu? et peut renfermer des 
renseignements confidentiels et privil?gi?s. Si vous n'?tes pas le destinataire 
pr?vu, toute divulgation, duplication, utilisation ou distribution du courriel 
est interdite. Si vous avez re?u ce courriel par erreur, veuillez en aviser 
l'exp?diteur par courriel et d?truire imm?diatement le courriel et toute pi?ce 
jointe. Merci.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


JAVA IDE

2023-08-23 Thread Steve Beaver
I can believe that I'm asking this question.

 

 

What is the best/most friendly JAVA IDE?

 

 

Steve


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


XMITMSGX release 2.1.5 for C, Regina Rexx, ooRexx, Java

2023-08-01 Thread Rick Troth

Thanks to help from Sir Dave the Generous,
we confirmed that the XMITMSGX Rexx support built with Regina works just 
fine with ooRexx. Yay!
I had been trying to build against ooRexx expecting some linkage 
differences, but *someone* in ooRexx land made things compatible between 
ooRexx and Regina.


I did not cut a new release (on GitHub) but did spin two new RPMS 
(Linux-s390x and Linux-x86_64).

They're here ...

http://www.casita.net/pub/xmitmsgx/xmitmsgx-2.1.5-0.s390x.rpm

http://www.casita.net/pub/xmitmsgx/xmitmsgx-2.1.5-1.x86_64.rpm

and the source tarball ...

http://www.casita.net/pub/xmitmsgx/xmitmsgx-2.1.5.tar.gz

The only change was to the shell script wrapper demonstrating the 
message handler from Rexx.
As of now, if it doesn't find Regina then it falls back to 'rexx' 
(presuming ooRexx).

No change to the sample Rexx script nor to the interface library.

Enjoy!

-- R; <><









--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: [EXT] Re: Invoke Java from Assembler

2023-07-13 Thread Kirk Wolf
Using the JNI interface, you can create the JVM once and then make as many 
method invocations as you like with it.   There isn't a requirement to call 
CEEPIPI if you are doing this from C, since your LE Enclave will already be 
there.


Kirk Wolf
Dovetailed Technologies
https://coztoolkit.com

On Thu, Jul 13, 2023, at 8:06 AM, Crawford Robert C (Contractor) wrote:
> Denis,
> 
> Thank you for the detailed answer.  I'll start looking into your suggestions.
> 
> I may be misunderstanding your question, but we would like a persistent JVM 
> so the assembler code can call Java classes as subroutines.  Creating and 
> terminating a JVM for each call would be prohibitively expensive.
> 
> Robert Crawford
> Abstract Evolutions LLC
> (210) 913-3822
> 
> -Original Message-
> From: IBM Mainframe Discussion List  On Behalf Of 
> Denis
> Sent: Wednesday, July 12, 2023 8:30 AM
> To: IBM-MAIN@LISTSERV.UA.EDU
> Subject: Re: [EXT] Re: Invoke Java from Assembler
> 
> Hi Robert,
> 
> IMS uses the CEEPIPI approach to make the JVM persistent, but thats actually 
> only needed if multiple modules are serially executed and (speaking with 
> COBOL) end with a GOBACK. The GOBACK of the first module called would 
> terminate the LE enclave (and as such the JVM) so CEEPIPI is used to allow 
> the next program to work the same way without tiering down the JVM.
> The COBOL (and C JNI) work like this, you start a program e.g. with JCL 
> PGM=PROG1. Enterprise COBOL initializes the JVM (CreateJavaVM and 
> AttachCurrentThread JNI calls under the covers if I remember correctly, in C 
> and e.g. PL/I you do that by yourself and the environment for the JVM is 
> pointed to by _CEE_ENVFILE) and with that JVM pointer you can do any number 
> of JNI calls (e.g. call Java methods) and after each call the calling program 
> is returned control. The JNIEnvPtr will be valid as long as the JVM or the LE 
> enclave stay up.You can do the same thing in assembler, but you need an LE 
> enclave with POSIX(ON) and XPLINK(ON) since the JVM on z/OS is written in C 
> and requires those settings (in addition that up to Java 8 the 31bit version 
> of Java needs to be used). But if the inital assembler uses CEEENTRY and 
> CEETERM it will be quite easy to achieve, because it would create the LE 
> enclave and remain until the initial assembler ends. From that first module 
> you can call any non LE assembler as you like.The JVM can be ended by using 
> JNI call DestroyJavaVM to make sure any unfinished work on the Java side is 
> ended (as opposed to just end the first module and terminate the JVM together 
> with the LE enclave and the address space).
> One question is, why would you need to make the JVM persistent with CEEPIPI 
> in batch?You can do PROG1 call anything then return, PROG1 call Java then 
> return as long and as many times as you want without the need of CEEPIPI and 
> reusing the JVM - since its not terminated after return from Java.
> But to make it more complicated, since Java 11 for z/OS there is no 31bit JVM 
> anymore and the JVM will be in a secondary 64bit LE enclave. There is a 
> libjvm31.so shared library which can be used to make the JNI calls work, with 
> the difference that most references require 64bit parameters. (Under the 
> covers CEL4RO64 service is 
> used)https://www.ibm.com/support/pages/enhancement-coboljni-interface
> 
> For now, I think the easiest way to do it, is in COBOL.
> Hope that helps,Denis.
> On Wednesday, July 12, 2023 at 02:40:08 PM GMT+2, Crawford Robert C 
> (Contractor) <04e08f385650-dmarc-requ...@listserv.ua.edu> wrote:
>  
>  
> Thanks, Allan.
> 
> Back in the 90's I used CEEPIPI to create a persistent C enclave I could call 
> from Assembler because building the environment is expensive.  Unfortunately, 
> CEEPIPI documentation is kind of scarce.  What we do find doesn't give us 
> very many clues for how to get to Java.
> 
> Robert Crawford
> Abstract Evolutions LLC
> (210) 913-3822
> 
> -Original Message-
> From: IBM Mainframe Discussion List  On Behalf Of 
> allan winston
> Sent: Tuesday, July 11, 2023 5:22 PM
> To: IBM-MAIN@LISTSERV.UA.EDU
> Subject: [EXT] Re: Invoke Java from Assembler
> 
> Robert,
> 
>   This reminds me of a situation I ran into 25 years ago involving assembler 
> and COBOL.  Granted, COBOL and Java are different environments, but there may 
> be enough similarity in the issues to be relevant.
> 
> We had an assembler main program that called a COBOL subroutine 
> repeatedly.  It was chugging along just fine until LE maintenance showed a 
> large spike in CPU time within LE library routines, as shown by Strobe.
> It seemed as though the LE environment was constantly being created an

Re: [EXT] Re: Invoke Java from Assembler

2023-07-13 Thread Crawford Robert C (Contractor)
Denis,

Thank you for the detailed answer.  I'll start looking into your suggestions.

I may be misunderstanding your question, but we would like a persistent JVM so 
the assembler code can call Java classes as subroutines.  Creating and 
terminating a JVM for each call would be prohibitively expensive.

Robert Crawford
Abstract Evolutions LLC
(210) 913-3822

-Original Message-
From: IBM Mainframe Discussion List  On Behalf Of 
Denis
Sent: Wednesday, July 12, 2023 8:30 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: [EXT] Re: Invoke Java from Assembler

 Hi Robert,

IMS uses the CEEPIPI approach to make the JVM persistent, but thats actually 
only needed if multiple modules are serially executed and (speaking with COBOL) 
end with a GOBACK. The GOBACK of the first module called would terminate the LE 
enclave (and as such the JVM) so CEEPIPI is used to allow the next program to 
work the same way without tiering down the JVM.
The COBOL (and C JNI) work like this, you start a program e.g. with JCL 
PGM=PROG1. Enterprise COBOL initializes the JVM (CreateJavaVM and 
AttachCurrentThread JNI calls under the covers if I remember correctly, in C 
and e.g. PL/I you do that by yourself and the environment for the JVM is 
pointed to by _CEE_ENVFILE) and with that JVM pointer you can do any number of 
JNI calls (e.g. call Java methods) and after each call the calling program is 
returned control. The JNIEnvPtr will be valid as long as the JVM or the LE 
enclave stay up.You can do the same thing in assembler, but you need an LE 
enclave with POSIX(ON) and XPLINK(ON) since the JVM on z/OS is written in C and 
requires those settings (in addition that up to Java 8 the 31bit version of 
Java needs to be used). But if the inital assembler uses CEEENTRY and CEETERM 
it will be quite easy to achieve, because it would create the LE enclave and 
remain until the initial assembler ends. From that first module you can call 
any non LE assembler as you like.The JVM can be ended by using JNI call 
DestroyJavaVM to make sure any unfinished work on the Java side is ended (as 
opposed to just end the first module and terminate the JVM together with the LE 
enclave and the address space).
One question is, why would you need to make the JVM persistent with CEEPIPI in 
batch?You can do PROG1 call anything then return, PROG1 call Java then return 
as long and as many times as you want without the need of CEEPIPI and reusing 
the JVM - since its not terminated after return from Java.
But to make it more complicated, since Java 11 for z/OS there is no 31bit JVM 
anymore and the JVM will be in a secondary 64bit LE enclave. There is a 
libjvm31.so shared library which can be used to make the JNI calls work, with 
the difference that most references require 64bit parameters. (Under the covers 
CEL4RO64 service is 
used)https://www.ibm.com/support/pages/enhancement-coboljni-interface

For now, I think the easiest way to do it, is in COBOL.
Hope that helps,Denis.
On Wednesday, July 12, 2023 at 02:40:08 PM GMT+2, Crawford Robert C 
(Contractor) <04e08f385650-dmarc-requ...@listserv.ua.edu> wrote:
 
 
 Thanks, Allan.

Back in the 90's I used CEEPIPI to create a persistent C enclave I could call 
from Assembler because building the environment is expensive.  Unfortunately, 
CEEPIPI documentation is kind of scarce.  What we do find doesn't give us very 
many clues for how to get to Java.

Robert Crawford
Abstract Evolutions LLC
(210) 913-3822

-Original Message-
From: IBM Mainframe Discussion List  On Behalf Of 
allan winston
Sent: Tuesday, July 11, 2023 5:22 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: [EXT] Re: Invoke Java from Assembler

Robert,

  This reminds me of a situation I ran into 25 years ago involving assembler 
and COBOL.  Granted, COBOL and Java are different environments, but there may 
be enough similarity in the issues to be relevant.

    We had an assembler main program that called a COBOL subroutine repeatedly. 
 It was chugging along just fine until LE maintenance showed a large spike in 
CPU time within LE library routines, as shown by Strobe.
It seemed as though the LE environment was constantly being created and torn 
down. I did look into solutions, such as using CEEPIPI, but this program was a 
major CPU consumer in this shop and we needed a quick solution.  The solution I 
proposed and was implemented was to create a new main program, written in 
COBOL, that called the former assembler main program.  That way the new main 
program established the LE environment that persisted until the program 
terminated.

  So, ALC calling COBOL changed to COBOL calling ALC calling COBOL.
In your case: Java calling COBOL changed to COBOL calling Java calling COBOL.

  I have never used Java, so this is somewhat a shot in the dark.

  I should have created an ETR on IBMLINK about the increased CPU overhead, but 
did not bother since we had a circumvention.

    Allan

On Tue, Jul 11, 2023 at 5:58 PM Crawford Ro

Re: [EXT] Re: Invoke Java from Assembler

2023-07-12 Thread Denis
 Hi Robert,

IMS uses the CEEPIPI approach to make the JVM persistent, but thats actually 
only needed if multiple modules are serially executed and (speaking with COBOL) 
end with a GOBACK. The GOBACK of the first module called would terminate the LE 
enclave (and as such the JVM) so CEEPIPI is used to allow the next program to 
work the same way without tiering down the JVM.
The COBOL (and C JNI) work like this, you start a program e.g. with JCL 
PGM=PROG1. Enterprise COBOL initializes the JVM (CreateJavaVM and 
AttachCurrentThread JNI calls under the covers if I remember correctly, in C 
and e.g. PL/I you do that by yourself and the environment for the JVM is 
pointed to by _CEE_ENVFILE) and with that JVM pointer you can do any number of 
JNI calls (e.g. call Java methods) and after each call the calling program is 
returned control. The JNIEnvPtr will be valid as long as the JVM or the LE 
enclave stay up.You can do the same thing in assembler, but you need an LE 
enclave with POSIX(ON) and XPLINK(ON) since the JVM on z/OS is written in C and 
requires those settings (in addition that up to Java 8 the 31bit version of 
Java needs to be used). But if the inital assembler uses CEEENTRY and CEETERM 
it will be quite easy to achieve, because it would create the LE enclave and 
remain until the initial assembler ends. From that first module you can call 
any non LE assembler as you like.The JVM can be ended by using JNI call 
DestroyJavaVM to make sure any unfinished work on the Java side is ended (as 
opposed to just end the first module and terminate the JVM together with the LE 
enclave and the address space).
One question is, why would you need to make the JVM persistent with CEEPIPI in 
batch?You can do PROG1 call anything then return, PROG1 call Java then return 
as long and as many times as you want without the need of CEEPIPI and reusing 
the JVM - since its not terminated after return from Java.
But to make it more complicated, since Java 11 for z/OS there is no 31bit JVM 
anymore and the JVM will be in a secondary 64bit LE enclave. There is a 
libjvm31.so shared library which can be used to make the JNI calls work, with 
the difference that most references require 64bit parameters. (Under the covers 
CEL4RO64 service is 
used)https://www.ibm.com/support/pages/enhancement-coboljni-interface

For now, I think the easiest way to do it, is in COBOL.
Hope that helps,Denis.
On Wednesday, July 12, 2023 at 02:40:08 PM GMT+2, Crawford Robert C 
(Contractor) <04e08f385650-dmarc-requ...@listserv.ua.edu> wrote:
 
 
 Thanks, Allan.

Back in the 90's I used CEEPIPI to create a persistent C enclave I could call 
from Assembler because building the environment is expensive.  Unfortunately, 
CEEPIPI documentation is kind of scarce.  What we do find doesn't give us very 
many clues for how to get to Java.

Robert Crawford
Abstract Evolutions LLC
(210) 913-3822

-Original Message-
From: IBM Mainframe Discussion List  On Behalf Of 
allan winston
Sent: Tuesday, July 11, 2023 5:22 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: [EXT] Re: Invoke Java from Assembler

Robert,

  This reminds me of a situation I ran into 25 years ago involving assembler 
and COBOL.  Granted, COBOL and Java are different environments, but there may 
be enough similarity in the issues to be relevant.

    We had an assembler main program that called a COBOL subroutine repeatedly. 
 It was chugging along just fine until LE maintenance showed a large spike in 
CPU time within LE library routines, as shown by Strobe.
It seemed as though the LE environment was constantly being created and torn 
down. I did look into solutions, such as using CEEPIPI, but this program was a 
major CPU consumer in this shop and we needed a quick solution.  The solution I 
proposed and was implemented was to create a new main program, written in 
COBOL, that called the former assembler main program.  That way the new main 
program established the LE environment that persisted until the program 
terminated.

  So, ALC calling COBOL changed to COBOL calling ALC calling COBOL.
In your case: Java calling COBOL changed to COBOL calling Java calling COBOL.

  I have never used Java, so this is somewhat a shot in the dark.

  I should have created an ETR on IBMLINK about the increased CPU overhead, but 
did not bother since we had a circumvention.

    Allan

On Tue, Jul 11, 2023 at 5:58 PM Crawford Robert C (Contractor) < 
04e08f385650-dmarc-requ...@listserv.ua.edu> wrote:

> We're interested in invoking Java from assembler in batch.  
> Specifically, we'd like to create a persistent Java environment we can 
> call repeatedly and terminate when we're through.
>
> Has anyone done this?  Is the LE pre-initialization module CEEPIPI 
> worth exploring?
>
> Thanks.
>
> Robert Crawford
> Abstract Evolutions LLC
> (210) 913-3822
>
>
> --
> Fo

Re: [EXT] Re: Invoke Java from Assembler

2023-07-12 Thread Steve Austin
A few years back I ran up an assembler program that used CELQPIPI(64-bit
PIPI) to do this, but the assembler program called C routines via PIPI to do
the real work; the C routines contained Java JNI code.

-Original Message-
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
Behalf Of Crawford Robert C (Contractor)
Sent: Wednesday, July 12, 2023 1:40 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: [EXT] Re: Invoke Java from Assembler

Thanks, Allan.

Back in the 90's I used CEEPIPI to create a persistent C enclave I could
call from Assembler because building the environment is expensive.
Unfortunately, CEEPIPI documentation is kind of scarce.  What we do find
doesn't give us very many clues for how to get to Java.

Robert Crawford
Abstract Evolutions LLC
(210) 913-3822

-Original Message-
From: IBM Mainframe Discussion List  On Behalf Of
allan winston
Sent: Tuesday, July 11, 2023 5:22 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: [EXT] Re: Invoke Java from Assembler

Robert,

   This reminds me of a situation I ran into 25 years ago involving
assembler and COBOL.  Granted, COBOL and Java are different environments,
but there may be enough similarity in the issues to be relevant.

We had an assembler main program that called a COBOL subroutine
repeatedly.  It was chugging along just fine until LE maintenance showed a
large spike in CPU time within LE library routines, as shown by Strobe.
It seemed as though the LE environment was constantly being created and torn
down. I did look into solutions, such as using CEEPIPI, but this program was
a major CPU consumer in this shop and we needed a quick solution.  The
solution I proposed and was implemented was to create a new main program,
written in COBOL, that called the former assembler main program.  That way
the new main program established the LE environment that persisted until the
program terminated.

   So, ALC calling COBOL changed to COBOL calling ALC calling COBOL.
In your case: Java calling COBOL changed to COBOL calling Java calling
COBOL.

   I have never used Java, so this is somewhat a shot in the dark.

   I should have created an ETR on IBMLINK about the increased CPU overhead,
but did not bother since we had a circumvention.

 Allan

On Tue, Jul 11, 2023 at 5:58 PM Crawford Robert C (Contractor) <
04e08f385650-dmarc-requ...@listserv.ua.edu> wrote:

> We're interested in invoking Java from assembler in batch.
> Specifically, we'd like to create a persistent Java environment we can
> call repeatedly and terminate when we're through.
>
> Has anyone done this?  Is the LE pre-initialization module CEEPIPI
> worth exploring?
>
> Thanks.
>
> Robert Crawford
> Abstract Evolutions LLC
> (210) 913-3822
>
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions, send
> email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>

--
For IBM-MAIN subscribe / signoff / archive access instructions, send email
to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions, send email
to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

-- 
This e-mail message has been scanned and cleared by Google Message Security 
and the UNICOM Global security systems. This message is for the named 
person's use only. If you receive this message in error, please delete it 
and notify the sender. 

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: [EXT] Re: Invoke Java from Assembler

2023-07-12 Thread Crawford Robert C (Contractor)
Thanks, Allan.

Back in the 90's I used CEEPIPI to create a persistent C enclave I could call 
from Assembler because building the environment is expensive.  Unfortunately, 
CEEPIPI documentation is kind of scarce.  What we do find doesn't give us very 
many clues for how to get to Java.

Robert Crawford
Abstract Evolutions LLC
(210) 913-3822

-Original Message-
From: IBM Mainframe Discussion List  On Behalf Of 
allan winston
Sent: Tuesday, July 11, 2023 5:22 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: [EXT] Re: Invoke Java from Assembler

Robert,

   This reminds me of a situation I ran into 25 years ago involving assembler 
and COBOL.  Granted, COBOL and Java are different environments, but there may 
be enough similarity in the issues to be relevant.

We had an assembler main program that called a COBOL subroutine repeatedly. 
 It was chugging along just fine until LE maintenance showed a large spike in 
CPU time within LE library routines, as shown by Strobe.
It seemed as though the LE environment was constantly being created and torn 
down. I did look into solutions, such as using CEEPIPI, but this program was a 
major CPU consumer in this shop and we needed a quick solution.  The solution I 
proposed and was implemented was to create a new main program, written in 
COBOL, that called the former assembler main program.  That way the new main 
program established the LE environment that persisted until the program 
terminated.

   So, ALC calling COBOL changed to COBOL calling ALC calling COBOL.
In your case: Java calling COBOL changed to COBOL calling Java calling COBOL.

   I have never used Java, so this is somewhat a shot in the dark.

   I should have created an ETR on IBMLINK about the increased CPU overhead, 
but did not bother since we had a circumvention.

 Allan

On Tue, Jul 11, 2023 at 5:58 PM Crawford Robert C (Contractor) < 
04e08f385650-dmarc-requ...@listserv.ua.edu> wrote:

> We're interested in invoking Java from assembler in batch.  
> Specifically, we'd like to create a persistent Java environment we can 
> call repeatedly and terminate when we're through.
>
> Has anyone done this?  Is the LE pre-initialization module CEEPIPI 
> worth exploring?
>
> Thanks.
>
> Robert Crawford
> Abstract Evolutions LLC
> (210) 913-3822
>
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions, send 
> email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>

--
For IBM-MAIN subscribe / signoff / archive access instructions, send email to 
lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Invoke Java from Assembler

2023-07-11 Thread allan winston
Robert,

   This reminds me of a situation I ran into 25 years ago involving
assembler and COBOL.  Granted, COBOL and Java are different
environments, but there may be enough similarity in the issues to be
relevant.

We had an assembler main program that called a COBOL subroutine
repeatedly.  It was chugging along just fine until
LE maintenance showed a large spike in CPU time within LE library routines,
as shown by Strobe.
It seemed as though the LE environment was constantly being created and
torn down. I did look into solutions, such as using CEEPIPI, but this
program
was a major CPU consumer in this shop and we needed a quick solution.  The
solution I proposed and was implemented
was to create a new main program, written in COBOL, that called the former
assembler main program.  That way the new main program
established the LE environment that persisted until the program terminated.

   So, ALC calling COBOL changed to COBOL calling ALC calling COBOL.
In your case: Java calling COBOL changed to COBOL calling Java calling
COBOL.

   I have never used Java, so this is somewhat a shot in the dark.

   I should have created an ETR on IBMLINK about the increased CPU
overhead, but did not bother since we had a circumvention.

 Allan

On Tue, Jul 11, 2023 at 5:58 PM Crawford Robert C (Contractor) <
04e08f385650-dmarc-requ...@listserv.ua.edu> wrote:

> We're interested in invoking Java from assembler in batch.  Specifically,
> we'd like to create a persistent Java environment we can call repeatedly
> and terminate when we're through.
>
> Has anyone done this?  Is the LE pre-initialization module CEEPIPI worth
> exploring?
>
> Thanks.
>
> Robert Crawford
> Abstract Evolutions LLC
> (210) 913-3822
>
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Invoke Java from Assembler

2023-07-11 Thread Kirk Wolf
If you need to launch the Java virtual machine and invoke methods, it will be 
*much* easier to use C or C++ since you need to use "JNI" and the include files 
are provided and you need a LE XPLINK linkage and runtime environment.  I've 
done that and it works fine (both 31 and 64 bit SDK versions).

Another option would be to use Enterprise COBOL which has a Java JNI interface 
included.


Kirk Wolf
Dovetailed Technologies
https://coztoolkit.com

On Tue, Jul 11, 2023, at 4:58 PM, Crawford Robert C (Contractor) wrote:
> We're interested in invoking Java from assembler in batch.  Specifically, 
> we'd like to create a persistent Java environment we can call repeatedly and 
> terminate when we're through.
> 
> Has anyone done this?  Is the LE pre-initialization module CEEPIPI worth 
> exploring?
> 
> Thanks.
> 
> Robert Crawford
> Abstract Evolutions LLC
> (210) 913-3822
> 
> 
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> 

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Invoke Java from Assembler

2023-07-11 Thread Crawford Robert C (Contractor)
We're interested in invoking Java from assembler in batch.  Specifically, we'd 
like to create a persistent Java environment we can call repeatedly and 
terminate when we're through.

Has anyone done this?  Is the LE pre-initialization module CEEPIPI worth 
exploring?

Thanks.

Robert Crawford
Abstract Evolutions LLC
(210) 913-3822


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: COBOL and the Java scripting framework ? (Re: Are there samples of COBOL methods or classes?

2023-06-30 Thread Rony G. Flatscher

On 30.06.2023 09:44, Rony G. Flatscher wrote:

On 28.06.2023 17:26, Tom Ross wrote:

Please check out the examples in the COBOL Programming Guide, in
Part 6. Developing object-oriented programs

GO here:https://www.ibm.com/support/pages/node/611415
Select which release you are interested in and then
click "Product Documentation"


thank you, Tom. Could get to <https://www.ibm.com/support/pages/node/611415#64> and from there to 
the programming guide at <https://publibfp.dhe.ibm.com/epubs/pdf/igy6pg40.pdf>.


It seems that OO COBOL allows interacting with Java via JNI (Java native interface) only. 6.4 adds 
the ability to invoke static Java methods without OO COBOL.


Not having any of the necessary infrastructure (mainframe ;) , OO COBOL and Java) there is nothing 
I could do. So maybe just hinting of what would become possible if anyone with the OO COBOL-Java 
skills would come with showing how to code the following Java program in OO COBOL.


Such an example would serve as a nutshell example that would demonstrate how to invoke scripts 
from OO COBOL in any scripting language for which an implementation of javax.script.Engine exists 
including supplying arguments (stored in a Java array of type java.lang.Object) and fetching the 
result.


To make this as flexible (and thereby as usable) as possible, the following Java program will take 
the name of a file containing a script as a single argument, and then will load with the help of 
the Java scripting framework the appropriate scripting engine to execute the script, and supply as 
an argument the name of a Java system property which the script should return to the caller.


Here the Java code that should be transcribed to COBOL:

   import javax.script.*;
   import java.io.File;
   import java.io.FileReader;

   class Test
   {
    public static void main (String args[])
    {
    if (args.length==0)
    {
    System.err.println("file name missing...");
    System.exit(-1);
    }
    String fileName = args[0];    // get filename
    String extension    = 
fileName.substring(fileName.lastIndexOf(".")+1);
    ScriptEngineManager sem = new ScriptEngineManager();
    ScriptEngine    se  = sem.getEngineByExtension(extension);

    Object result = null;
    try
    {
    ScriptContext sc    = se.getContext();
    // add filename
    sc.setAttribute(se.FILENAME, fileName  , sc.ENGINE_SCOPE);
    // add some arbitrary arguments
    Object scriptArgs[] = new Object [] { "first", "", "trois", null, 
"cinque" };
    sc.setAttribute(se.ARGV    , scriptArgs, sc.ENGINE_SCOPE);
    // create a FileReader from File
    FileReader f    = new FileReader(new File(fileName));
    result=se.eval(f);  // read and execute script
    }
    catch (Throwable t)
    {
    System.err.println("Oops, some exception occurred: "+t);
    }
    System.out.println("script's result: "+result);
    System.exit(0);
    }
   }

Here a Rexx file (can be any Rexx script):

   parse source s
   say "source :" s
   parse version v
   say "version:" v
   say "there are" arg() "arguments supplied:"
   do i=1 to arg()
   say "   #" i":" arg(i)
   end
   return 43

The Java program "Test", once compiled can then be used to run any script (not only Rexx) from a 
script file where the file extension determines which scripting language should get loaded to run 
the script in the file. Here an example of running the Java program supplying the name of a file 
containing a Rexx script:


   G:\tmp\bsf4oorexx\cobol>java Test rexxscript.rex
   REXXout>source : WindowsNT SUBROUTINE rexxscript_ori.rex
   REXXout>version: REXX-ooRexx_5.1.0(MT)_64-bit 6.05 6 Jun 2023
   REXXout>there are 6 arguments supplied:
   REXXout>   # 1: first
   REXXout>   # 2:
   REXXout>   # 3: trois
   REXXout>   # 4: The NIL object
   REXXout>   # 5: cinque
   REXXout>   # 6: a Slot.Argument
   script's result: 43

---

The script code can also be supplied directly as a String to the script engine's eval() method 
"res=eval(String scriptCode)", such that you could load the script code from a database in case 
you have it stored as such. The possibilities are endless.


As you can see, one can submit any value/object as an argument to the script and fetch any result 
of the script.


---

It would be interesting to see the above Java code transcribed to COBOL, so anyone with the 
necessary skills please give a helping hand for the community! :)


The result would be enabling COBOL programmers to in

COBOL and the Java scripting framework ? (Re: Are there samples of COBOL methods or classes?

2023-06-30 Thread Rony G. Flatscher

On 28.06.2023 17:26, Tom Ross wrote:

Please check out the examples in the COBOL Programming Guide, in
Part 6. Developing object-oriented programs

GO here:https://www.ibm.com/support/pages/node/611415
Select which release you are interested in and then
click "Product Documentation"


thank you, Tom. Could get to <https://www.ibm.com/support/pages/node/611415#64> and from there to 
the programming guide at <https://publibfp.dhe.ibm.com/epubs/pdf/igy6pg40.pdf>.


It seems that OO COBOL allows interacting with Java via JNI (Java native interface) only. 6.4 adds 
the ability to invoke static Java methods without OO COBOL.


Not having any of the necessary infrastructure (mainframe ;) , OO COBOL and Java) there is nothing I 
could do. So maybe just hinting of what would become possible if anyone with the OO COBOL-Java 
skills would come with showing how to code the following Java program in OO COBOL.


Such an example would serve as a nutshell example that would demonstrate how to invoke scripts from 
OO COBOL in any scripting language for which an implementation of javax.script.Engine exists 
including supplying arguments (stored in a Java array of type java.lang.Object) and fetching the result.


To make this as flexible (and thereby as usable) as possible, the following Java program will take 
the name of a file containing a script as a single argument, and then will load with the help of the 
Java scripting framework the appropriate scripting engine to execute the script, and supply as an 
argument the name of a Java system property which the script should return to the caller.


Here the Java code that should be transcribed to COBOL:

   import javax.script.*;
   import java.io.File;
   import java.io.FileReader;

   class Test
   {
public static void main (String args[])
{
if (args.length==0)
{
System.err.println("file name missing...");
System.exit(-1);
}
String fileName = args[0];// get filename
String extension= 
fileName.substring(fileName.lastIndexOf(".")+1);
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEnginese  = sem.getEngineByExtension(extension);

Object result = null;
try
{
ScriptContext sc= se.getContext();
// add filename
sc.setAttribute(se.FILENAME, fileName  , sc.ENGINE_SCOPE);
// add some arbitrary arguments
Object scriptArgs[] = new Object [] { "first", "", "trois", null, 
"cinque" };
sc.setAttribute(se.ARGV, scriptArgs, sc.ENGINE_SCOPE);
// create a FileReader from File
FileReader f= new FileReader(new File(fileName));
result=se.eval(f);  // read and execute script
}
catch (Throwable t)
{
System.err.println("Oops, some exception occurred: "+t);
}
System.out.println("script's result: "+result);
System.exit(0);
}
   }

Here a Rexx file (can be any Rexx script):

   parse source s
   say "source :" s
   parse version v
   say "version:" v
   say "there are" arg() "arguments supplied:"
   do i=1 to arg()
   say "   #" i":" arg(i)
   end
   return 43

The Java program "Test", once compiled can then be used to run any script (not only Rexx) from a 
script file where the file extension determines which scripting language should get loaded to run 
the script in the file. Here an example of running the Java program supplying the name of a file 
containing a Rexx script:


   G:\tmp\bsf4oorexx\cobol>java Test rexxscript.rex
   REXXout>source : WindowsNT SUBROUTINE rexxscript_ori.rex
   REXXout>version: REXX-ooRexx_5.1.0(MT)_64-bit 6.05 6 Jun 2023
   REXXout>there are 6 arguments supplied:
   REXXout>   # 1: first
   REXXout>   # 2:
   REXXout>   # 3: trois
   REXXout>   # 4: The NIL object
   REXXout>   # 5: cinque
   REXXout>   # 6: a Slot.Argument
   script's result: 43

---

The script code can also be supplied directly as a String to the script engine's eval() method 
"res=eval(String scriptCode)", such that you could load the script code from a database in case you 
have it stored as such. The possibilities are endless.


As you can see, one can submit any value/object as an argument to the script and fetch any result of 
the script.


---

It would be interesting to see the above Java code transcribed to COBOL, so anyone with the 
necessary skills please give a helping hand for the community! :)


The result would be enabling COBOL programmers to invoke any kind of scripts in any kind of 
languages from COBO

Re: JAVA started tasks?

2023-06-27 Thread René Jansen
CICS also has a Java domain that is started as a resident part.

René.

> On 23 Jun 2023, at 20:45, Bill Giannelli  wrote:
> 
> Does JAVA have any started tasks on z/OS?
> We have a task that the vendor says needs JAVA "up" first.
> thanks
> Bill
> 
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: JAVA started tasks?

2023-06-26 Thread Shawn Prenevost
Yes your java executables need to be mounted I'm not sure if that mean OMVS
needs to be fully initialized... but Java would spawn USS task I imagine.

On Sat, Jun 24, 2023, 9:18 AM Gord Tomlin 
wrote:

> On 2023-06-23 19:08 PM, Paul Gilmartin wrote:
> > Does Java depend on OMVS?  I've seen messages here about failures
> > before OMVS was ready.
>
> Without OMVS, you won't be able to access
> /usr/lpp/java/J8.0_64/bin/java
> or similar.
>
> --
>
> Regards, Gord Tomlin
> Action Software International
> (a division of Mazda Computer Corporation)
> Tel: (905) 470-7113, Fax: (905) 470-6507
> Support: https://actionsoftware.com/support/
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: JAVA started tasks?

2023-06-24 Thread Gord Tomlin

On 2023-06-23 19:08 PM, Paul Gilmartin wrote:

Does Java depend on OMVS?  I've seen messages here about failures
before OMVS was ready.


Without OMVS, you won't be able to access
   /usr/lpp/java/J8.0_64/bin/java
or similar.

--

Regards, Gord Tomlin
Action Software International
(a division of Mazda Computer Corporation)
Tel: (905) 470-7113, Fax: (905) 470-6507
Support: https://actionsoftware.com/support/

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: JAVA started tasks?

2023-06-23 Thread Paul Gilmartin
On Fri, 23 Jun 2023 14:29:51 -0500, Kirk Wolf wrote:

>I'm not sure what that even means.   Java programs are run by just invoking 
>the JVM and specifying options on which class to run.   The JZOS batch 
>launcher is a z/OS Utility program that will do that for you.   There is no 
>"java subsystem" that needs to be started first.
>
Does Java depend on OMVS?  I've seen messages here about failures
before OMVS was ready.

-- 
gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: JAVA started tasks?

2023-06-23 Thread Shawn Prenevost
To me that sounds like OMVS must be initialized.

On Fri, Jun 23, 2023, 2:36 PM René Jansen 
wrote:

> Someone might mean WebSphere Application Server.
>
> Who knows what people think.
>
> René.
>
> > On 23 Jun 2023, at 21:30, Kirk Wolf  wrote:
> >
> > I'm not sure what that even means.   Java programs are run by just
> invoking the JVM and specifying options on which class to run.   The JZOS
> batch launcher is a z/OS Utility program that will do that for you.   There
> is no "java subsystem" that needs to be started first.
> >
> >
> > Kirk Wolf
> > Dovetailed Technologies
> > https://coztoolkit.com
> >
> >> On Fri, Jun 23, 2023, at 1:45 PM, Bill Giannelli wrote:
> >> Does JAVA have any started tasks on z/OS?
> >> We have a task that the vendor says needs JAVA "up" first.
> >> thanks
> >> Bill
> >>
> >> --
> >> For IBM-MAIN subscribe / signoff / archive access instructions,
> >> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> >>
> >
> > --
> > For IBM-MAIN subscribe / signoff / archive access instructions,
> > send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: JAVA started tasks?

2023-06-23 Thread René Jansen
Someone might mean WebSphere Application Server.

Who knows what people think.

René.

> On 23 Jun 2023, at 21:30, Kirk Wolf  wrote:
> 
> I'm not sure what that even means.   Java programs are run by just invoking 
> the JVM and specifying options on which class to run.   The JZOS batch 
> launcher is a z/OS Utility program that will do that for you.   There is no 
> "java subsystem" that needs to be started first.
> 
> 
> Kirk Wolf
> Dovetailed Technologies
> https://coztoolkit.com
> 
>> On Fri, Jun 23, 2023, at 1:45 PM, Bill Giannelli wrote:
>> Does JAVA have any started tasks on z/OS?
>> We have a task that the vendor says needs JAVA "up" first.
>> thanks
>> Bill
>> 
>> --
>> For IBM-MAIN subscribe / signoff / archive access instructions,
>> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>> 
> 
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: JAVA started tasks?

2023-06-23 Thread Kirk Wolf
I'm not sure what that even means.   Java programs are run by just invoking the 
JVM and specifying options on which class to run.   The JZOS batch launcher is 
a z/OS Utility program that will do that for you.   There is no "java 
subsystem" that needs to be started first.


Kirk Wolf
Dovetailed Technologies
https://coztoolkit.com

On Fri, Jun 23, 2023, at 1:45 PM, Bill Giannelli wrote:
> Does JAVA have any started tasks on z/OS?
> We have a task that the vendor says needs JAVA "up" first.
> thanks
> Bill
> 
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> 

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: JAVA started tasks?

2023-06-23 Thread Phil Smith III
Bill Giannelli wrote:
>Does JAVA have any started tasks on z/OS?
>We have a task that the vendor says needs JAVA "up" first.

Not that I know of. We run Java stuff without starting any STC. Maybe they have 
one??


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


JAVA started tasks?

2023-06-23 Thread Bill Giannelli
Does JAVA have any started tasks on z/OS?
We have a task that the vendor says needs JAVA "up" first.
thanks
Bill

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Takeaway from the mentioned book referring BLAS in context of Python, Java, C ... Re: Mainframe REXX (Re: Badmouthing Rexx and ooRexx - again (Re: zOSMF and zOWE for non-mainframers

2023-03-01 Thread Rony G. Flatscher

On 01.03.2023 15:15, René Jansen wrote:

Well yes - that is really apples and oranges, and thanks for proving my point.

Numpy leverages hand tuned assembly (BLAS) with hinting for different chip 
levels and architectures, and the difference with plain python is shown 
here:https://en.algorithmica.org/hpc/complexity/languages/  You can of course 
integrate OpenBLAS into everything.


... cut ...

The above chapter from the above URL has an interesting Takeaway at the end of that chapter, 
worthwhile citing in the context of this thread:



 # 
Takeaway

   The key lesson here is that using a native, low-level language doesn’t 
necessarily give you
   performance; but it does give you /control/ over performance.

   Complementary to the “N operations per second” simplification, many 
programmers also have a
   misconception that using different programming languages has some sort of 
multiplier on that
   number. Thinking this way and comparing languages
    in 
terms of performance
   doesn’t make much sense: programming languages are fundamentally just tools 
that take away
   /some/ control over performance in exchange for convenient abstractions. 
Regardless of the
   execution environment, it is still largely a programmer’s job to use the 
opportunities that the
   hardware provides.

---rony

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java And Specialty Engines

2022-08-13 Thread Martin Packer
How much JNI, though? That isn't zIIP eligible.

Cheers, Martin

> On 11 Aug 2022, at 23:07, Longnecker, Dennis 
>  wrote:
> 
> We run a lot of JAVA workloads under WebSphere Liberty on our z15.
> 
> We are seeing hardly any utilization on our 2 specialty engines (ziip/zaap).  
>  It is my understanding that ALL java workload is eligible to run under those 
> engines, so it has left me confused.  We are seeing some offloaded DB2 work 
> for the distributed connections, so the engines are working.
> 
> Curious if anyone has any suggestions/thoughts on what we might be missing?  
> All the settings we have chased down look correct.
> 
> Dennis
> 
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

Unless otherwise stated above:

IBM United Kingdom Limited
Registered in England and Wales with number 741598
Registered office: PO Box 41, North Harbour, Portsmouth, Hants. PO6 3AU


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java And Specialty Engines

2022-08-11 Thread Mark Zelden
On Thu, 11 Aug 2022 22:06:57 +, Longnecker, Dennis 
 wrote:

>We run a lot of JAVA workloads under WebSphere Liberty on our z15.
>
>We are seeing hardly any utilization on our 2 specialty engines (ziip/zaap).   
>It is my understanding that ALL java workload is eligible to run under those 
>engines, so it has left me confused.  We are seeing some offloaded DB2 work 
>for the distributed connections, so the engines are working.
>
>Curious if anyone has any suggestions/thoughts on what we might be missing?  
>All the settings we have chased down look correct.
>
>Dennis
>
>--

zAAP on a z15?  Is that even possible?  I didn't think so.   

Running on zAAP is the default but it can be turned off.

 
https://www.ibm.com/docs/en/zos/2.1.0?topic=usage-review-java-parameter-settings

The only other thing I can think off of hand (assuming you only have zIIP 
engines) is "ZAAPZIIP" 
in IEASYSxx,  The default is YES, but it can be turned off and then I assume 
Java being a
zAAP workload wouldn't use zIIP.

If it isn't either of those, have you considered opening a case with IBM? Your 
CPU is certainly
a supported model, but you didn't say anything about OS version, Java version 
or liberty.  


Best Regards,

Mark
--
Mark Zelden - Zelden Consulting Services - z/OS, OS/390 and MVS
ITIL v3 Foundation Certified
mailto:m...@mzelden.com
Mark's MVS Utilities: http://www.mzelden.com/mvsutil.html

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Java And Specialty Engines

2022-08-11 Thread Longnecker, Dennis
We run a lot of JAVA workloads under WebSphere Liberty on our z15.

We are seeing hardly any utilization on our 2 specialty engines (ziip/zaap).   
It is my understanding that ALL java workload is eligible to run under those 
engines, so it has left me confused.  We are seeing some offloaded DB2 work for 
the distributed connections, so the engines are working.

Curious if anyone has any suggestions/thoughts on what we might be missing?  
All the settings we have chased down look correct.

Dennis

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java (Re: Some questions on SYSCALL

2022-07-14 Thread Rony G. Flatscher

Sorry for the late and brief comments (currently a little bit in 
"land-under-water" mode).

On 11.07.2022 10:42, David Crayford wrote:

On 10/07/2022 6:49 pm, Rony wrote:

  Am 09.07.2022 um 03:15 schrieb David Crayford :

On 8/07/2022 7:17 pm, Rony G. Flatscher wrote:

On 07.07.2022 17:45, David Crayford wrote:
On 7/07/2022 7:53 pm, Rony G. Flatscher wrote:

On 06.07.2022 11:03, Seymour J Metz wrote:

... cut ...
There is one ecosystem that beats Perl, Python and practically any others: Java. For every 
problem domain, for new emerging technologies there are Java class libraries which one can 
take advantage of. As Java classes get compiled to intermediate byte code, these Java class 
libraries can be deployed and used immediately on any hardware and any operating system for 
which a Java virtual machine exists.
That's debatable! I'm a full time Java programmer in the last few years and I like. We use 
Spring Boot which is a high quality framework that makes it pleasant to use. I would use SB 
even for a slightly complex command line interface. However, the build systems are a bit 
spotty compared to Node.js, Python etc.

Eclipse, NetBeans, IntelliJ, ...
I build Java in IntelliJ using Maven. Also, we use a DevOps pipeline driven by Jenkins so using 
an IDE is out of the question.




Maven is creaking with it's ugly XML pom.xml and

Beauty lies in the eyes of the beholder ...

Maven is not Java and still an incredible boon!
I agree. I just don't like XML. I would rather use Gradle with it's nice Groovy DSL where I can 
drop down and write code for tricky configurations.




Gradle doesn't work very well on some systems.

What does not work for you?

Would you think that the Java multiplatform build system which is done with Gradle would be 
possible, if that were true what you say?
Gradle doesn't work properly on z/OS. First thing I tried was to nobble spawning the daemon. I 
used AOT -Xshareclasses so start up times were not a problem. However, Gradle was downloading 
lots of unwanted dependencies and filled up the file system cache. I abandoned it and stuck to 
Maven.




C# is a far better language then Java.

Excuse me? 

Off the top of my header.

1. Generics done properly with reflection support, not puny type erasure.
Java retains generics information in byte code (for the compiler) after type erasure (such that 
the runtime does not have to recheck after compilation, after all the compiler checked already).



2. No checked exceptions
One can use no checked exceptions in Java if one wished. OTOH checked exceptions are there and 
one can take advantage of them.


The JRE uses checked exceptions so you can't avoid them. The damage is done. The mess created by 
checked exceptions became more evident when Java 8 introduced Lambda's. There is nothing more ugly 
than a try/catch block in a lambda function. Some people create wrappers but that's just bloat. 
Checked exceptions are widely considered a failed experiment.


This is a very narrow view at the concept of checked exceptions (claiming it to be a "failed 
experiment" is like claiming "coke is a failed experiment", because you prefer water ;) ) and does 
not assess the benefits and misbenefits of exceptions per se, let alone of checked vs. unchecked 
exceptions (there is a good reason why checked exceptions got introduced, such that the compiler can 
detect improper usage of checked exceptions). Having seen quite a lot of Java code exploiting lambda 
functions, I have not really noticed lambda functions that would have to apply a try/catch blocks 
(will from now on look out for it). But even so, if it needs to be stated, so be it, not a problem 
at all.







3. Unsigned integer types

Not really a problem.


It's a problem for our products. We process a lot of unsigned 64-bit integers and perform 
arithmetic such as division and a BigInteger is not acceptable for performance reasons. James 
Gosling admitted that Java didn't implemented unsigned integers as he wanted to keep the language 
simple for new programmers. That's another historical mistake that we are paying the price off. 
Back then Java was designed for very different use cases. Writing cryptographic algorithms in Java 
without an unsigned Long is painful. Gosling's nanny state hand holding hasn't aged well. He 
didn't implement operator overloading because he didn't like the way it was used for iostreams in 
C++. Another BIG mistake that makes the language awkward to use when doing arithmetic on 
BigDecimal, BigInteger types.


BTW, the very existence of Long.divideUnsigned() is proof enough that Java needs unsigned 
integers. In JDK16 they have optimized the function to use an algorithm from Hackers Delight that 
uses twos-complement binary operators. It's a shame we're stuck on JDK8 and the JDK16 code uses an 
unfriendly license for IBM code.


The license is GPL 2 with the classpath exception <https://openjdk.org/legal/gplv2+ce.html>

Re: Java (Re: Some questions on SYSCALL

2022-07-11 Thread David Crayford

On 10/07/2022 6:49 pm, Rony wrote:
  
Am 09.07.2022 um 03:15 schrieb David Crayford :

On 8/07/2022 7:17 pm, Rony G. Flatscher wrote:

On 07.07.2022 17:45, David Crayford wrote:
On 7/07/2022 7:53 pm, Rony G. Flatscher wrote:

On 06.07.2022 11:03, Seymour J Metz wrote:

... cut ...

There is one ecosystem that beats Perl, Python and practically any others: 
Java. For every problem domain, for new emerging technologies there are Java 
class libraries which one can take advantage of. As Java classes get compiled 
to intermediate byte code, these Java class libraries can be deployed and used 
immediately on any hardware and any operating system for which a Java virtual 
machine exists.

That's debatable! I'm a full time Java programmer in the last few years and I 
like. We use Spring Boot which is a high quality framework that makes it 
pleasant to use. I would use SB even for a slightly complex command line 
interface. However, the build systems are a bit spotty compared to Node.js, 
Python etc.

Eclipse, NetBeans, IntelliJ, ...

I build Java in IntelliJ using Maven. Also, we use a DevOps pipeline driven by 
Jenkins so using an IDE is out of the question.



Maven is creaking with it's ugly XML pom.xml and

Beauty lies in the eyes of the beholder ...

Maven is not Java and still an incredible boon!

I agree. I just don't like XML. I would rather use Gradle with it's nice Groovy 
DSL where I can drop down and write code for tricky configurations.



Gradle doesn't work very well on some systems.

What does not work for you?

Would you think that the Java multiplatform build system which is done with 
Gradle would be possible, if that were true what you say?

Gradle doesn't work properly on z/OS. First thing I tried was to nobble 
spawning the daemon. I used AOT -Xshareclasses so start up times were not a 
problem. However, Gradle was downloading lots of unwanted dependencies and 
filled up the file system cache. I abandoned it and stuck to Maven.



C# is a far better language then Java.

Excuse me? 

Off the top of my header.

1. Generics done properly with reflection support, not puny type erasure.

Java retains generics information in byte code (for the compiler) after type 
erasure (such that the runtime does not have to recheck after compilation, 
after all the compiler checked already).


2. No checked exceptions

One can use no checked exceptions in Java if one wished. OTOH checked 
exceptions are there and one can take advantage of them.


The JRE uses checked exceptions so you can't avoid them. The damage is 
done. The mess created by checked exceptions became more evident when 
Java 8 introduced Lambda's. There is nothing more ugly than a try/catch 
block in a lambda function. Some people create wrappers but that's just 
bloat. Checked exceptions are widely considered a failed experiment.






3. Unsigned integer types

Not really a problem.


It's a problem for our products. We process a lot of unsigned 64-bit 
integers and perform arithmetic such as division and a BigInteger is not 
acceptable for performance reasons. James Gosling admitted that Java 
didn't implemented unsigned integers as he wanted to keep the language 
simple for new programmers. That's another historical mistake that we 
are paying the price off. Back then Java was designed for very different 
use cases. Writing cryptographic algorithms in Java without an unsigned 
Long is painful. Gosling's nanny state hand holding hasn't aged well. He 
didn't implement operator overloading because he didn't like the way it 
was used for iostreams in C++. Another BIG mistake that makes the 
language awkward to use when doing arithmetic on BigDecimal, BigInteger 
types.


BTW, the very existence of Long.divideUnsigned() is proof enough that 
Java needs unsigned integers. In JDK16 they have optimized the function 
to use an algorithm from Hackers Delight that uses twos-complement 
binary operators. It's a shame we're stuck on JDK8 and the JDK16 code 
uses an unfriendly license for IBM code.




4. Value types

Not really a problem.


Maybe not for you. It's my understanding that you're an educator that 
teaches stuff like OLE and Windows GUI programming using JavaFX. The 
products I work on are back-end systems that process missions of records 
that originate from z/OS data sources. We need to serialize those binary 
records to other formats such as JSON as efficiently as possible. C# has 
struct value types and pointers (unsafe blocks) which would be brilliant 
for this kind of work. IBM realizes this and have implemented 
PackedObjects in their JDK which use intrinsics. Very similar to structs 
and value types in C#. Shame it's not portable!


https://www.ibm.com/docs/en/sdk-java-technology/7.1?topic=poet-packed-objects-2





5. Better support for functional program, LINQ

How so, which bytecodes do you think of?


I'm talking about FP and LINQ which is C# DSL for functional programming 
which looks a bit like SQL.


https

Re: Java (Re: Some questions on SYSCALL

2022-07-10 Thread Rony
> 
> Am 09.07.2022 um 06:31 schrieb David Crayford :
> 
> On 8/07/2022 7:43 pm, Rony G. Flatscher wrote:
>>> On 08.07.2022 03:38, David Crayford wrote:
>>> On 7/07/2022 7:53 pm, Rony G. Flatscher wrote:
>>>>> When I select a language for a job, one of the things that I look at is 
>>>>> the ecosystem. I prefer ooRexx to Perl, but I find myself using
>>>>> Perl for some tasks because CPAN is an awesome resource. Python may not 
>>>>> be the best language for the task at hand, but it pays to check what 
>>>>> packages are available.
>>>> 
>>>> Indeed Perl and Python have a great wealth of libraries available to them.
>>>> 
>>>> There is one ecosystem that beats Perl, Python and practically any others: 
>>>> Java
>>> 
>>> According to http://www.modulecounts.com/ which shows the number of unique 
>>> packages
>> 
>> Methodology: "... Data is collected /by scraping the relevant websites /once 
>> a day via a cron job and then stored in a Postgresql database for later 
>> retrieval. Growth rates are calculated by averaging data over the last week. 
>> I'm gathering counts of separate modules, so multiple versions of the same 
>> module/package/gem only count once (foo-1.2, foo-1.3 and bar-1.0 would count 
>> as 2 total).  ..."
>> 
>> Questioning the methodology, completeness, correctness and as a result the 
>> relevance. Did not find any checkbox for Java there hence wondering where 
>> your Java figures come from.
> 
> It gets the Java figures from Maven Central https://search.maven.org/stats. 
> There is no denying that Java has an gigantic eco-system. And a hell of a lot 
> of it is top notch. The product I'm currently working on wouldn't exist 
> without Java open source.
> 
> 
>> 
>>> Node.js   2019534
>>> Java   483102
>>> Python  386118
>>> Perl  18354
>>> 
>>> So the undisputed winner as far as ecosystem is JavaScript. 
>> 
>> This may be more an indication that there are many shortcomings and many 
>> packages by different authors that try to make the same needed 
>> functionalities available.
>> 
>> ... cut ...
>> 
>> Ad Java: JRE comes already with a wealth of packages on board that are 
>> add-ons in other languages.
> 
> The gripe I have is that what comes with the JRE is typically not as good as 
> open source. For example, JDK 11 finally included a half decent HttpClient 
> but it doesn't support anyway near the feature set of open source clients 
> such as OkHttp or Jetty 
> https://www.mocklab.io/blog/which-java-http-client-should-i-use-in-2020/. To 
> my knowledge there is still no support for JSON or Yaml even in JDK 18.
There are Java libraries for it.

Ad Java evolution, maintenance, here a nice overview:  
https://en.wikipedia.org/wiki/Java_version_history, covering Java 1 through 19 
and giving a brief outlook (there would be more on the openjdk.org homepage, 
look for the JEP - Java enhancement proposals - projects for Java).


>> 
>> In addition, almost all important business applications have Java APIs such 
>> that one can regard such applications as additional Java packages (e.g. 
>> OpenOffice/LibreOffice mainly implemented in C++ gained Java APIs and the 
>> ability to implement modules in Java; one result is the creation of a Java 
>> scripting framework for OpenOffice/LibreOffice which allows any language for 
>> which a javax.script implementation exists to be used as a scripting and 
>> macro language; one example for this comes with BSF4ooRexx).
>> 
>> Or think of the JDBC packages of the different database vendors, or ...
>> 
>>> I just downloaded vsam.js to process a VSAM data set in Node on z/OS and it 
>>> works well. IBM are certainly giving
>>> Node more love then REXX which will never officially support VSAM.
>> 
>> Indeed this is strange that IBM does not support REXX the same as other 
>> technologies.
> 
> IBM also provide a VSAM I/O module for Go 
> https://github.com/ibmruntimes/go-recordio.
> 
> 
>> 
>> Has that possibly to do (wild guess) that the developers do not know how to 
>> create REXX APIs on the mainframe? As probably C++ has a role here, then 
>> probably CMake based ooRexx 5 with its C++ APIs would make the creation of 
>> external ooRexx function libraries quite simple on the mainframe as well 
>> (judging from the existence of "z/OS XL C/C++ Library Reference SA22-7821" 
>> and "z/OS XL C/C++ Programming Guide SC09-4765&q

Re: Java (Re: Some questions on SYSCALL

2022-07-10 Thread Rony
 
Am 09.07.2022 um 03:15 schrieb David Crayford :
> 
> On 8/07/2022 7:17 pm, Rony G. Flatscher wrote:
>>> On 07.07.2022 17:45, David Crayford wrote:
>>> On 7/07/2022 7:53 pm, Rony G. Flatscher wrote:
>>>> On 06.07.2022 11:03, Seymour J Metz wrote:
>> ... cut ...
>>>> 
>>>> There is one ecosystem that beats Perl, Python and practically any others: 
>>>> Java. For every problem domain, for new emerging technologies there are 
>>>> Java class libraries which one can take advantage of. As Java classes get 
>>>> compiled to intermediate byte code, these Java class libraries can be 
>>>> deployed and used immediately on any hardware and any operating system for 
>>>> which a Java virtual machine exists.
>>> 
>>> That's debatable! I'm a full time Java programmer in the last few years and 
>>> I like. We use Spring Boot which is a high quality framework that makes it 
>>> pleasant to use. I would use SB even for a slightly complex command line 
>>> interface. However, the build systems are a bit spotty compared to Node.js, 
>>> Python etc. 
>> Eclipse, NetBeans, IntelliJ, ...
> 
> I build Java in IntelliJ using Maven. Also, we use a DevOps pipeline driven 
> by Jenkins so using an IDE is out of the question.
> 
> 
>>> Maven is creaking with it's ugly XML pom.xml and
>> 
>> Beauty lies in the eyes of the beholder ...
>> 
>> Maven is not Java and still an incredible boon!
> 
> I agree. I just don't like XML. I would rather use Gradle with it's nice 
> Groovy DSL where I can drop down and write code for tricky configurations.
> 
> 
>> 
>>> Gradle doesn't work very well on some systems.
>> 
>> What does not work for you?
>> 
>> Would you think that the Java multiplatform build system which is done with 
>> Gradle would be possible, if that were true what you say?
> 
> Gradle doesn't work properly on z/OS. First thing I tried was to nobble 
> spawning the daemon. I used AOT -Xshareclasses so start up times were not a 
> problem. However, Gradle was downloading lots of unwanted dependencies and 
> filled up the file system cache. I abandoned it and stuck to Maven.
> 
> 
>> 
>>> C# is a far better language then Java. 
>> 
>> Excuse me? 
> 
> Off the top of my header.
> 
> 1. Generics done properly with reflection support, not puny type erasure.
Java retains generics information in byte code (for the compiler) after type 
erasure (such that the runtime does not have to recheck after compilation, 
after all the compiler checked already).

> 2. No checked exceptions
One can use no checked exceptions in Java if one wished. OTOH checked 
exceptions are there and one can take advantage of them.

> 3. Unsigned integer types
Not really a problem.

> 4. Value types
Not really a problem.

> 5. Better support for functional program, LINQ
How so, which bytecodes do you think of?

> 6. Better enumeration support, with the yield|| statement
Hmm? Actually I would be interested about what you are missing in Java‘s enum 
support.

> I could go on. I don't use C# but I spent a weekend learning it and it's a 
> great language. Kotlin has similar features but is crippled by the JVM. For 
> example, there is no byte code support for unsigned integers.
There is also no real need for it (and if really needed for conversions there 
are the appropriate methods defined in the wrapper classes). 

> 
>> Kotlin meets 95% of the requirements but we dismissed it because it's not 
>> mainstream so we're stuck with Java.
Kotlin is by JetBrains (makers of IntelliJ), Google endorsing it for having a 
Java alternative for creating Android applications. 

„Stuck“ is not really true: Kotlin compiles to Java bytecode which you can use 
as if that bytecode was created by a Java compiler.

The same holds for NetRexx programs: they get transpiled to Java source code 
(you can save that code and inspect it vis-a-vis your NetRexx source code) 
which then gets compiled to Java byte code. The resulting compiled NetRexx 
program in form of the Java bytecode can be used as if it was created by the 
Java compiler (which it did :) ).

>> 
>> Poor you! ;)
>> (You got stuck in one of the most up-to-date and maintained languages and 
>> environments that sets you free from being locked-in in a specific platform.)
>> 
> I use Java every day. I'm happy to use it. But I disagree that it's on of the 
> most up-to-date languages. There differences between Java 8 and Java 16 are 
> so insignificant it's worth upgrading.
> 
> 
>> 
>>> Yes. But you need to use Open Source libraries for it to be easy to use. 
>>> The JRE 

Re: Java (Re: Some questions on SYSCALL

2022-07-08 Thread David Crayford

On 8/07/2022 7:43 pm, Rony G. Flatscher wrote:

On 08.07.2022 03:38, David Crayford wrote:

On 7/07/2022 7:53 pm, Rony G. Flatscher wrote:
When I select a language for a job, one of the things that I look 
at is the ecosystem. I prefer ooRexx to Perl, but I find myself using
Perl for some tasks because CPAN is an awesome resource. Python may 
not be the best language for the task at hand, but it pays to check 
what packages are available.


Indeed Perl and Python have a great wealth of libraries available to 
them.


There is one ecosystem that beats Perl, Python and practically any 
others: Java


According to http://www.modulecounts.com/ which shows the number of 
unique packages


Methodology: "... Data is collected /by scraping the relevant websites 
/once a day via a cron job and then stored in a Postgresql database 
for later retrieval. Growth rates are calculated by averaging data 
over the last week. I'm gathering counts of separate modules, so 
multiple versions of the same module/package/gem only count once 
(foo-1.2, foo-1.3 and bar-1.0 would count as 2 total).  ..."


Questioning the methodology, completeness, correctness and as a result 
the relevance. Did not find any checkbox for Java there hence 
wondering where your Java figures come from.


It gets the Java figures from Maven Central 
https://search.maven.org/stats. There is no denying that Java has an 
gigantic eco-system. And a hell of a lot of it is top notch. The product 
I'm currently working on wouldn't exist without Java open source.






Node.js   2019534
Java       483102
Python  386118
Perl      18354

So the undisputed winner as far as ecosystem is JavaScript. 


This may be more an indication that there are many shortcomings and 
many packages by different authors that try to make the same needed 
functionalities available.


... cut ...

Ad Java: JRE comes already with a wealth of packages on board that are 
add-ons in other languages.


The gripe I have is that what comes with the JRE is typically not as 
good as open source. For example, JDK 11 finally included a half decent 
HttpClient but it doesn't support anyway near the feature set of open 
source clients such as OkHttp or Jetty 
https://www.mocklab.io/blog/which-java-http-client-should-i-use-in-2020/. 
To my knowledge there is still no support for JSON or Yaml even in JDK 18.





In addition, almost all important business applications have Java APIs 
such that one can regard such applications as additional Java packages 
(e.g. OpenOffice/LibreOffice mainly implemented in C++ gained Java 
APIs and the ability to implement modules in Java; one result is the 
creation of a Java scripting framework for OpenOffice/LibreOffice 
which allows any language for which a javax.script implementation 
exists to be used as a scripting and macro language; one example for 
this comes with BSF4ooRexx).


Or think of the JDBC packages of the different database vendors, or ...

I just downloaded vsam.js to process a VSAM data set in Node on z/OS 
and it works well. IBM are certainly giving

Node more love then REXX which will never officially support VSAM.


Indeed this is strange that IBM does not support REXX the same as 
other technologies.


IBM also provide a VSAM I/O module for Go 
https://github.com/ibmruntimes/go-recordio.





Has that possibly to do (wild guess) that the developers do not know 
how to create REXX APIs on the mainframe? As probably C++ has a role 
here, then probably CMake based ooRexx 5 with its C++ APIs would make 
the creation of external ooRexx function libraries quite simple on the 
mainframe as well (judging from the existence of "z/OS XL C/C++ 
Library Reference SA22-7821" and "z/OS XL C/C++ Programming Guide 
SC09-4765").


The REXX programming services on z/OS are built for assembler. Bridging 
to C/C++ can be done. I have code to do that but it's tricky. Porting 
ooRexx to z/OS is very difficult. I actually managed to build it around 
2008. If you look in the oorexx-devel archives you will se conversations 
between myself and Rick McGuire. There is a lot of weird pthread stuff 
intertwined with message passing that made it unsuitable for running in 
an ISPF environment. I put it in the too-hard basket and a a couple of 
years later discovered Lua which was simple to port and unbelievably 
effecient. Several orders of magnitude faster than TSO REXX.




But then, if ooRexx and BSF4ooRexx were there (and they are available 
in the Linux subsystem), then one can use ooRexx to exploit 
com.ibm.jzos.ZFile (there seem to be samples on the Internet that 
demonstrate using it 
<https://www.ibm.com/docs/en/sdk-java-technology/7?topic=SSYKE2_7.0.0/com.ibm.java.zsecurity.api.70.doc/com.ibm.jzos/com/ibm/jzos/sample/vsam/file/package-summary.html>).


The first requirement from users on this list would be to run ooRexx 
from TSO. The vast majority of z/OS folks don't know how to use a shell. 
I was spea

Re: BSF? [was: RE: Java (Re: Some questions on SYSCALL)]

2022-07-08 Thread CM Poncelet
"TSO/E Version 2 Procedures Language MVS/REXX, SC28-1883-1"
 
"Stop disingenuously picking on him." Is that so?
 
The "SYSCALL" in REXX is an ADDRESS SYSCALL under the covers - similar
to ADDRESS IPCS/MVS/TSO/ISREDIT or whatever other else. It is the
"ADDRESS" that belongs in REXX. "SYSCALL" is a CLIST
instruction/directive/function/command/call/enhancement/enterprise/whatever-else,
as per the example I gave of using it.
 
What matters is what SYSCALL does and how it does it - not what it is
called
(instruction/directive/function/command/call/enhancement/enterprise or
whatever-else waffle.)
 
Pardon me, but I am merely a retired systems programming consultant who
did not graduate to hifalutin systems poetry.
 
BTW The spelling "Rexx" applies to non-IBM versions (including Mike
Cowlishaw's.) In IBM's spelling, it is "REXX" (from "Restructed EXtended
eXecutor.")
  
HTH
 

On 08/07/2022 03:12, Paul Gilmartin wrote:
> On Fri, 8 Jul 2022 02:38:38 +0100, CM Poncelet wrote:
>
>> Without meaning to bump into what might be off topic, SYSCALL is
>> actually a CLIST instruction - not a REXX one (unless it's a case of
>> "nous avons changé tout ça")
>>    
> When Charles started this thread on June 28, he made it clear that he
> was discussing Rexx, despite a couple naive errors.  Stop disingenuously
> picking on him.
>
> SYSCALL belongs in Rexx, where it is not an instruction but a
> command environment.
> GIYF: 
> .
>

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java (Re: Some questions on SYSCALL

2022-07-08 Thread David Crayford

On 8/07/2022 7:17 pm, Rony G. Flatscher wrote:

On 07.07.2022 17:45, David Crayford wrote:

On 7/07/2022 7:53 pm, Rony G. Flatscher wrote:

On 06.07.2022 11:03, Seymour J Metz wrote:

... cut ...


There is one ecosystem that beats Perl, Python and practically any 
others: Java. For every problem domain, for new emerging 
technologies there are Java class libraries which one can take 
advantage of. As Java classes get compiled to intermediate byte 
code, these Java class libraries can be deployed and used 
immediately on any hardware and any operating system for which a 
Java virtual machine exists.


That's debatable! I'm a full time Java programmer in the last few 
years and I like. We use Spring Boot which is a high quality 
framework that makes it pleasant to use. I would use SB even for a 
slightly complex command line interface. However, the build systems 
are a bit spotty compared to Node.js, Python etc. 

Eclipse, NetBeans, IntelliJ, ...


I build Java in IntelliJ using Maven. Also, we use a DevOps pipeline 
driven by Jenkins so using an IDE is out of the question.




Maven is creaking with it's ugly XML pom.xml and


Beauty lies in the eyes of the beholder ...

Maven is not Java and still an incredible boon!


I agree. I just don't like XML. I would rather use Gradle with it's nice 
Groovy DSL where I can drop down and write code for tricky configurations.






Gradle doesn't work very well on some systems.


What does not work for you?

Would you think that the Java multiplatform build system which is done 
with Gradle would be possible, if that were true what you say?


Gradle doesn't work properly on z/OS. First thing I tried was to nobble 
spawning the daemon. I used AOT -Xshareclasses so start up times were 
not a problem. However, Gradle was downloading lots of unwanted 
dependencies and filled up the file system cache. I abandoned it and 
stuck to Maven.





C# is a far better language then Java. 


Excuse me? 


Off the top of my header.

1. Generics done properly with reflection support, not puny type erasure.
2. No checked exceptions
3. Unsigned integer types
4. Value types
5. Better support for functional program, LINQ
6. Better enumeration support, with the yield|| statement

I could go on. I don't use C# but I spent a weekend learning it and it's 
a great language. Kotlin has similar features but is crippled by the 
JVM. For example, there is no byte code support for unsigned integers.



Kotlin meets 95% of the requirements but we dismissed it because it's 
not mainstream so we're stuck with Java.


Poor you! ;)
(You got stuck in one of the most up-to-date and maintained languages 
and environments that sets you free from being locked-in in a specific 
platform.)


I use Java every day. I'm happy to use it. But I disagree that it's on 
of the most up-to-date languages. There differences between Java 8 and 
Java 16 are so insignificant it's worth upgrading.





Yes. But you need to use Open Source libraries for it to be easy to 
use. The JRE doesn't cut it.


Hmm?

The JRE includes a wealth of functionality, a wealth of packages that 
in other languages are only available as add-ons.


However, we still need libraries such as Google Guava, Apache Commons, 
Lombok to plug the gaps.







Seeing the OpenJDK (open-source Java) community and how vigorously 
Java gets developed further, continually updated in critical areas 
like security, there is no end in sight for this great ecosystem. 
Witnessing also OpenJDK distributions (from Java 8 LTS to the latest 
Java 18) from IBM, Amazon, SAP, even Microsoft, and many, many more 
competent and leading IT-related companies, the support for Java is 
unique compared to any other software there is. 


One of the reasons for the surge in C++ is because Java is flabby. 


Flabby? 
ROTFL


I stand by my comment. It doesn't mean I dislike Java. I like it a lot.




It's uses a huge amount of memory and GC is costly in visualized 
environments. 


That is just not true as many of the other statements. You seem to not 
really have followed the huge work and improvements over the decades 
and the state.


Yes it is. I work on z/OS performance monitoring products. One of our 
monitors is for the z/OS JVM. I see the metrics every day. The JVM 
starts about 8 threads. 2 for JIT, 3 for GC, 3 for OMR and some others I 
can't remember. It will do that even if you run a hello world program. 
Some of our products are written
in Java and we have to write documentation on how to tune the heap so GC 
cycles don't go crazy. Memory requirements for Java is eye watering 
compared to native code. The equivalent product written in C++ would use 
a fraction of the resources. One of the big plus point for Java on z/OS 
is that it runs on zIIP processors.


We use Spring Boot and are keeping an eye on Spring Boot Native which 
compiles to native code using GraalVM. As containers become the dominant 
deployment environment this will make a big difference for Java

Re: Java (Re: Some questions on SYSCALL

2022-07-08 Thread Rony G. Flatscher

On 08.07.2022 03:38, David Crayford wrote:

On 7/07/2022 7:53 pm, Rony G. Flatscher wrote:
When I select a language for a job, one of the things that I look at is the ecosystem. I prefer 
ooRexx to Perl, but I find myself using
Perl for some tasks because CPAN is an awesome resource. Python may not be the best language for 
the task at hand, but it pays to check what packages are available.


Indeed Perl and Python have a great wealth of libraries available to them.

There is one ecosystem that beats Perl, Python and practically any others: Java


According to http://www.modulecounts.com/ which shows the number of unique 
packages


Methodology: "... Data is collected /by scraping the relevant websites /once a day via a cron job 
and then stored in a Postgresql database for later retrieval. Growth rates are calculated by 
averaging data over the last week. I'm gathering counts of separate modules, so multiple versions of 
the same module/package/gem only count once (foo-1.2, foo-1.3 and bar-1.0 would count as 2 total).  ..."


Questioning the methodology, completeness, correctness and as a result the relevance. Did not find 
any checkbox for Java there hence wondering where your Java figures come from.



Node.js   2019534
Java       483102
Python  386118
Perl      18354

So the undisputed winner as far as ecosystem is JavaScript. 


This may be more an indication that there are many shortcomings and many packages by different 
authors that try to make the same needed functionalities available.


... cut ...

Ad Java: JRE comes already with a wealth of packages on board that are add-ons 
in other languages.

In addition, almost all important business applications have Java APIs such that one can regard such 
applications as additional Java packages (e.g. OpenOffice/LibreOffice mainly implemented in C++ 
gained Java APIs and the ability to implement modules in Java; one result is the creation of a Java 
scripting framework for OpenOffice/LibreOffice which allows any language for which a javax.script 
implementation exists to be used as a scripting and macro language; one example for this comes with 
BSF4ooRexx).


Or think of the JDBC packages of the different database vendors, or ...

I just downloaded vsam.js to process a VSAM data set in Node on z/OS and it works well. IBM are 
certainly giving

Node more love then REXX which will never officially support VSAM.


Indeed this is strange that IBM does not support REXX the same as other 
technologies.

Has that possibly to do (wild guess) that the developers do not know how to create REXX APIs on the 
mainframe? As probably C++ has a role here, then probably CMake based ooRexx 5 with its C++ APIs 
would make the creation of external ooRexx function libraries quite simple on the mainframe as well 
(judging from the existence of "z/OS XL C/C++ Library Reference SA22-7821" and "z/OS XL C/C++ 
Programming Guide SC09-4765").


But then, if ooRexx and BSF4ooRexx were there (and they are available in the Linux subsystem), then 
one can use ooRexx to exploit com.ibm.jzos.ZFile (there seem to be samples on the Internet that 
demonstrate using it 
<https://www.ibm.com/docs/en/sdk-java-technology/7?topic=SSYKE2_7.0.0/com.ibm.java.zsecurity.api.70.doc/com.ibm.jzos/com/ibm/jzos/sample/vsam/file/package-summary.html>).


---rony


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java (Re: Some questions on SYSCALL

2022-07-08 Thread Rony G. Flatscher

On 07.07.2022 17:45, David Crayford wrote:

On 7/07/2022 7:53 pm, Rony G. Flatscher wrote:

On 06.07.2022 11:03, Seymour J Metz wrote:

... cut ...


There is one ecosystem that beats Perl, Python and practically any others: Java. For every 
problem domain, for new emerging technologies there are Java class libraries which one can take 
advantage of. As Java classes get compiled to intermediate byte code, these Java class libraries 
can be deployed and used immediately on any hardware and any operating system for which a Java 
virtual machine exists.


That's debatable! I'm a full time Java programmer in the last few years and I like. We use Spring 
Boot which is a high quality framework that makes it pleasant to use. I would use SB even for a 
slightly complex command line interface. However, the build systems are a bit spotty compared to 
Node.js, Python etc. 

Eclipse, NetBeans, IntelliJ, ...

Maven is creaking with it's ugly XML pom.xml and


Beauty lies in the eyes of the beholder ...

Maven is not Java and still an incredible boon!


Gradle doesn't work very well on some systems.


What does not work for you?

Would you think that the Java multiplatform build system which is done with Gradle would be 
possible, if that were true what you say?


C# is a far better language then Java. 


Excuse me? 

When Microsoft lost their lawsuit against Sun about not adhering to the signed Java license 
(remember J#?) which stated among other things that Microsoft was not allowed to create Java classes 
such that they become dependent on the Microsoft operating system (a lock-in strategy and attempting 
to harm Java's "write once, run anywhere" goal), Microsoft started with an alternative to Java and 
eventually came up with .Net/CLR and C# (later F#, VB.Net and the like).


I don't use it because I because I'm not a Windows guy but I look on in envy. 


If you were to do that for no obvious reasons other that you personally "like it", it would be a 
move to get into a Microsoft lock-in without a need.


Java has been the break-free-from-lock-ins alternative for decades. Java allows you to run your 
applications on Windows, but also on MacOS or Linux or ...



Kotlin meets 95% of the requirements but we dismissed it because it's not mainstream so we're 
stuck with Java.


Poor you! ;)
(You got stuck in one of the most up-to-date and maintained languages and environments that sets you 
free from being locked-in in a specific platform.)



I was surprised to notice when I followed Timothy's link to the TIOBE index that C++ is about to 
leapfrog Java. https://www.tiobe.com/tiobe-index/.  The article cites rapid standard rollouts and 
ground breaking new features such as co-routines. As a Lua fan I can't for C++ co-routines. On 
TIOBE Lua has raced back into the top 20 which is due to the surging popularity of gaming 
frameworks such as Roblox.


So you follow the mainstream and when the set of currently reported popular languages changes, you 
change the language because of it and bad-mouth any other language?


You do not choose the language depending on the problem and 
environment/infrastructure at hand to solve?

... cut ...





The Java runtime environment (JRE) already comes with a wealth of professional and tested class 
libraries covering practically all aspects of modern programming, covering everything that any 
modern application may have a need to exploit and interact with.


Yes. But you need to use Open Source libraries for it to be easy to use. The 
JRE doesn't cut it.


Hmm?

The JRE includes a wealth of functionality, a wealth of packages that in other languages are only 
available as add-ons.






Seeing the OpenJDK (open-source Java) community and how vigorously Java gets developed further, 
continually updated in critical areas like security, there is no end in sight for this great 
ecosystem. Witnessing also OpenJDK distributions (from Java 8 LTS to the latest Java 18) from 
IBM, Amazon, SAP, even Microsoft, and many, many more competent and leading IT-related companies, 
the support for Java is unique compared to any other software there is. 


One of the reasons for the surge in C++ is because Java is flabby. 


Flabby? 
ROTFL


It's uses a huge amount of memory and GC is costly in visualized environments. 


That is just not true as many of the other statements. You seem to not really have followed the huge 
work and improvements over the decades and the state.


(Though your statement may be true for C# and .Net/CLR. ;) )

GraalVM is a valiant attempt to solve that problem. 


Nope. The scope is different and interesting (trying to have a common interface standard for 
various, specific languages among them C and C++, which you might faultily take as a weak sign of C 
and C++?).


Anyway, your statements at times seem to be directed ad bad mouthing technologies even if they are 
unsubstantiated, maybe for igniting flames or creating false - emotional - impressio

Re: BSF? [was: RE: Java (Re: Some questions on SYSCALL)]

2022-07-07 Thread Paul Gilmartin
On Fri, 8 Jul 2022 02:38:38 +0100, CM Poncelet wrote:

>Without meaning to bump into what might be off topic, SYSCALL is
>actually a CLIST instruction - not a REXX one (unless it's a case of
>"nous avons changé tout ça")
>   
When Charles started this thread on June 28, he made it clear that he
was discussing Rexx, despite a couple naive errors.  Stop disingenuously
picking on him.

SYSCALL belongs in Rexx, where it is not an instruction but a
command environment.
GIYF: 
.

-- 
gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java (Re: Some questions on SYSCALL

2022-07-07 Thread David Crayford

On 7/07/2022 7:53 pm, Rony G. Flatscher wrote:
When I select a language for a job, one of the things that I look at 
is the ecosystem. I prefer ooRexx to Perl, but I find myself using
Perl for some tasks because CPAN is an awesome resource. Python may 
not be the best language for the task at hand, but it pays to check 
what packages are available.


Indeed Perl and Python have a great wealth of libraries available to 
them.


There is one ecosystem that beats Perl, Python and practically any 
others: Java


According to http://www.modulecounts.com/ which shows the number of 
unique packages


Node.js   2019534
Java       483102
Python  386118
Perl      18354

So the undisputed winner as far as ecosystem is JavaScript. And it's 
growing the fastest. I just downloaded vsam.js to process a VSAM data 
set in Node on z/OS and it works well. IBM are certainly giving

Node more love then REXX which will never officially support VSAM.

https://www.npmjs.com/package/vsam.js?S_TACT=


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: BSF? [was: RE: Java (Re: Some questions on SYSCALL)]

2022-07-07 Thread CM Poncelet
Without meaning to bump into what might be off topic, SYSCALL is
actually a CLIST instruction - not a REXX one (unless it's a case of
"nous avons changé tout ça")
 
E.g.
HELP_SELECT: +
 SELECT ()
   WHEN (UP) DO
 SET HPAN =  - 1
 *SYSCALL* MAXV HPAN HELPTOP
 ENDO
   WHEN (DOWN) DO
 SET HPAN =  + 1
 *SYSCALL* MINV HPAN HELPBOT
 ENDO
   OTHERWISE
   ENDO HELP_SELECT
 ISPEXEC DISPLAY PANEL(HELPANL)
 ENDO
<...>
/*---*/
/* SUB-PROCEDURE MINV    */
/*---*/
MINV: +
  PROC 0 +
    HPAN HELPBOT
  CONTROL END(ENDO)
  SYSREF +
    HPAN HELPBOT
  IF () > () THEN +
    SET HPAN = 
  ELSE
  RETURN
  ENDO MINV
/*---*/
/* SUB-PROCEDURE MAXV    */
/*---*/
MAXV: +
  PROC 0 +
    HPAN HELPTOP
  CONTROL END(ENDO)
  SYSREF +
    HPAN HELPTOP
  IF () < () THEN +
    SET HPAN = 
  ELSE
  RETURN
  ENDO MAXV
 


On 07/07/2022 19:01, Paul Gilmartin wrote:
> (This thread should move to comp.lang.advocacy.)
>
> On Thu, 7 Jul 2022 16:40:08 +, Farley, Peter x23353 wrote:
>
>> OK, I'll bite: What is BSF please?  I do know of PCRE (though I really do 
>> not like the Perl RE syntax, I prefer Posix/gawk RE syntax) but BSF is a new 
>> acronym to me.
>>
> I try to keep my skill set portable.  I avoid Bash-isms, {g|n}awk, ...  Now 
> that you say PCRE
> is different, my interest in it is diminished.
>
> It seems to me that many users of {g|n}awk learned a primitive awk lacking 
> many features
> such as tolowerr(), touppor(), the "in" operator, ... now assimilated in 
> POSIX awk.
>  

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: BSF? [was: RE: Java (Re: Some questions on SYSCALL)]

2022-07-07 Thread Seymour J Metz
I don't like any RE syntax that derives from Eunix, but it's too powerful to 
ignore, especially the flavors that have named captures. Unless I'm compelkled 
toi use something with POSIX syntax, I stick to more powerful versions.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Paul Gilmartin [042bfe9c879d-dmarc-requ...@listserv.ua.edu]
Sent: Thursday, July 7, 2022 2:01 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: BSF? [was: RE: Java (Re: Some questions on SYSCALL)]

(This thread should move to comp.lang.advocacy.)

On Thu, 7 Jul 2022 16:40:08 +, Farley, Peter x23353 wrote:

>OK, I'll bite: What is BSF please?  I do know of PCRE (though I really do not 
>like the Perl RE syntax, I prefer Posix/gawk RE syntax) but BSF is a new 
>acronym to me.
>
I try to keep my skill set portable.  I avoid Bash-isms, {g|n}awk, ...  Now 
that you say PCRE
is different, my interest in it is diminished.

It seems to me that many users of {g|n}awk learned a primitive awk lacking many 
features
such as tolowerr(), touppor(), the "in" operator, ... now assimilated in POSIX 
awk.

--
gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: BSF? [was: RE: Java (Re: Some questions on SYSCALL)]

2022-07-07 Thread Paul Gilmartin
(This thread should move to comp.lang.advocacy.)

On Thu, 7 Jul 2022 16:40:08 +, Farley, Peter x23353 wrote:

>OK, I'll bite: What is BSF please?  I do know of PCRE (though I really do not 
>like the Perl RE syntax, I prefer Posix/gawk RE syntax) but BSF is a new 
>acronym to me.
> 
I try to keep my skill set portable.  I avoid Bash-isms, {g|n}awk, ...  Now 
that you say PCRE
is different, my interest in it is diminished.

It seems to me that many users of {g|n}awk learned a primitive awk lacking many 
features
such as tolowerr(), touppor(), the "in" operator, ... now assimilated in POSIX 
awk.
 
-- 
gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: BSF? [was: RE: Java (Re: Some questions on SYSCALL)]

2022-07-07 Thread Seymour J Metz
bsf4oorexx is a bridge between oorexx and java; it lets an oorexx programmer 
use java classes and methods.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Farley, Peter x23353 [031df298a9da-dmarc-requ...@listserv.ua.edu]
Sent: Thursday, July 7, 2022 12:40 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: BSF? [was: RE: Java (Re: Some questions on SYSCALL)]

OK, I'll bite: What is BSF please?  I do know of PCRE (though I really do not 
like the Perl RE syntax, I prefer Posix/gawk RE syntax) but BSF is a new 
acronym to me.

-Original Message-
From: IBM Mainframe Discussion List  On Behalf Of 
Seymour J Metz
Sent: Thursday, July 7, 2022 8:55 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Java (Re: Some questions on SYSCALL



BSF has been available for a long time; why doesn't every Rexx programmer know 
about it and PCRE? Thanks for putting in the work.
--

This message and any attachments are intended only for the use of the addressee 
and may contain information that is privileged and confidential. If the reader 
of the message is not the intended recipient or an authorized representative of 
the intended recipient, you are hereby notified that any dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by e-mail and delete the message and any 
attachments from your system.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


BSF? [was: RE: Java (Re: Some questions on SYSCALL)]

2022-07-07 Thread Farley, Peter x23353
OK, I'll bite: What is BSF please?  I do know of PCRE (though I really do not 
like the Perl RE syntax, I prefer Posix/gawk RE syntax) but BSF is a new 
acronym to me.

-Original Message-
From: IBM Mainframe Discussion List  On Behalf Of 
Seymour J Metz
Sent: Thursday, July 7, 2022 8:55 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Java (Re: Some questions on SYSCALL



BSF has been available for a long time; why doesn't every Rexx programmer know 
about it and PCRE? Thanks for putting in the work.
--

This message and any attachments are intended only for the use of the addressee 
and may contain information that is privileged and confidential. If the reader 
of the message is not the intended recipient or an authorized representative of 
the intended recipient, you are hereby notified that any dissemination of this 
communication is strictly prohibited. If you have received this communication 
in error, please notify us immediately by e-mail and delete the message and any 
attachments from your system.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java (Re: Some questions on SYSCALL

2022-07-07 Thread David Crayford

On 7/07/2022 7:53 pm, Rony G. Flatscher wrote:

On 06.07.2022 11:03, Seymour J Metz wrote:
When I select a language for a job, one of the things that I look at 
is the ecosystem. I prefer ooRexx to Perl, but I find myself using
Perl for some tasks because CPAN is an awesome resource. Python may 
not be the best language for the task at hand, but it pays to check 
what packages are available.


Indeed Perl and Python have a great wealth of libraries available to 
them.


Perls moribund. It's fallen off a cliff since it's heyday. Same with 
Ruby. Poorly designed programming languages only last as long as there 
is nothing better to replace them.


https://trends.google.com/trends/explore?date=all=%2Fm%2F05zrn



There is one ecosystem that beats Perl, Python and practically any 
others: Java. For every problem domain, for new emerging technologies 
there are Java class libraries which one can take advantage of. As 
Java classes get compiled to intermediate byte code, these Java class 
libraries can be deployed and used immediately on any hardware and any 
operating system for which a Java virtual machine exists.


That's debatable! I'm a full time Java programmer in the last few years 
and I like. We use Spring Boot which is a high quality framework that 
makes it pleasant to use. I would use SB even for a slightly complex 
command line interface. However, the build systems are a bit spotty 
compared to Node.js, Python etc. Maven is creaking with it's ugly XML 
pom.xml and Gradle doesn't work very well on some systems. In 
particular, z/OS. C# is a far better language then Java. I don't use it 
because I because I'm not a Windows guy but I look on in envy. Kotlin 
meets 95% of the requirements but we dismissed it because it's not 
mainstream so we're stuck with Java.


I was surprised to notice when I followed Timothy's link to the TIOBE 
index that C++ is about to leapfrog Java. 
https://www.tiobe.com/tiobe-index/.  The article cites rapid standard 
rollouts and ground breaking new features such as co-routines. As a Lua 
fan I can't for C++ co-routines. On TIOBE Lua has raced back into the 
top 20 which is due to the surging popularity of gaming frameworks such 
as Roblox.


Since C++11 the language has evolved into a language that some experts 
have called Pythonic [1]. We're using the new z/OS Open XL C/C++ and 
it's a breath of fresh air. You need to be a good programmer to be 
proficient at C++ but IBM are delivering the goods on z/OS.


[1] https://preshing.com/20141202/cpp-has-become-more-pythonic/




The Java runtime environment (JRE) already comes with a wealth of 
professional and tested class libraries covering practically all 
aspects of modern programming, covering everything that any modern 
application may have a need to exploit and interact with.


Yes. But you need to use Open Source libraries for it to be easy to use. 
The JRE doesn't cut it.




Seeing the OpenJDK (open-source Java) community and how vigorously 
Java gets developed further, continually updated in critical areas 
like security, there is no end in sight for this great ecosystem. 
Witnessing also OpenJDK distributions (from Java 8 LTS to the latest 
Java 18) from IBM, Amazon, SAP, even Microsoft, and many, many more 
competent and leading IT-related companies, the support for Java is 
unique compared to any other software there is. 


One of the reasons for the surge in C++ is because Java is flabby. It's 
uses a huge amount of memory and GC is costly in visualized 
environments. GraalVM is a valiant attempt to solve that problem. 
Hopefully OpenJ9 will do something similar.


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java (Re: Some questions on SYSCALL

2022-07-07 Thread Rony G. Flatscher

On 07.07.2022 14:54, Seymour J Metz wrote:

Which of these has Java equivalents?

  use charnames qw(:short);
  use File::Spec;
  use Getopt::Long 2.3203 qw(:config auto_help auto_version);
  use IO::File;
  use Net::DNS;
  use MIME::Parser;
  use MIME::QuotedPrint;
  use MIME::Tools;
  use Regexp::Common qw /net URI/;
  use Regexp::Common::URI::RFC2396 qw /$host $port $path_segments $query/;
  use Socket;
  use URI::Escape;


These are Perl-specific libraries, which is fine of course.

There are Java equivalents for all of them, one would need to research them first before being able 
to put them to work.


An example for "use URI::Escape;": search on the Internet e.g. with "java encode url" and you would 
get many hits, here a few from the top hits:


 * Java tutorial: <https://www.baeldung.com/java-url-encoding-decoding>,
 * Stackoverflow:
   
<https://stackoverflow.com/questions/10786042/java-url-encoding-of-query-string-parameters>
 * the Javadoc (Java documentation) of the respective Java class:
   <https://docs.oracle.com/javase/7/docs/api/java/net/URLEncoder.html>; if you 
wanted the Javadoc
   of a specific Java version, let us say Java 8, then you could use the 
following search string:
   "javadoc 8 urlencoder"

You get the idea, I am sure. This way you are able to fish (research the Java equivalent) for 
yourself and are not dependent on others to fish for you! ;)



Java has the advantage of always being there, at least for z/OS. JIT doesn't 
hurt.

BSF has been available for a long time; why doesn't every Rexx programmer know 
about it and PCRE? Thanks for putting in the work.


You are welcome!

---rony




From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Rony G. Flatscher [rony.flatsc...@wu.ac.at]
Sent: Thursday, July 7, 2022 7:53 AM
To:IBM-MAIN@LISTSERV.UA.EDU
Subject: Java (Re: Some questions on SYSCALL

On 06.07.2022 11:03, Seymour J Metz wrote:

When I select a language for a job, one of the things that I look at is the 
ecosystem. I prefer ooRexx to Perl, but I find myself using
Perl for some tasks because CPAN is an awesome resource. Python may not be the 
best language for the task at hand, but it pays to check what packages are 
available.

Indeed Perl and Python have a great wealth of libraries available to them.

There is one ecosystem that beats Perl, Python and practically any others: 
Java. For every problem
domain, for new emerging technologies there are Java class libraries which one 
can take advantage
of. As Java classes get compiled to intermediate byte code, these Java class 
libraries can be
deployed and used immediately on any hardware and any operating system for 
which a Java virtual
machine exists.

The Java runtime environment (JRE) already comes with a wealth of professional 
and tested class
libraries covering practically all aspects of modern programming, covering 
everything that any
modern application may have a need to exploit and interact with.

Seeing the OpenJDK (open-source Java) community and how vigorously Java gets 
developed further,
continually updated in critical areas like security, there is no end in sight 
for this great
ecosystem. Witnessing also OpenJDK distributions (from Java 8 LTS to the latest 
Java 18) from IBM,
Amazon, SAP, even Microsoft, and many, many more competent and leading 
IT-related companies, the
support for Java is unique compared to any other software there is.

There is no other language and there is no other software infrastructure that 
can possibly beat Java
in this regard.

Therefore it is a good idea to use Java strategically in software projects.

Having said all that, you may see the motivation why I wrote an ooRexx [1] 
function/class library
that bridges ooRexx and Java, which is called BSF4ooRexx [2]. This ooRexx-Java 
bridge has two main
applications:

   * Allow ooRexx programmers to use Java classes and Java objects as if they 
were ooRexx classes and
 ooRexx objects to which one can send ooRexx messages and the Java objects 
will understand them
 conceptually. Here a small ooRexx example that demonstrates how to use the 
Java class
 "java.awt.Dimension" as if it was an ooRexx class:

 /* Java class, 
cf.<https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.oracle.com%2Fjavase%2F8%2Fdocs%2Fapi%2Fjava%2Fawt%2FDimension.htmldata=05%7C01%7Csmetz3%40gmu.edu%7C3c202325a69b418f044508da600f6e1f%7C9e857255df574c47a0c00546460380cb%7C0%7C0%7C637927916636331741%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7Csdata=0Etc155I%2FyB6VDmsHqh%2FTkMftp4RSjkD3mttR9Ix%2BgQ%3Dreserved=0>
  */
 dim=.bsf~new("java.awt.Dimension", 111, 222)
 say "1)" dim~toString   /* every Java object understands "toString"  */

 dim~setSize(555,222)/* chang

Re: Java (Re: Some questions on SYSCALL

2022-07-07 Thread Seymour J Metz
Which of these has Java equivalents?

 use charnames qw(:short);
 use File::Spec;
 use Getopt::Long 2.3203 qw(:config auto_help auto_version);
 use IO::File;
 use Net::DNS;
 use MIME::Parser;
 use MIME::QuotedPrint;
 use MIME::Tools;
 use Regexp::Common qw /net URI/;
 use Regexp::Common::URI::RFC2396 qw /$host $port $path_segments $query/;
 use Socket;
 use URI::Escape;


Java has the advantage of always being there, at least for z/OS. JIT doesn't 
hurt.

BSF has been available for a long time; why doesn't every Rexx programmer know 
about it and PCRE? Thanks for putting in the work.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Rony G. Flatscher [rony.flatsc...@wu.ac.at]
Sent: Thursday, July 7, 2022 7:53 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Java (Re: Some questions on SYSCALL

On 06.07.2022 11:03, Seymour J Metz wrote:
> When I select a language for a job, one of the things that I look at is the 
> ecosystem. I prefer ooRexx to Perl, but I find myself using
> Perl for some tasks because CPAN is an awesome resource. Python may not be 
> the best language for the task at hand, but it pays to check what packages 
> are available.

Indeed Perl and Python have a great wealth of libraries available to them.

There is one ecosystem that beats Perl, Python and practically any others: 
Java. For every problem
domain, for new emerging technologies there are Java class libraries which one 
can take advantage
of. As Java classes get compiled to intermediate byte code, these Java class 
libraries can be
deployed and used immediately on any hardware and any operating system for 
which a Java virtual
machine exists.

The Java runtime environment (JRE) already comes with a wealth of professional 
and tested class
libraries covering practically all aspects of modern programming, covering 
everything that any
modern application may have a need to exploit and interact with.

Seeing the OpenJDK (open-source Java) community and how vigorously Java gets 
developed further,
continually updated in critical areas like security, there is no end in sight 
for this great
ecosystem. Witnessing also OpenJDK distributions (from Java 8 LTS to the latest 
Java 18) from IBM,
Amazon, SAP, even Microsoft, and many, many more competent and leading 
IT-related companies, the
support for Java is unique compared to any other software there is.

There is no other language and there is no other software infrastructure that 
can possibly beat Java
in this regard.

Therefore it is a good idea to use Java strategically in software projects.

Having said all that, you may see the motivation why I wrote an ooRexx [1] 
function/class library
that bridges ooRexx and Java, which is called BSF4ooRexx [2]. This ooRexx-Java 
bridge has two main
applications:

  * Allow ooRexx programmers to use Java classes and Java objects as if they 
were ooRexx classes and
ooRexx objects to which one can send ooRexx messages and the Java objects 
will understand them
conceptually. Here a small ooRexx example that demonstrates how to use the 
Java class
"java.awt.Dimension" as if it was an ooRexx class:

/* Java class, cf. 
<https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.oracle.com%2Fjavase%2F8%2Fdocs%2Fapi%2Fjava%2Fawt%2FDimension.htmldata=05%7C01%7Csmetz3%40gmu.edu%7C3c202325a69b418f044508da600f6e1f%7C9e857255df574c47a0c00546460380cb%7C0%7C0%7C637927916636331741%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7Csdata=0Etc155I%2FyB6VDmsHqh%2FTkMftp4RSjkD3mttR9Ix%2BgQ%3Dreserved=0>
 */
dim=.bsf~new("java.awt.Dimension", 111, 222)
say "1)" dim~toString   /* every Java object understands "toString"  */

dim~setSize(555,222)/* change width Java-like*/
say "2)" dim~toString

dim~width=999   /* change width ooRexx-like (attribute)  */
    say "3)" dim~toString

::requires BSF.CLS  /* get ooRexx-Java bridge*/

Running the above ooRexx program yields:

1) java.awt.Dimension[width=111,height=222]
2) java.awt.Dimension[width=555,height=222]
3) java.awt.Dimension[width=999,height=222]


  * Allow Java programmers to easily run ooRexx scripts/macros, with the 
possibility to even supply
arguments that may be even Java objects with which the ooRexx program can 
readily interact with.
    Here a small Java example that demonstrates how to run an ooRexx script 
from Java using the
standard Java scripting framework (cf.

<https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fdocs.oracle.com%2Fjavase%2F8%2Fdocs%2Fapi%2Findex.html%3Fjavax%2Fscript%2Fpackage-summary.htmldata=05%7C01%7Csmetz3%40g

Java (Re: Some questions on SYSCALL

2022-07-07 Thread Rony G. Flatscher

On 06.07.2022 11:03, Seymour J Metz wrote:

When I select a language for a job, one of the things that I look at is the 
ecosystem. I prefer ooRexx to Perl, but I find myself using
Perl for some tasks because CPAN is an awesome resource. Python may not be the 
best language for the task at hand, but it pays to check what packages are 
available.


Indeed Perl and Python have a great wealth of libraries available to them.

There is one ecosystem that beats Perl, Python and practically any others: Java. For every problem 
domain, for new emerging technologies there are Java class libraries which one can take advantage 
of. As Java classes get compiled to intermediate byte code, these Java class libraries can be 
deployed and used immediately on any hardware and any operating system for which a Java virtual 
machine exists.


The Java runtime environment (JRE) already comes with a wealth of professional and tested class 
libraries covering practically all aspects of modern programming, covering everything that any 
modern application may have a need to exploit and interact with.


Seeing the OpenJDK (open-source Java) community and how vigorously Java gets developed further, 
continually updated in critical areas like security, there is no end in sight for this great 
ecosystem. Witnessing also OpenJDK distributions (from Java 8 LTS to the latest Java 18) from IBM, 
Amazon, SAP, even Microsoft, and many, many more competent and leading IT-related companies, the 
support for Java is unique compared to any other software there is.


There is no other language and there is no other software infrastructure that can possibly beat Java 
in this regard.


Therefore it is a good idea to use Java strategically in software projects.

Having said all that, you may see the motivation why I wrote an ooRexx [1] function/class library 
that bridges ooRexx and Java, which is called BSF4ooRexx [2]. This ooRexx-Java bridge has two main 
applications:


 * Allow ooRexx programmers to use Java classes and Java objects as if they 
were ooRexx classes and
   ooRexx objects to which one can send ooRexx messages and the Java objects 
will understand them
   conceptually. Here a small ooRexx example that demonstrates how to use the 
Java class
   "java.awt.Dimension" as if it was an ooRexx class:

   /* Java class, cf. 
<https://docs.oracle.com/javase/8/docs/api/java/awt/Dimension.html> */
   dim=.bsf~new("java.awt.Dimension", 111, 222)
   say "1)" dim~toString   /* every Java object understands "toString"  */

   dim~setSize(555,222)    /* change width Java-like    */
   say "2)" dim~toString

   dim~width=999   /* change width ooRexx-like (attribute)  */
   say "3)" dim~toString

   ::requires BSF.CLS  /* get ooRexx-Java bridge    */

   Running the above ooRexx program yields:

   1) java.awt.Dimension[width=111,height=222]
   2) java.awt.Dimension[width=555,height=222]
   3) java.awt.Dimension[width=999,height=222]


 * Allow Java programmers to easily run ooRexx scripts/macros, with the 
possibility to even supply
   arguments that may be even Java objects with which the ooRexx program can 
readily interact with.
   Here a small Java example that demonstrates how to run an ooRexx script from 
Java using the
   standard Java scripting framework (cf.
   
<https://docs.oracle.com/javase/8/docs/api/index.html?javax/script/package-summary.html>):

   import javax.script.*;

   public class TestRunRexx
   {
    public static void main (String args[])
    {
    String rexxCode = "say 'Hello, world, this is Rexx speaking ...' 
\n" +
  "say 'It is:' .dateTime~new  
" ;
    ScriptEngineManager manager = new ScriptEngineManager();
    ScriptEngine se = manager.getEngineByName("rexx");
    System.out.println("about to execute the Rexx program from 
Java...");
    try
    {
    se.eval(rexxCode);
    }
    catch (Throwable t)
    {
    System.err.println(t);
    System.exit(1);
    }
    System.out.println("about to end Java.");
    System.exit(0);
    }
   }

   Compiling the above Java program with "javac TestRunRexx.java" and running it 
with "java
   TestRunRexx" yields:

   about to execute the Rexx program from Java...
   REXXout>Hello, world, this is Rexx speaking ...
   REXXout>It is: 2022-07-07T13:43:42.67
   about to end Java.

---

So my advice would be, if you use ooRexx and have a need for functionality that is not available: 
install the ooRexx-Java bridge BSF4ooRexx and f

Re: Java?

2022-07-04 Thread Seymour J Metz
It's been a lot longer than that for warnings about "magic SVCs", and they 
persist.

The issue isn't configuring core system functions correctly; the issue is how 
installations configure general users. And, yes, they've had far more than 
enough time, but that doesn't mean that they paid attention.

Would you prefer that installations that have failed to deploy appropriate RACF 
definitions fall flat on their faces instead of warning them to check? Is their 
negligence a reason to punish them?


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Andrew Rowley [and...@blackhillsoftware.com]
Sent: Monday, July 4, 2022 7:43 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Java?

On 4/07/2022 9:17 pm, Seymour J Metz wrote:
> And you guaranty that every installation is using BPX.UNIQUE.USER?
>
> If you believe that every z/OS installation is correctly configured then I 
> have a bridge that I'd like to sell you.
It was just the other day that Bill Schoen was saying that MVS
OpenEdition was GA 30 years ago. It's used for core system functions
like TCP/IP. If it's not configured...  no-one can say they haven't had
enough time. We need to stop pretending its the 1990s.

There are plenty of things that don't work if e.g. RACF definitions are
not set up properly. Is that a reason not to use them?

Andrew Rowley

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java?

2022-07-04 Thread Andrew Rowley

On 4/07/2022 9:17 pm, Seymour J Metz wrote:

And you guaranty that every installation is using BPX.UNIQUE.USER?

If you believe that every z/OS installation is correctly configured then I have 
a bridge that I'd like to sell you.
It was just the other day that Bill Schoen was saying that MVS 
OpenEdition was GA 30 years ago. It's used for core system functions 
like TCP/IP. If it's not configured...  no-one can say they haven't had 
enough time. We need to stop pretending its the 1990s.


There are plenty of things that don't work if e.g. RACF definitions are 
not set up properly. Is that a reason not to use them?


Andrew Rowley

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java?

2022-07-04 Thread Seymour J Metz
And you guaranty that every installation is using BPX.UNIQUE.USER?

If you believe that every z/OS installation is correctly configured then I have 
a bridge that I'd like to sell you.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Radoslaw Skorupka [r.skoru...@hotmail.com]
Sent: Friday, July 1, 2022 6:52 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Java?

W dniu 30.06.2022 o 19:49, Tony Harminc pisze:
> On Thu, 30 Jun 2022 at 09:45, Paul Gilmartin <
> 042bfe9c879d-dmarc-requ...@listserv.ua.edu> wrote:
>
>> On Thu, 30 Jun 2022 10:47:59 +, Seymour J Metz wrote:
>>
>>> I believe that Java in z/OS requires dubbing It's also available in
>> Linux. Off the mainframe, it's also available for many PC and server
>> systems.
>> Why is "requires dubbing" a thing?
>>
> Because it can fail?

Really? It's not Windows "server". :-)
Seriously: it's 2022, not 90's. Nowadays we have a feature called
BPX.UNIQUE.USER. And we don't afraid to use it.
We got rid off punched cards. (OK, it was not quite serious)

--
Radoslaw Skorupka
Lodz, Poland

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java?

2022-07-01 Thread David Crayford
JZOS does. It flips a magic bit. 

> On 2 Jul 2022, at 10:52 am, Ed Jaffe  wrote:
> 
> On 7/1/2022 4:26 PM, David Crayford wrote:
>> The fact that the JNI code is offloaded to a zIIP is extra goodness.
> 
> Your JNI code runs on zIIP?
> 
> Ours does not seem to do so...
> 
> 
> -- 
> Phoenix Software International
> Edward E. Jaffe
> 831 Parkview Drive North
> El Segundo, CA 90245
> https://www.phoenixsoftware.com/
> 
> 
> 
> This e-mail message, including any attachments, appended messages and the
> information contained therein, is for the sole use of the intended
> recipient(s). If you are not an intended recipient or have otherwise
> received this email message in error, any use, dissemination, distribution,
> review, storage or copying of this e-mail message and the information
> contained therein is strictly prohibited. If you are not an intended
> recipient, please contact the sender by reply e-mail and destroy all copies
> of this email message and do not otherwise utilize or retain this email
> message or any or all of the information contained therein. Although this
> email message and any attachments or appended messages are believed to be
> free of any virus or other defect that might affect any computer system into
> which it is received and opened, it is the responsibility of the recipient
> to ensure that it is virus free and no responsibility is accepted by the
> sender for any loss or damage arising in any way from its opening or use.
> 
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java?

2022-07-01 Thread Ed Jaffe

On 7/1/2022 4:26 PM, David Crayford wrote:

The fact that the JNI code is offloaded to a zIIP is extra goodness.


Your JNI code runs on zIIP?

Ours does not seem to do so...


--
Phoenix Software International
Edward E. Jaffe
831 Parkview Drive North
El Segundo, CA 90245
https://www.phoenixsoftware.com/



This e-mail message, including any attachments, appended messages and the
information contained therein, is for the sole use of the intended
recipient(s). If you are not an intended recipient or have otherwise
received this email message in error, any use, dissemination, distribution,
review, storage or copying of this e-mail message and the information
contained therein is strictly prohibited. If you are not an intended
recipient, please contact the sender by reply e-mail and destroy all copies
of this email message and do not otherwise utilize or retain this email
message or any or all of the information contained therein. Although this
email message and any attachments or appended messages are believed to be
free of any virus or other defect that might affect any computer system into
which it is received and opened, it is the responsibility of the recipient
to ensure that it is virus free and no responsibility is accepted by the
sender for any loss or damage arising in any way from its opening or use.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java?

2022-07-01 Thread David Crayford
JZOS is the perfect example of the genius of simplicity. I can remember 
the JRIO monstrosity with all the silly OO abstractions to do something 
as simple as file I/O. JZOS ZFile was a breath of fresh air. The fact 
that the JNI code is offloaded to a zIIP is extra goodness.


On 30/06/2022 10:55 pm, Kirk Wolf wrote:

"dubbing" basically means that a TCB gets assigned a z/OS UNIX pid.If you 
run z/OS Java under a batch address space (like with the JZOS batch launcher), then 
dubbing will occur since the JVM is written in C and uses z/OS Unix services.   Actually 
in this case it would be the JZOS batch launcher program that would be dubbed since it 
uses z/OS Unix services itself prior to invoking the JVM.

Kirk Wolf
Dovetailed Technologies, LLC
http://coztoolkit.com


Note: Our website and domain name have changed from dovetail.com to 
coztoolkit.com


On Thu, Jun 30, 2022, at 8:45 AM, Paul Gilmartin wrote:

On Thu, 30 Jun 2022 10:47:59 +, Seymour J Metz wrote:


I believe that Java in z/OS requires dubbing It's also available in Linux. Off 
the mainframe, it's also available for many PC and server systems.


Why is "requires dubbing" a thing?

--
gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java?

2022-07-01 Thread Radoslaw Skorupka

W dniu 30.06.2022 o 19:49, Tony Harminc pisze:

On Thu, 30 Jun 2022 at 09:45, Paul Gilmartin <
042bfe9c879d-dmarc-requ...@listserv.ua.edu> wrote:


On Thu, 30 Jun 2022 10:47:59 +, Seymour J Metz wrote:


I believe that Java in z/OS requires dubbing It's also available in

Linux. Off the mainframe, it's also available for many PC and server
systems.
Why is "requires dubbing" a thing?


Because it can fail?


Really? It's not Windows "server". :-)
Seriously: it's 2022, not 90's. Nowadays we have a feature called 
BPX.UNIQUE.USER. And we don't afraid to use it.

We got rid off punched cards. (OK, it was not quite serious)

--
Radoslaw Skorupka
Lodz, Poland

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java?

2022-06-30 Thread Paul Gilmartin
On Thu, 30 Jun 2022 13:49:09 -0400, Tony Harminc wrote:

>On Thu, 30 Jun 2022 at 09:45, Paul Gilmartin wrote:
>
>> Why is "requires dubbing" a thing?
>
>Because it can fail?
> 
Lots of things can fail.

>But perhaps more serious for Java on z/OS is that as far as I know it
>requires UNIXy file system and semantics. I doubt that you can store your
>class files in a PDSE.
> 
Lots of things can't be stored in a PDSE.  Submit two RFEs:

One for the shortcoming of PDSE.

One for the shortcoming of DSFS.

-- 
gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java?

2022-06-30 Thread Seymour J Metz
Because you need to provide uid/gid for the user, either in his OMVS segment or 
implicitly.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Paul Gilmartin [042bfe9c879d-dmarc-requ...@listserv.ua.edu]
Sent: Thursday, June 30, 2022 9:45 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Java?

On Thu, 30 Jun 2022 10:47:59 +, Seymour J Metz wrote:

>I believe that Java in z/OS requires dubbing It's also available in Linux. Off 
>the mainframe, it's also available for many PC and server systems.
>
Why is "requires dubbing" a thing?

--
gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java?

2022-06-30 Thread Seymour J Metz
Why does it bother you that I mention dubbing in a context where it is required?


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Paul Gilmartin [042bfe9c879d-dmarc-requ...@listserv.ua.edu]
Sent: Thursday, June 30, 2022 1:03 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Java?

On Thu, 30 Jun 2022 09:55:08 -0500, Kirk Wolf wrote:

>"dubbing" basically means that a TCB gets assigned a z/OS UNIX pid.If you 
>run z/OS Java under a batch address space (like with the JZOS batch launcher), 
>then dubbing will occur since the JVM is written in C and uses z/OS Unix 
>services.   Actually in this case it would be the JZOS batch launcher program 
>that would be dubbed since it uses z/OS Unix services itself prior to invoking 
>the JVM.
>
Yes, but why does Shmuel repeatedly make "requires dubbing" a thing?  Was his 
mother
traumatized during gestation by a dubbing?


>> On Thu, 30 Jun 2022 10:47:59 +0000, Seymour J Metz wrote:
>>
>> >I believe that Java in z/OS requires dubbing It's also available in Linux. 
>> >Off the mainframe, it's also available for many PC and server systems.

--
gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java?

2022-06-30 Thread Tony Harminc
On Thu, 30 Jun 2022 at 09:45, Paul Gilmartin <
042bfe9c879d-dmarc-requ...@listserv.ua.edu> wrote:

> On Thu, 30 Jun 2022 10:47:59 +, Seymour J Metz wrote:
>
> >I believe that Java in z/OS requires dubbing It's also available in
> Linux. Off the mainframe, it's also available for many PC and server
> systems.
> >
> Why is "requires dubbing" a thing?
>

Because it can fail?

But perhaps more serious for Java on z/OS is that as far as I know it
requires UNIXy file system and semantics. I doubt that you can store your
class files in a PDSE.

Tony H.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java?

2022-06-30 Thread David Spiegel

Hi Gil,
"...traumatized during gestation by a dubbing? ..."
Maybe, too many foreign movies? {:->}

Regards,
David

On 2022-06-30 13:03, Paul Gilmartin wrote:

On Thu, 30 Jun 2022 09:55:08 -0500, Kirk Wolf wrote:


"dubbing" basically means that a TCB gets assigned a z/OS UNIX pid.    If you 
run z/OS Java under a batch address space (like with the JZOS batch launcher), then 
dubbing will occur since the JVM is written in C and uses z/OS Unix services.   Actually 
in this case it would be the JZOS batch launcher program that would be dubbed since it 
uses z/OS Unix services itself prior to invoking the JVM.


Yes, but why does Shmuel repeatedly make "requires dubbing" a thing?  Was his 
mother
traumatized during gestation by a dubbing?



On Thu, 30 Jun 2022 10:47:59 +, Seymour J Metz wrote:


I believe that Java in z/OS requires dubbing It's also available in Linux. Off 
the mainframe, it's also available for many PC and server systems.


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java?

2022-06-30 Thread Paul Gilmartin
On Thu, 30 Jun 2022 09:55:08 -0500, Kirk Wolf wrote:

>"dubbing" basically means that a TCB gets assigned a z/OS UNIX pid.If you 
>run z/OS Java under a batch address space (like with the JZOS batch launcher), 
>then dubbing will occur since the JVM is written in C and uses z/OS Unix 
>services.   Actually in this case it would be the JZOS batch launcher program 
>that would be dubbed since it uses z/OS Unix services itself prior to invoking 
>the JVM.
> 
Yes, but why does Shmuel repeatedly make "requires dubbing" a thing?  Was his 
mother
traumatized during gestation by a dubbing?


>> On Thu, 30 Jun 2022 10:47:59 +0000, Seymour J Metz wrote:
>>
>> >I believe that Java in z/OS requires dubbing It's also available in Linux. 
>> >Off the mainframe, it's also available for many PC and server systems.

-- 
gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java?

2022-06-30 Thread Kirk Wolf
"dubbing" basically means that a TCB gets assigned a z/OS UNIX pid.If you 
run z/OS Java under a batch address space (like with the JZOS batch launcher), 
then dubbing will occur since the JVM is written in C and uses z/OS Unix 
services.   Actually in this case it would be the JZOS batch launcher program 
that would be dubbed since it uses z/OS Unix services itself prior to invoking 
the JVM.

Kirk Wolf
Dovetailed Technologies, LLC
http://coztoolkit.com


Note: Our website and domain name have changed from dovetail.com to 
coztoolkit.com


On Thu, Jun 30, 2022, at 8:45 AM, Paul Gilmartin wrote:
> On Thu, 30 Jun 2022 10:47:59 +, Seymour J Metz wrote:
> 
> >I believe that Java in z/OS requires dubbing It's also available in Linux. 
> >Off the mainframe, it's also available for many PC and server systems.
> >
> Why is "requires dubbing" a thing?
> 
> -- 
> gil
> 
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
> 

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java?

2022-06-30 Thread Paul Gilmartin
On Thu, 30 Jun 2022 10:47:59 +, Seymour J Metz wrote:

>I believe that Java in z/OS requires dubbing It's also available in Linux. Off 
>the mainframe, it's also available for many PC and server systems.
>
Why is "requires dubbing" a thing?

-- 
gil

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: Java?

2022-06-30 Thread Seymour J Metz
I believe that Java in z/OS requires dubbing It's also available in Linux. Off 
the mainframe, it's also available for many PC and server systems.

Learning as new language is always goodness, if you have the time, especially 
if you get hit with a new requirement in the future.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of Bob 
Bridges [robhbrid...@gmail.com]
Sent: Wednesday, June 29, 2022 9:52 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Java?

I really gotta learn Java.  If five belts around my waist are good, six would 
be even better.  But mostly I stick to languages that my clients already have, 
and even better if possible, know how to maintain.  Where is Java usable?  On 
the mainframe, only Unix, right?

---
Bob Bridges, robhbrid...@gmail.com, cell 336 382-7313

/* Linda Levy dragged me out to the floor for a dance and I stood there like a 
totem pole in a body cast.  -Miami Herald columnist Leonard Pitts, recalling 
his failure as a ballroom dancer. */

-Original Message-
From: IBM Mainframe Discussion List  On Behalf Of 
David Crayford
Sent: Tuesday, June 28, 2022 18:39

 REXX isn't so simple after all! You would have been better off 
writing your code in Java, or if you have installed the new Open XL C/C++ 
compiler/runtime you could use the C++17 filesystem library.

To me, just having to check return codes instead of relying on exceptions is a 
good enough reason to dodge REXX.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: [EXTERNAL] Java?

2022-06-29 Thread Pommier, Rex
Bob,

No, we run a small amount of java as straight batch.  One example is the IBM 
SCRT monthly processing.  Straight batch job:

//JAVAJVM  EXEC PGM=JVMLDM86,REGION=0M,PARM='/ com.ibm.scrt.SCRTe '

Rex


-Original Message-
From: IBM Mainframe Discussion List  On Behalf Of Bob 
Bridges
Sent: Wednesday, June 29, 2022 8:53 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: [EXTERNAL] Java?

I really gotta learn Java.  If five belts around my waist are good, six would 
be even better.  But mostly I stick to languages that my clients already have, 
and even better if possible, know how to maintain.  Where is Java usable?  On 
the mainframe, only Unix, right?

---
Bob Bridges, robhbrid...@gmail.com, cell 336 382-7313

/* Linda Levy dragged me out to the floor for a dance and I stood there like a 
totem pole in a body cast.  -Miami Herald columnist Leonard Pitts, recalling 
his failure as a ballroom dancer. */

-Original Message-
From: IBM Mainframe Discussion List  On Behalf Of 
David Crayford
Sent: Tuesday, June 28, 2022 18:39

 REXX isn't so simple after all! You would have been better off 
writing your code in Java, or if you have installed the new Open XL C/C++ 
compiler/runtime you could use the C++17 filesystem library.

To me, just having to check return codes instead of relying on exceptions is a 
good enough reason to dodge REXX.

--
For IBM-MAIN subscribe / signoff / archive access instructions, send email to 
lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
The information contained in this message is confidential, protected from 
disclosure and may be legally privileged. If the reader of this message is not 
the intended recipient or an employee or agent responsible for delivering this 
message to the intended recipient, you are hereby notified that any disclosure, 
distribution, copying, or any action taken or action omitted in reliance on it, 
is strictly prohibited and may be unlawful. If you have received this 
communication in error, please notify us immediately by replying to this 
message and destroy the material in its entirety, whether in electronic or hard 
copy format. Thank you.


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Java?

2022-06-29 Thread Bob Bridges
I really gotta learn Java.  If five belts around my waist are good, six would 
be even better.  But mostly I stick to languages that my clients already have, 
and even better if possible, know how to maintain.  Where is Java usable?  On 
the mainframe, only Unix, right?

---
Bob Bridges, robhbrid...@gmail.com, cell 336 382-7313

/* Linda Levy dragged me out to the floor for a dance and I stood there like a 
totem pole in a body cast.  -Miami Herald columnist Leonard Pitts, recalling 
his failure as a ballroom dancer. */

-Original Message-
From: IBM Mainframe Discussion List  On Behalf Of 
David Crayford
Sent: Tuesday, June 28, 2022 18:39

 REXX isn't so simple after all! You would have been better off 
writing your code in Java, or if you have installed the new Open XL C/C++ 
compiler/runtime you could use the C++17 filesystem library.

To me, just having to check return codes instead of relying on exceptions is a 
good enough reason to dodge REXX.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: An ooRexx sample for the Java sample program ... (Re: Some UNIX file usage questions

2022-06-23 Thread Rony G. Flatscher

Hi Andrew,

On 23.06.2022 01:42, Andrew Rowley wrote:

On 22/06/2022 9:44 pm, Rony G. Flatscher wrote:


   /* ... do whatever you need to do, if anything ... */

       /* now wait until the stop event gets received in rexxCallBack */
   rexxCallBack~waitForStop   /* invocation will block */



I don't know ooRexx so I'm working mainly from your comments, but the sample I wrote doesn't do 
something then block waiting for the stop command. It does something (sleep) continually, checking 
regularly to see if the stop command has been received.


Of course, in a real program sleep would be replaced with the actual function 
you wanted to perform.

Ah, I see what you meant!


This is a simple example, there are also more complex ways of interrupting/stopping a thread in 
Java than periodically checking a status.


Sure.

Maybe a few comments what I intended to show followed by an ooRexx version below that does also a 
loop with sleep to match your Java sample conceptually in all aspects.


ooRexx is a language that is multithreaded and makes it easy to kick off (and synchronize) threads 
if need be. I remember one American software engineer who ran a business creating software 
simulations for robotics about 25 years ago who used OS/2 Warp and its contained Object REXX (IBM's 
product which later turned into today's ooRexx) for that purpose back then; he told me at an 
International RexxLA symposium that the reason for him using Object REXX was an experiment he 
undertook to create a simple simulation of an airport where planes would be landing, taking off and 
taxiing, and all would take him only about 120 lines of code.


By default ooRexx supports inter-object multithreading and intra-object multithreading. In addition 
it allows for fine grained control of multithreading with the GUARD ON/OFF [WHEN test of control 
variable[s]] keyword statement.


In this transcription of your Java program I tried to demonstrate synchronizing the Java thread that 
reports the command events with the main (ooRexx) thread. ooRexx will stop (block) in the main 
thread at the statement


   rexxCallBack~waitForStop

until the method handleStop() gets invoked on the MvsCommandCallback thread which will cause 
waitForStop to gain control and return to allow the main thread to continue (which in this case ends 
the program and thereby Java). One could have any number of commands before and after that 
particular synchronization point.


---

As your intention was to use a loop to execute code in intervals repeatedly until the 
MvsCommandCallback reports the handleStop() event by invoking that event method which sets the 
'stopped' attribute to .true/1, here a version that uses such a loop in the main (ooRexx) thread 
which executes as long as the MvsCommandCallback event method handleStop was not invoked (which will 
set the value of the attribute 'stopped' to .true) on the MvsCommandCallback (Java) thread.


Here the (untested) ooRexx program:

   /* load the Java class into ooRexx, it will understand ooRexx messages */
   MvsConsole = bsf.loadClass("com.ibm.jzos.MvsConsole")
   if \MvsConsole~isListening then    /* if not yet a command listener 
thread   */
   MvsConsole~startMvsCommandListener

   rexxCallBack = .CommandCallback~new    /* create a Rexx value of type 
"CommandCallback" */
   /* wrap/box the Rexx value/object as a Java value/object   */
   boxedCallBack = BsfCreateRexxProxy(rexxCallBack, , 
"com.ibm.jzos.MvsCommandCallback")
   MvsConsole~registerMvsCommandCallback(boxedCallBack)

   /* now loop until the stop event gets received in rexxCallBack */
   do while \rexxCallBack~stopped
   call sysSleep 1 /* sleep a second or do something else */
   end

   ::requires "BSF.CLS"   /* get ooRexx-Java bridge  */

   /* ooRexx class defines the Java methods it will serve. Invoking these
   Java methods will cause a message of the same name and same arguments
   to be sent to the ooRexx value/object which will search and invoke
   the appropriate ooRexx method here. */
   ::class CommandCallback    /* implements MvsCommandCallback methods  */
   ::method init  /* runs when a value of this type gets created */
  expose startTime stopped /* access object variables (attributes)*/
  startTime=.DateTime~new  /* remember current date and time  */
  stopped = .false /* set attribute to 0  */

   ::method handleModify
  expose startTime /* access object variable (attribute)  */
  use arg arg0
  if arg0="REPORT" then
 say "Runtime:" .dateTime~new - startTime   /* deduct current date and 
time  */
  else
 say arg0 "not recognized. Valid commands: REPORT"

   ::method handleStart   /* do nothing */

   ::method handleStop
  expose stopped   /* access object variabl

Re: An ooRexx sample for the Java sample program ... (Re: Some UNIX file usage questions

2022-06-22 Thread Andrew Rowley

On 22/06/2022 9:44 pm, Rony G. Flatscher wrote:


   /* ... do whatever you need to do, if anything ... */

       /* now wait until the stop event gets received in rexxCallBack */
   rexxCallBack~waitForStop   /* invocation will block */



I don't know ooRexx so I'm working mainly from your comments, but the 
sample I wrote doesn't do something then block waiting for the stop 
command. It does something (sleep) continually, checking regularly to 
see if the stop command has been received.


Of course, in a real program sleep would be replaced with the actual 
function you wanted to perform.


This is a simple example, there are also more complex ways of 
interrupting/stopping a thread in Java than periodically checking a status.


--
Andrew Rowley
Black Hill Software

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: An ooRexx sample for the Java sample program ... (Re: Some UNIX file usage questions

2022-06-22 Thread Seymour J Metz
A few quick notes for those not familiar with oorexx:

While in rexx everything is a string, in oorexx everything is an object, even 
strings, and you can invoke any string BIF as a method.

While rexx supports only call by value, oorexx supports both call by value and 
call by reference.

The ~ operator is a method invocation. There are some subtleties that you 
probably won't need for a long while.

Collection classes generally have [] and []= methods; these are implicitly 
invoked by constructs like foo = bar[baz] and foo[bar] = baz.


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
Rony G. Flatscher [rony.flatsc...@wu.ac.at]
Sent: Wednesday, June 22, 2022 7:44 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: An ooRexx sample for the Java sample program ... (Re: Some UNIX file 
usage questions

Hi Andrew,

thank you for this Java program. I took the liberty to transform it to ooRexx 
(untested) which
should do the same as your Java program:

/* load the Java class into ooRexx, it will understand ooRexx messages 
*/
MvsConsole = bsf.loadClass("com.ibm.jzos.MvsConsole")
if MvsConsole~isListening<>1 then  /* same as .true in ooRexx */
MvsConsle~startMvsCommandListener

rexxCallBack = .CommandCallback~new/* create a Rexx value of type 
"CommandCallback" */
/* wrap/box the Rexx value/object as a Java value/object */
boxedCallBack = BsfCreateRexxProxy(rexxCallBack, , 
"com.ibm.jzos.MvsCommandCallback")
MvsConsole~registerMvsCommandCallback(boxedCallBack)

/* ... do whatever you need to do, if anything ... */

/* now wait until the stop event gets received in rexxCallBack */
rexxCallBack~waitForStop   /* invocation will block */


::requires "BSF.CLS"   /* get ooRexx-Java bridge */

/* ooRexx class defines the Java methods it will serve. Invoking these
Java methods will cause a message of the same name and same arguments
to be sent to the ooRexx value/object which will search and invoke
the appropriate ooRexx method here. */
::class CommandCallback/* implements MvsCommandCallback methods  */
::method init  /* runs when a value of this type gets created */
   expose startTime /* access object variable (attribute) */
   startTime=.DateTime~new  /* remember current date and time */

::method handleModify
   expose startTime /* access object variable (attribute) */
   parse arg arg0
   if arg0="REPORT" then
  say "Runtime:" startTime - .dateTime~new   /* deduct current date and 
time  */
   else
  say arg0 "not recognized. Valid commands: REPORT"

::method handleStart   /* do nothing */

::method handleStop
   expose lock  /* access object variable (attribute) */
   lock = .false/* set lock to 0 */
   return .false/* return 0 */

::method waitForStop   /* method to block caller until stop occurs 
*/
   expose lock  /* access object variable (attribute) */
   guard on when lock=.false/* wait until control variable is set to .false 
*/

A few notes:

- it is not necessary to know Java, one just needs to be able to understand the 
documentation of the
Java classes that you wish to use from ooRexx, in this case e.g.
<https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ibm.com%2Fdocs%2Fen%2Fsdk-java-technology%2F7.1%3Ftopic%3Djzos-mvsconsoledata=05%7C01%7Csmetz3%40gmu.edu%7Cd0e4b87d50ba4664a6b108da54449f9d%7C9e857255df574c47a0c00546460380cb%7C0%7C0%7C637914950984120596%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7Csdata=81mxJn14roHtfUsM6L7GUcP3ZzlKR8MPLQnOzj8JRpo%3Dreserved=0>
 and
<https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ibm.com%2Fdocs%2Fen%2Fsdk-java-technology%2F7.1%3Ftopic%3Djzos-mvscommandcallbackdata=05%7C01%7Csmetz3%40gmu.edu%7Cd0e4b87d50ba4664a6b108da54449f9d%7C9e857255df574c47a0c00546460380cb%7C0%7C0%7C637914950984120596%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7Csdata=hRqEnsEZ2kjDogiDuAOrtSv9B1ShHTH6Op2rKR8PLts%3Dreserved=0>.
 Anyone on this
list will be able to read the Java documentation of these Java classes and 
understand what is
documented there, I am sure;

- the statements that start with two colons (::) are directives to ooRexx; 
ooRexx will read a
program, syntax check it, then carry out each directive one by one and at the 
end will start to
execute the program with the statement starting at line 1

- the "::requires BSF.CLS" directive will cause ooRexx to call the ooRexx 
program BSF.CLS which will
load the Java bridge and camouflage the

An ooRexx sample for the Java sample program ... (Re: Some UNIX file usage questions

2022-06-22 Thread Rony G. Flatscher

Hi Andrew,

thank you for this Java program. I took the liberty to transform it to ooRexx (untested) which 
should do the same as your Java program:


   /* load the Java class into ooRexx, it will understand ooRexx messages */
   MvsConsole = bsf.loadClass("com.ibm.jzos.MvsConsole")
   if MvsConsole~isListening<>1 then  /* same as .true in ooRexx */
   MvsConsle~startMvsCommandListener

   rexxCallBack = .CommandCallback~new    /* create a Rexx value of type 
"CommandCallback" */
   /* wrap/box the Rexx value/object as a Java value/object */
   boxedCallBack = BsfCreateRexxProxy(rexxCallBack, , 
"com.ibm.jzos.MvsCommandCallback")
   MvsConsole~registerMvsCommandCallback(boxedCallBack)

   /* ... do whatever you need to do, if anything ... */

   /* now wait until the stop event gets received in rexxCallBack */
   rexxCallBack~waitForStop   /* invocation will block */


   ::requires "BSF.CLS"   /* get ooRexx-Java bridge */

   /* ooRexx class defines the Java methods it will serve. Invoking these
   Java methods will cause a message of the same name and same arguments
   to be sent to the ooRexx value/object which will search and invoke
   the appropriate ooRexx method here. */
   ::class CommandCallback    /* implements MvsCommandCallback methods  */
   ::method init  /* runs when a value of this type gets created */
  expose startTime /* access object variable (attribute) */
  startTime=.DateTime~new  /* remember current date and time */

   ::method handleModify
  expose startTime /* access object variable (attribute) */
  parse arg arg0
  if arg0="REPORT" then
 say "Runtime:" startTime - .dateTime~new   /* deduct current date and 
time  */
  else
 say arg0 "not recognized. Valid commands: REPORT"

   ::method handleStart   /* do nothing */

   ::method handleStop
  expose lock  /* access object variable (attribute) */
  lock = .false    /* set lock to 0 */
  return .false    /* return 0 */

   ::method waitForStop   /* method to block caller until stop occurs */
  expose lock  /* access object variable (attribute) */
  guard on when lock=.false/* wait until control variable is set to .false 
*/

A few notes:

- it is not necessary to know Java, one just needs to be able to understand the documentation of the 
Java classes that you wish to use from ooRexx, in this case e.g. 
<https://www.ibm.com/docs/en/sdk-java-technology/7.1?topic=jzos-mvsconsole> and 
<https://www.ibm.com/docs/en/sdk-java-technology/7.1?topic=jzos-mvscommandcallback>. Anyone on this 
list will be able to read the Java documentation of these Java classes and understand what is 
documented there, I am sure;


- the statements that start with two colons (::) are directives to ooRexx; ooRexx will read a 
program, syntax check it, then carry out each directive one by one and at the end will start to 
execute the program with the statement starting at line 1


- the "::requires BSF.CLS" directive will cause ooRexx to call the ooRexx program BSF.CLS which will 
load the Java bridge and camouflage the strictly typed, case sensitive Java as the dynamically typed 
and caseless ooRexx


- the "::class" directive will cause ooRexx to create a class (synonyms: type, structure) and 
remember its name


- the "::method" directives will cause ooRexx to create methods, remember their names and the Rexx 
code going with them and assign those methods to the previously created class


- any Rexx value (synonyms: object, instance) created from this class will understand all messages 
that are named as the methods therein: conceptually, every Rexx value/object/instance is like a 
living thing and understands messages it receives by searching a method by the name of the received 
message, invoke it (and supply arguments if any) and return any return value, if any


Should there be any questions please do not hesitate and ask them.

---rony



On 22.06.2022 07:31, Andrew Rowley wrote:

On 22/06/2022 9:03 am, Charles Mills wrote:
Can one write a Started Task in Java? What would the JCL look like (neglecting 
application-specific items)?


This is a basic Java program that runs and responds to MODIFY and STOP commands:

import java.time.*;
import com.ibm.jzos.MvsCommandCallback;
import com.ibm.jzos.MvsConsole;

public class JavaStc
{
    static volatile boolean stopped = false;
    static final Instant startTime = Instant.now();

    public static void main(String[] args) throws InterruptedException
    {
    if (!MvsConsole.isListening())
    {
    MvsConsole.startMvsCommandListener();
    }
    MvsConsole.registerMvsCommandCallback(new CommandCallback());

    while (!stopped)
    {
    Thread.sleep(1000);
    }
  

Re: New Java vulnerability

2021-12-15 Thread Jim Taylor
I would recommend using the .jar version of this tool on GitHub: 
https://github.com/logpresso/CVE-2021-44228-Scanner It will report the relevant 
version of log4j in use e.g $ Found CVE-2021-44228 vulnerability in 
/usr/lpp/bcp/blsjdpfd.jar, log4j 2.14.0


Jim

On Tue, 14 Dec 2021 13:59:06 -0600, Dave Jousma  wrote:

>On Tue, 14 Dec 2021 10:19:08 -0600, Dave Jousma  wrote:
>
>
>>
>>you bring up a good point.  there are hits for this in base JAVA V8 both 
>>31bit and 64bit, so consequently, any JAVA based app could be using, without 
>>actually including their own copy of log4j.   That also means that the local 
>>workaround is a bit more difficult too, as the override isn't a global 
>>change, unless I am misunderstanding?
>>
>>Isnt this a run-time option?
>>
>>‐Dlog4j2.formatMsgNoLookups=True
>>
>>No one has said if there is a method to set this as a default in JAVA itself 
>>if no one specifies something different.
>
>I have to issue a correction.   Base JAVA does not appear to have the actual 
>log4j code in it, but something in there is/can use it.  I misread the output 
>from the tool that Itschak graciously shared.
>
>QIF0200I (QIFUSS99) JAR USING LOG4J: 
>/RSD02A/usr/lpp/java/J8.0/lib/resources.jar    
>  
>
>QIF0200I (QIFUSS99) JAR USING LOG4J: 
>/RSD02A/usr/lpp/java/J8.0_64/lib/resources.jar 
>  
>
>a grep of the physical resources.jar file comes out with:
>
>
>
>I extracted the resources.jar file to a separate directory, and tried to pipe 
>the output of find . command to grep to scan all the individual files from the 
>extract for "log4j", but I am just not unix savvy enough to make that work.
>
>--
>For IBM-MAIN subscribe / signoff / archive access instructions,
>send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: New Java vulnerability

2021-12-15 Thread Support, DUNNIT SYSTEMS LTD.
As Yogi Berra said, "It ain't over till it's over."

https://www.lunasec.io/docs/blog/log4j-zero-day-update-on-cve-2021-45046/
--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: New Java vulnerability

2021-12-14 Thread Art Gutowski
On Tue, 14 Dec 2021 00:23:21 -0500, Cheryl Watson  
wrote:

>Hi all,
>
>SAS uses Java and has issued a blog post.  Many SAS products use Java and are 
>susceptible to this exposure.  Each site should ensure that all SAS users and 
>the Security staff are made aware of this.  Please see their post (updated 
>today) here:
>
>https://blogs.sas.com/content/sgf/2021/12/13/cve-2021-44228-log4j/.
>
>The two statements relating to base SAS are:
>
>•  For the SAS®  9.4M7 maintenance release, SAS is recommending that the 
>log4j2.formatMsgNoLookups system property be set to true, as documented in the 
>CVE. SAS is working on instructions and will link to them when published.
>
>•  The SAS®  9.4M6 maintenance release and earlier releases are under active 
>review.
>
>Best regards,
>Cheryl
>

Assuming WPS would be similarly affected...

Regards,
Art Gutowski
arthur.gutow...@huntington.com

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: New Java vulnerability

2021-12-14 Thread Dave Jousma
On Tue, 14 Dec 2021 10:19:08 -0600, Dave Jousma  wrote:


>
>you bring up a good point.  there are hits for this in base JAVA V8 both 31bit 
>and 64bit, so consequently, any JAVA based app could be using, without 
>actually including their own copy of log4j.   That also means that the local 
>workaround is a bit more difficult too, as the override isn't a global change, 
>unless I am misunderstanding?
>
>Isnt this a run-time option?
>
>‐Dlog4j2.formatMsgNoLookups=True
>
>No one has said if there is a method to set this as a default in JAVA itself 
>if no one specifies something different.

I have to issue a correction.   Base JAVA does not appear to have the actual 
log4j code in it, but something in there is/can use it.  I misread the output 
from the tool that Itschak graciously shared.

QIF0200I (QIFUSS99) JAR USING LOG4J: 
/RSD02A/usr/lpp/java/J8.0/lib/resources.jar 
 

QIF0200I (QIFUSS99) JAR USING LOG4J: 
/RSD02A/usr/lpp/java/J8.0_64/lib/resources.jar  
 

a grep of the physical resources.jar file comes out with:



I extracted the resources.jar file to a separate directory, and tried to pipe 
the output of find . command to grep to scan all the individual files from the 
extract for "log4j", but I am just not unix savvy enough to make that work.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: [EXTERNAL] Re: New Java vulnerability

2021-12-14 Thread Pommier, Rex
So one place where this shows up is in the CICS filesystem.  There is also a 
log4j.propoerties file in the same location.  Would it be sufficient to place 
the below property in this location (or where your CICS is pointing if used)?  
If so, would it be used as shown, without the dash at the beginning or without 
the (dash)D?  The other properties in this file all have the format 
"log4j.whatever-property"

Thanks,
Rex

-Original Message-
From: IBM Mainframe Discussion List  On Behalf Of 
David Crayford
Sent: Saturday, December 11, 2021 8:21 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: [EXTERNAL] Re: New Java vulnerability

On 12/12/21 6:37 am, Attila Fogarasi wrote:
> not so difficult on z/OS (and there is log4j usage on z/OS but unclear 
> that RCE can do much harm on a properly secured z/OS system -- this 
> will vary by what application is using the log4j library).

Fingers crossed! The truth is almost no mainframe network (worth its
salt) is visible to outside world. But that doesn't stop the public servers 
being compromised.

A quick fix if you are unable to update to the patched version is to use the 
following Java property:

‐Dlog4j2.formatMsgNoLookups=True



--
For IBM-MAIN subscribe / signoff / archive access instructions, send email to 
lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
The information contained in this message is confidential, protected from 
disclosure and may be legally privileged. If the reader of this message is not 
the intended recipient or an employee or agent responsible for delivering this 
message to the intended recipient, you are hereby notified that any disclosure, 
distribution, copying, or any action taken or action omitted in reliance on it, 
is strictly prohibited and may be unlawful. If you have received this 
communication in error, please notify us immediately by replying to this 
message and destroy the material in its entirety, whether in electronic or hard 
copy format. Thank you.


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: New Java vulnerability

2021-12-14 Thread Phil Smith III
Itschak wrote:

> I agree. However, the reason we offer such scan is that there other vendor
>products installed in uss. It is not ibm only issue. The second one is
>attitude. Remember the days of Spectre? Ibm never admitted they have it
>until they had a solution and clients was unsure if they are in risk or
not.

>If you scan, you have a list of products and vendors you can query.

 

Absolutely-I in no way intended to diss your tool, Itschak! It sounds
useful. Just noting that folks cannot tell whether to worry until they
actually hear from the vendors, and that some of the time it will be "Yes,
it's there, but not an issue" and perhaps "You can whack these jars".


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: New Java vulnerability

2021-12-14 Thread Dave Jousma
On Tue, 14 Dec 2021 10:38:43 -0500, Phil Smith III  wrote:

>Making things even more confusing, there are lots of ways to use log4j, only
>some of which expose this vulnerability. For example, Splunk uses it, but
>says the exploit matters on "All supported non-Windows versions of 8.1.x and
>8.2.x only if Hadoop (Hunk) and/or DFS are used."
>
>
>
>It appears that the offending libraries are always installed, so some/many
>systems will show up in scans, but are not really at risk. The good news is
>that in those cases, those jars can be renamed/moved/removed to clear up the
>false positive.

you bring up a good point.  there are hits for this in base JAVA V8 both 31bit 
and 64bit, so consequently, any JAVA based app could be using, without actually 
including their own copy of log4j.   That also means that the local workaround 
is a bit more difficult too, as the override isn't a global change, unless I am 
misunderstanding?

Isnt this a run-time option?

‐Dlog4j2.formatMsgNoLookups=True

No one has said if there is a method to set this as a default in JAVA itself if 
no one specifies something different.

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: New Java vulnerability

2021-12-14 Thread Itschak Mugzach
Phil,

I agree. However, the reason we offer such scan is that there other vendor
products installed in uss. It is not ibm only issue. The second one is
attitude. Remember the days of Spectre? Ibm never admitted they have it
until they had a solution and clients was unsure if they are in risk or not.

If you scan, you have a list of products and vendors you can query.

ITschak

בתאריך יום ג׳, 14 בדצמ׳ 2021 ב-17:39 מאת Phil Smith III :

> Making things even more confusing, there are lots of ways to use log4j,
> only
> some of which expose this vulnerability. For example, Splunk uses it, but
> says the exploit matters on "All supported non-Windows versions of 8.1.x
> and
> 8.2.x only if Hadoop (Hunk) and/or DFS are used."
>
>
>
> It appears that the offending libraries are always installed, so some/many
> systems will show up in scans, but are not really at risk. The good news is
> that in those cases, those jars can be renamed/moved/removed to clear up
> the
> false positive.
>
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>
-- 

*| **Itschak Mugzach | Director | SecuriTeam Software **|** IronSphere
Platform* *|* *Information Security Continuous Monitoring for Z/OS, zLinux
and IBM I **|  *

*|* *Email**: i_mugz...@securiteam.co.il **|* *Mob**: +972 522 986404 **|*
*Skype**: ItschakMugzach **|* *Web**: www.Securiteam.co.il  **|*

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: New Java vulnerability

2021-12-14 Thread Phil Smith III
Making things even more confusing, there are lots of ways to use log4j, only
some of which expose this vulnerability. For example, Splunk uses it, but
says the exploit matters on "All supported non-Windows versions of 8.1.x and
8.2.x only if Hadoop (Hunk) and/or DFS are used."

 

It appears that the offending libraries are always installed, so some/many
systems will show up in scans, but are not really at risk. The good news is
that in those cases, those jars can be renamed/moved/removed to clear up the
false positive.


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: New Java vulnerability

2021-12-14 Thread Dave Jousma
There is a IBM webinar spinning up for 12/15

IBM Security is hosting a client webinar about Log4Shell on Wednesday, December 
15, 11 a.m. ET. Our X-Force team will review the implications of Log4Shell, who 
may be impacted, and steps clients can take to protect themselves today and in 
the future. 

To sign up for the event:
https://event.on24.com/wcc/r/3570143/66C51D1B65F9821B262E9E0A36CC69C1

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: New Java vulnerability

2021-12-14 Thread Itschak Mugzach
Cheryl,

We offer a free program to scan USS for log4j.jar, log4j-core-2*.jar and to
scan other JAR files for these includes. Contact me if you want a copy.

>From feedback we got from people that ran it, there are many other vendor
products that make use of it. SAS is one of them.

Best,
ITschak

*| **Itschak Mugzach | Director | SecuriTeam Software **|** IronSphere
Platform* *|* *Information Security Continuous Monitoring for Z/OS, zLinux
and IBM I **|  *

*|* *Email**: i_mugz...@securiteam.co.il **|* *Mob**: +972 522 986404 **|*
*Skype**: ItschakMugzach **|* *Web**: www.Securiteam.co.il  **|*





On Tue, Dec 14, 2021 at 4:29 PM Cheryl Watson 
wrote:

> Hi s1m0n,
>
> Thanks so much!
>
> Cheryl
>
> -Original Message-
> From: IBM Mainframe Discussion List  On Behalf
> Of Filip Palian
> Sent: Tuesday, December 14, 2021 12:26 AM
> To: IBM-MAIN@LISTSERV.UA.EDU
> Subject: Re: New Java vulnerability
>
> wt., 14 gru 2021 o 16:23 Cheryl Watson 
> napisał(a):
>
> >
> > Does IBM have anything to say about this?  I assume it's on their
> > security portal.
> >
>
>
> https://www.ibm.com/blogs/psirt/an-update-on-the-apache-log4j-cve-2021-44228-vulnerability/
>
>
> Cheers,
> s1m0n
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions, send email
> to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>
> --
> For IBM-MAIN subscribe / signoff / archive access instructions,
> send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN
>

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: New Java vulnerability

2021-12-14 Thread Cheryl Watson
Hi s1m0n,

Thanks so much!

Cheryl

-Original Message-
From: IBM Mainframe Discussion List  On Behalf Of 
Filip Palian
Sent: Tuesday, December 14, 2021 12:26 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: New Java vulnerability

wt., 14 gru 2021 o 16:23 Cheryl Watson  napisał(a):

>
> Does IBM have anything to say about this?  I assume it's on their 
> security portal.
>

https://www.ibm.com/blogs/psirt/an-update-on-the-apache-log4j-cve-2021-44228-vulnerability/


Cheers,
s1m0n

--
For IBM-MAIN subscribe / signoff / archive access instructions, send email to 
lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: New Java vulnerability

2021-12-14 Thread Seymour J Metz
"You can program in C in any language":

(NOSUBSCRIPTRANGE)(NOSTRINGRANGE)BEGIN;
DECLARE X(50);
DO I=1 TO 100;
X(I) = 0;
END;
END;

"But it saves 2.7 femtoseconds!"


--
Shmuel (Seymour J.) Metz
http://mason.gmu.edu/~smetz3


From: IBM Mainframe Discussion List [IBM-MAIN@LISTSERV.UA.EDU] on behalf of 
David Crayford [dcrayf...@gmail.com]
Sent: Tuesday, December 14, 2021 1:54 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: New Java vulnerability

On 14/12/21 12:12 pm, Andrew Rowley wrote:
> On 14/12/2021 12:30 am, Filip Palian wrote:
>> My intention was to share information about the vulnerabilities
>> affecting
>> Java language. (Without performing a proper comparison) I'd prefer
>> not to
>> get into discussion about one language being less secure than another.
> "Java is insecure" is an implicit comparison with other languages. If
> there isn't another language that is more secure, the statement is as
> I said, unfair.


Not as insecure as C and the notorious buffer overflow exploits due to
poor language/library design. Java is noway near as insecure and as you
say this issue is due to an vulnerability in a library.


--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: New Java vulnerability

2021-12-14 Thread Filip Palian
wt., 14 gru 2021 o 15:12 Andrew Rowley 
napisał(a):

> On 14/12/2021 12:30 am, Filip Palian wrote:
> > My intention was to share information about the vulnerabilities affecting
> > Java language. (Without performing a proper comparison) I'd prefer not to
> > get into discussion about one language being less secure than another.
> "Java is insecure" is an implicit comparison with other languages. If
> there isn't another language that is more secure, the statement is as I
> said, unfair.
>

I didn't state in this thread at any point that "java is insecure".

It does sound like it is effectively a sandbox bypass. Can you run other
> languages e.g. C in the same environment securely?


Unfortunately, I won't be able to answer this question.


> If one language has
> security but there are occasional vulnerabilities discovered, and
> another has no security at all, is it reasonable to call the first
> insecure?
>

In order to compare security of programming languages one would have to
consider technical and non-technical aspects.

For example:
- Frequency at which security fixes are released (and how quickly they're
available since vulnerability discovery/report);
- The entire SDLC process;
- Built-in security controls such as type-safety, safe memory management
etc.;
- Number of already identified vulnerabilities in the implementation.
- and much more.

As always, the right tool for the right job should be used at the right
time.


Cheers,
s1m0n

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: New Java vulnerability

2021-12-13 Thread David Crayford

On 14/12/21 12:12 pm, Andrew Rowley wrote:

On 14/12/2021 12:30 am, Filip Palian wrote:
My intention was to share information about the vulnerabilities 
affecting
Java language. (Without performing a proper comparison) I'd prefer 
not to

get into discussion about one language being less secure than another.
"Java is insecure" is an implicit comparison with other languages. If 
there isn't another language that is more secure, the statement is as 
I said, unfair.



Not as insecure as C and the notorious buffer overflow exploits due to 
poor language/library design. Java is noway near as insecure and as you 
say this issue is due to an vulnerability in a library.



--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


Re: New Java vulnerability

2021-12-13 Thread Filip Palian
wt., 14 gru 2021 o 16:23 Cheryl Watson  napisał(a):

>
> Does IBM have anything to say about this?  I assume it's on their security
> portal.
>

https://www.ibm.com/blogs/psirt/an-update-on-the-apache-log4j-cve-2021-44228-vulnerability/


Cheers,
s1m0n

--
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to lists...@listserv.ua.edu with the message: INFO IBM-MAIN


  1   2   3   4   5   6   7   8   9   >