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

Yes, of course. For example, z/OSMF, WAS, z/OS Connect etc are all started tasks written in Java. The product I'm working on right now can run as an MVS started task or on distributed. We have code that starts a console listener thread if running on z/OS which handles modify commands to refresh the server if the config changes. JZOS is awesome. The batch launcher handles STOP commands under the covers. You can write a handler for STOP commands to run cleanup code. Here's the doc for setting up the server as a started task.

https://www.ibm.com/docs/en/om-im/5.6.0?topic=started-configuring-omegamon-data-connect

The JZOS Batch Launcher users guide https://public.dhe.ibm.com/software/Java/Java80/JZOS/jzos_users_guide_v8.pdf



I suppose I might ask the same question with regard to Python. Also is Python 
"standard" with z/OS or would I have to solve the download and install issues?

You can either order Python on Shopz or download a pax file and install it yourself from a shell. It has a PID so you can pre-req it for products. Python is the industry standard language for AI/ML. It uses highly efficient libraries written in C/C++ such as NumPy, Torch, Tensorflow etc. You may have read that the z16 comes with on chip analytics accelerator for ML/AI. IBM have released details of the API, which is a 64-bit XPLINK C library. It's very similar to Tensorflow so it's almost certainly going to be wrapped in Python. Python is strategic on z/OS. It's simple to extend using C/C++ and has a ginormous standard library and eco-system. It's very simple to learn which is all goodness.

https://github.com/IBM/zDNN/blob/main/README.md



Serious questions.

Charles


-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On Behalf 
Of David Crayford
Sent: Tuesday, June 21, 2022 3:21 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Some UNIX file usage questions

On 22/06/2022 3:01 am, Kirk Wolf wrote:
FYI - JZOS includes a wrapper for __console2() - class com.ibm.jzos.MvsConsole
Indeed. We use the JZOS console listener for handling modify commands.
If Charles had Java skills he could have used the rotating log library
and JZOS which provides MVS STOP commands implicitly instead of having
to write new code. Which is interesting as he cited choosing REXX as
it's quicker to develop in as he already knows the language. In the land
of the blind the one eyed man is king :)


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

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


On Tue, Jun 21, 2022, at 11:54 AM, Charles Mills wrote:
_console2() does everything appropriate, including managing the CIB chain.

A batch job could, if appropriate, respond to STOP.

Charles


-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
Behalf Of Seymour J Metz
Sent: Tuesday, June 21, 2022 9:36 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Some UNIX file usage questions

Does _console2() delete the CIB in order to allow and additional MODIFY?

For a batch job, only the MODIFY CIB is an issue.

________________________________________
From: IBM Mainframe Discussion List <IBM-MAIN@LISTSERV.UA.EDU> on behalf of
David Crayford <dcrayf...@gmail.com>
Sent: Tuesday, June 21, 2022 9:17 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Some UNIX file usage questions

On 21/06/2022 9:09 pm, Seymour J Metz wrote:
If all that you want to do is to check for STOP, then it should be trivial
to do it in C++. If you also want to enable and look for MODIFY text, then
you need to use QEDIT. At that point it's easier to do it in HLASM.

The __console2() C/C++ RTL function does everything you could want to do
with console services other than START, which I don't care about
https://nam11.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.ibm.co
m%2Fdocs%2Fen%2Fzos%2F2.1.0%3Ftopic%3Dfunctions-console2-enhanced-console-co
mmunication-services&amp;data=05%7C01%7Csmetz3%40gmu.edu%7C77d498419638409e4
ab608da53888b89%7C9e857255df574c47a0c00546460380cb%7C0%7C0%7C637914143163123
218%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1h
aWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&amp;sdata=DuHrRUBqMMJI%2BOuri59jghQ37N%2F
qWy189iFtag5qn1A%3D&amp;reserved=0.

Maybe Charles will open up his code for inspection and (just for fun) we
can see if it's easier to implement in C++ or Java :)


I've used Assembler H and REXX in an environment where code and design
reviews were mandatory. And, yes, discussions included alternate ways of
doing things, some accepted, some not.
--
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: Monday, June 20, 2022 1:34 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Some UNIX file usage questions

I could care less about Python. What is disconcerting is why you would
choose REXX/Assembler when you could write the same thing with less code
and complexity using C++ which you already know. Maybe you're just
having fun and there is nothing wrong with that. There is nobody to
review your code and ask for changes like where I work.

On 21/06/2022 1:31 am, Charles Mills wrote:
I am not the client. I guess the client makes its decisions based on a
variety of factors. I have many skills that are valuable to the client, and
I would guess that "best language for the application in the opinion of a
guy on IBMMAIN" (as opposed to "demonstrably adequate language") is not high
on the client's list of factors.
I think you are engaging in "engineer-ism" (there may be a better word?).
Python may well be the best language for the job, for some values of best.
Rexx is a perfectly adequate language for the job. "Integrating a new
developer" would be for the client what "implementing a new language
environment" would be for me.
Charles


-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
Behalf Of David Crayford
Sent: Monday, June 20, 2022 9:58 AM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Some UNIX file usage questions

I take it you must be the client? I can't fathom any client who would be
stupid enough to allow a vendor to write code in their language of
choice due to their personal skill set. That's technical debt.

On 20/06/2022 11:34 pm, Charles Mills wrote:
Aww David, I respect you more than that reply.

Of course I could learn to write Hello World in Python more quickly than
I can write this sentence. But what I alluded to is that past experience
teaches me that getting from Hello World to a working system on z/OS is many
days of agony.
Charles


-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU] On
Behalf Of David Crayford
Sent: Sunday, June 19, 2022 9:32 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Some UNIX file usage questions

You could have learned Python in the time it took you to write this
email.
On 20/06/2022 1:15 am, Charles Mills wrote:
Why not use Python? Good question.
1. I can undoubtedly do it perfectly satisfactorily, and almost
certainly more quickly, in Rexx (because of the learning curve). I would
have trouble justifying billing the client for my Python learning time when
there is little benefit (that I know of -- correct me if I am wrong) for the
client who is paying the bills.
Why not, then, learn Python on my own time? Don't I want to learn
Python? Yes I do, but there are only so many hours in a day, and there are
other things I want to learn more than I do Python. For example, I would
rather spend the time learning to make the Roman-Jewish fried artichokes
that are in the current Cooks Illustrated. Learning Python is just not very
high on my bucket list. It's there, but probably not high enough to ever
rise to the top.
2. I know exactly how to execute a Started Task written in Rexx, and I
know most of the gotchas. In my experience, THAT is the problem with the
"new tools" on z/OS. What would I have to do to execute a Started Task
written in Python? What are the gotchas? Heck, what do I have to do to set
up any Python environment at all? That is the time-consuming issue, and it
holds about zero personal gratification for me. I could probably learn the
Python language pretty readily, and it would be one more notch in my belt.
Solving the probable gotchas of getting Python to actually do productive
work on z/OS -- not so much.
....
Not for me, and probably not for the "report" (I am flattering the
requirement calling it a report -- maybe call it an "alert") that the client
wants. And again, a learning curve that is difficult to justify.
So I think I will write it in Rexx, with perhaps a little bit of
Assembler.
Does your client REALLY want to maintain assembler code? Our company
policy is not to use assembler for new code due to lack of available
skills which will only get worse.


Charles


-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-MAIN@LISTSERV.UA.EDU]
On Behalf Of David Crayford
Sent: Saturday, June 18, 2022 11:43 PM
To: IBM-MAIN@LISTSERV.UA.EDU
Subject: Re: Some UNIX file usage questions

On 19/06/2022 1:33 am, Paul Gilmartin wrote:
On Sat, 18 Jun 2022 09:51:45 -0700, Charles Mills wrote:
          ...
I picture writing the started task in Rexx, so I would have to write
to a DD
name allocated to the UNIX file (either dynamically or with JCL), not
with
"native" C fopen(), fwrite(), etc. Does that change any of the
answers?
Why?  In Rexx you can "address SYASCALL write ..." instead.
Why REXX? Is it a case of knowing the banjo so you play Stairway to
Heaven in the style of Earl Schruggs?

Why not use IBMs z/OS Python? You can then use SQLite instead of a file
which will significantly simplify writing reports. In fact, it would
trivial to serve those
reports as a REST API and put a nice WebUI on top using a simple
template that supports data tables.

----------------------------------------------------------------------
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

----------------------------------------------------------------------
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

----------------------------------------------------------------------
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

----------------------------------------------------------------------
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

Reply via email to