Discussion:
AW: Rexx SORT (was: ... Job Scheduler ... )
(too old to reply)
Paul Gilmartin
2017-06-07 16:44:38 UTC
Permalink
Raw Message
http://bernd-oppolzer.de/blog_20150115_151000.htm
<http://bernd-oppolzer.de/blog_20150115_151000.htm> .
this Contains a REXX Procedure
to sort a stem variable.
See quicksort_nonrec
o Of course. But why should it be necessary to reinvent the wheel when
DFSORT has vast capabilities not practical to duplicate in Rexx?
address LINKMVS 'ICEMAN' with ,
DD:SORTIN stem F1. ,
DD:SORTOUT stem F2.
o And while I chose SORT as an example, I intended to consider a more
general solution. Imagine a facility that could invoke not only SORT, but:
- IEBUPDTE witn SYSIN, SYSUT1, and SYSUT2 assigned to stems.
- ISRSUPC with OLD, NEW, and DELTA assigned to stems.
- Etc. Much like ANSI Rexx.

-- gil

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Dan Little
2017-06-07 17:10:28 UTC
Permalink
Raw Message
Hi

I am curious if anyone is using this agent that comes with IBM Sterling Connect Direct? It is a separate downloaded Java jar file to run on Z/OS or other OSes.

We are having issues getting it working despite a ticket open with IBM so I am curious if anyone is using it on z/OS?

Thanks

Dan


--------------------------------------------------
http://bernd-oppolzer.de/blog_20150115_151000.htm
<http://bernd-oppolzer.de/blog_20150115_151000.htm> .
this Contains a REXX Procedure
to sort a stem variable.
See quicksort_nonrec
o Of course. But why should it be necessary to reinvent the wheel when
DFSORT has vast capabilities not practical to duplicate in Rexx?
address LINKMVS 'ICEMAN' with ,
DD:SORTIN stem F1. ,
DD:SORTOUT stem F2.
o And while I chose SORT as an example, I intended to consider a more
- IEBUPDTE witn SYSIN, SYSUT1, and SYSUT2 assigned to stems.
- ISRSUPC with OLD, NEW, and DELTA assigned to stems.
- Etc. Much like ANSI Rexx.
-- gil
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Elardus Engelbrecht
2017-06-07 17:13:16 UTC
Permalink
Raw Message
http://bernd-oppolzer.de/blog_20150115_151000.htm
this Contains a REXX Procedure to sort a stem variable. See quicksort_nonrec
o Of course. But why should it be necessary to reinvent the wheel when DFSORT has vast capabilities not practical to duplicate in Rexx?
Could you please be kind to tell us what function(s) you have in mind?

On one side, REXX has this nice PARSE function. hard to duplicate that in DFSORT, but do-able.
On other side, DFSORT handles SMF records and their weird timestamps better. (Yes, I know REXX can handle VBS records these days.)
address LINKMVS 'ICEMAN' with ,
DD:SORTIN stem F1. ,
DD:SORTOUT stem F2.
You can do the same with REXX statements like this:

"ALLOC F(SORTIN).... blah .... "
"EXECIO * DISKR SORTIN (STEM F1. FINIS"
"FREE F(SORTIN)"
... and then call DFSORT and sort out your magic

In fact, I have some RYO REXX progs which call DFSORT to sort something out...
- IEBUPDTE witn SYSIN, SYSUT1, and SYSUT2 assigned to stems.
- ISRSUPC with OLD, NEW, and DELTA assigned to stems.
- Etc. Much like ANSI Rexx.
You can invoke anything with REXX including SDSF, IEBGENER, IEBCOPY, etc. as long you pass/receive parameters and DD correctly.

In fact, zSecure ISPF panels are mostly driven by REXX.

But, I agree with you, something standardised so you can do what you desire would really be useful.

Something like "ALLOC F(SYSIN) <Stemvariable name> ..."

Also FREE(FSYSIN) which -optionally- drops those Stems. (I said optionally, because, you may need to free up SYSIN immediately, but continue to handle those stems.)

Just some little idle ideas, yaaaaa.... ;-)

Groete / Greetings
Elardus Engelbrecht

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Nims,Alva John , Al
2017-06-07 17:26:50 UTC
Permalink
Raw Message
This is getting to be like a discussion that was had on the REXX list recently, as in it would be nice if there was an available PIPE type of command available, oh wait there is:

The product where IBM has made a PIPE command available:
http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=dd&subtype=sm&htmlfid=897/ENUS5655-D45

Sorting is very simple there:
PIPE stem xy. | sort 1 5 | stem yx.
Or PIPE < indsn | sort 1 5 | > outdsn

These are simple examples and not everything that can be done, but when I was using it (my previous job) it was reasonably quick in execution. Now I have to do the allocation of SORTIN, SORTOUT and SYSIN (control cards) then invoke SORT, very cumbersome compared to the simple PIPE command version.

Al Nims
UFIT
University of Florida
(352) 273-1298
@Home

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Elardus Engelbrecht
Sent: Wednesday, June 07, 2017 1:14 PM
To: IBM-***@LISTSERV.UA.EDU
Subject: Re: AW: Rexx SORT (was: ... Job Scheduler ... )
http://bernd-oppolzer.de/blog_20150115_151000.htm
this Contains a REXX Procedure to sort a stem variable. See
quicksort_nonrec
o Of course. But why should it be necessary to reinvent the wheel when DFSORT has vast capabilities not practical to duplicate in Rexx?
Could you please be kind to tell us what function(s) you have in mind?

On one side, REXX has this nice PARSE function. hard to duplicate that in DFSORT, but do-able.
On other side, DFSORT handles SMF records and their weird timestamps better. (Yes, I know REXX can handle VBS records these days.)
address LINKMVS 'ICEMAN' with ,
DD:SORTIN stem F1. ,
DD:SORTOUT stem F2.
You can do the same with REXX statements like this:

"ALLOC F(SORTIN).... blah .... "
"EXECIO * DISKR SORTIN (STEM F1. FINIS"
"FREE F(SORTIN)"
... and then call DFSORT and sort out your magic

In fact, I have some RYO REXX progs which call DFSORT to sort something out...
- IEBUPDTE witn SYSIN, SYSUT1, and SYSUT2 assigned to stems.
- ISRSUPC with OLD, NEW, and DELTA assigned to stems.
- Etc. Much like ANSI Rexx.
You can invoke anything with REXX including SDSF, IEBGENER, IEBCOPY, etc. as long you pass/receive parameters and DD correctly.

In fact, zSecure ISPF panels are mostly driven by REXX.

But, I agree with you, something standardised so you can do what you desire would really be useful.

Something like "ALLOC F(SYSIN) <Stemvariable name> ..."

Also FREE(FSYSIN) which -optionally- drops those Stems. (I said optionally, because, you may need to free up SYSIN immediately, but continue to handle those stems.)

Just some little idle ideas, yaaaaa.... ;-)

Groete / Greetings
Elardus Engelbrecht

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

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Dyck, Lionel B. , TRA
2017-06-07 17:30:39 UTC
Permalink
Raw Message
Please see this RFE: https://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=47699


--------------------------------------------------------------------------
Lionel B. Dyck

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Nims,Alva John (Al)
Sent: Wednesday, June 07, 2017 12:28 PM
To: IBM-***@LISTSERV.UA.EDU
Subject: [EXTERNAL] Re: AW: Rexx SORT (was: ... Job Scheduler ... )

This is getting to be like a discussion that was had on the REXX list recently, as in it would be nice if there was an available PIPE type of command available, oh wait there is:

The product where IBM has made a PIPE command available:
http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=dd&subtype=sm&htmlfid=897/ENUS5655-D45

Sorting is very simple there:
PIPE stem xy. | sort 1 5 | stem yx.
Or PIPE < indsn | sort 1 5 | > outdsn

These are simple examples and not everything that can be done, but when I was using it (my previous job) it was reasonably quick in execution. Now I have to do the allocation of SORTIN, SORTOUT and SYSIN (control cards) then invoke SORT, very cumbersome compared to the simple PIPE command version.

Al Nims
UFIT
University of Florida
(352) 273-1298
@Home

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Elardus Engelbrecht
Sent: Wednesday, June 07, 2017 1:14 PM
To: IBM-***@LISTSERV.UA.EDU
Subject: Re: AW: Rexx SORT (was: ... Job Scheduler ... )
http://bernd-oppolzer.de/blog_20150115_151000.htm
this Contains a REXX Procedure to sort a stem variable. See
quicksort_nonrec
o Of course. But why should it be necessary to reinvent the wheel when DFSORT has vast capabilities not practical to duplicate in Rexx?
Could you please be kind to tell us what function(s) you have in mind?

On one side, REXX has this nice PARSE function. hard to duplicate that in DFSORT, but do-able.
On other side, DFSORT handles SMF records and their weird timestamps better. (Yes, I know REXX can handle VBS records these days.)
address LINKMVS 'ICEMAN' with ,
DD:SORTIN stem F1. ,
DD:SORTOUT stem F2.
You can do the same with REXX statements like this:

"ALLOC F(SORTIN).... blah .... "
"EXECIO * DISKR SORTIN (STEM F1. FINIS"
"FREE F(SORTIN)"
... and then call DFSORT and sort out your magic

In fact, I have some RYO REXX progs which call DFSORT to sort something out...
- IEBUPDTE witn SYSIN, SYSUT1, and SYSUT2 assigned to stems.
- ISRSUPC with OLD, NEW, and DELTA assigned to stems.
- Etc. Much like ANSI Rexx.
You can invoke anything with REXX including SDSF, IEBGENER, IEBCOPY, etc. as long you pass/receive parameters and DD correctly.

In fact, zSecure ISPF panels are mostly driven by REXX.

But, I agree with you, something standardised so you can do what you desire would really be useful.

Something like "ALLOC F(SYSIN) <Stemvariable name> ..."

Also FREE(FSYSIN) which -optionally- drops those Stems. (I said optionally, because, you may need to free up SYSIN immediately, but continue to handle those stems.)

Just some little idle ideas, yaaaaa.... ;-)

Groete / Greetings
Elardus Engelbrecht

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

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

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Dyck, Lionel B. , TRA
2017-06-07 18:00:57 UTC
Permalink
Raw Message
The url appears to have wrapped

Try this

http://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=47699


--------------------------------------------------------------------------
Lionel B. Dyck

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Paul Gilmartin
Sent: Wednesday, June 07, 2017 12:57 PM
To: IBM-***@LISTSERV.UA.EDU
Subject: [EXTERNAL] Re: Rexx SORT (was: ... Job Scheduler ... )
Post by Dyck, Lionel B. , TRA
https://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=
47699
That gives me:

Oops, that's not right!

Sorry, the page you're looking for cannot be displayed

Please try again later.

500 Internal Server Error

-- gil

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

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Nims,Alva John , Al
2017-06-07 18:10:52 UTC
Permalink
Raw Message
Thank you Lionel, that is the piece I forgot to find and add.

Al Nims
UFIT
University of Florida
(352) 273-1298
@Home

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Dyck, Lionel B. (TRA)
Sent: Wednesday, June 07, 2017 1:31 PM
To: IBM-***@LISTSERV.UA.EDU
Subject: Re: AW: Rexx SORT (was: ... Job Scheduler ... )

Please see this RFE: https://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=47699


--------------------------------------------------------------------------
Lionel B. Dyck

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Nims,Alva John (Al)
Sent: Wednesday, June 07, 2017 12:28 PM
To: IBM-***@LISTSERV.UA.EDU
Subject: [EXTERNAL] Re: AW: Rexx SORT (was: ... Job Scheduler ... )

This is getting to be like a discussion that was had on the REXX list recently, as in it would be nice if there was an available PIPE type of command available, oh wait there is:

The product where IBM has made a PIPE command available:
http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=dd&subtype=sm&htmlfid=897/ENUS5655-D45

Sorting is very simple there:
PIPE stem xy. | sort 1 5 | stem yx.
Or PIPE < indsn | sort 1 5 | > outdsn

These are simple examples and not everything that can be done, but when I was using it (my previous job) it was reasonably quick in execution. Now I have to do the allocation of SORTIN, SORTOUT and SYSIN (control cards) then invoke SORT, very cumbersome compared to the simple PIPE command version.

Al Nims
UFIT
University of Florida
(352) 273-1298
@Home

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Elardus Engelbrecht
Sent: Wednesday, June 07, 2017 1:14 PM
To: IBM-***@LISTSERV.UA.EDU
Subject: Re: AW: Rexx SORT (was: ... Job Scheduler ... )
http://bernd-oppolzer.de/blog_20150115_151000.htm
this Contains a REXX Procedure to sort a stem variable. See
quicksort_nonrec
o Of course. But why should it be necessary to reinvent the wheel when DFSORT has vast capabilities not practical to duplicate in Rexx?
Could you please be kind to tell us what function(s) you have in mind?

On one side, REXX has this nice PARSE function. hard to duplicate that in DFSORT, but do-able.
On other side, DFSORT handles SMF records and their weird timestamps better. (Yes, I know REXX can handle VBS records these days.)
address LINKMVS 'ICEMAN' with ,
DD:SORTIN stem F1. ,
DD:SORTOUT stem F2.
You can do the same with REXX statements like this:

"ALLOC F(SORTIN).... blah .... "
"EXECIO * DISKR SORTIN (STEM F1. FINIS"
"FREE F(SORTIN)"
... and then call DFSORT and sort out your magic

In fact, I have some RYO REXX progs which call DFSORT to sort something out...
- IEBUPDTE witn SYSIN, SYSUT1, and SYSUT2 assigned to stems.
- ISRSUPC with OLD, NEW, and DELTA assigned to stems.
- Etc. Much like ANSI Rexx.
You can invoke anything with REXX including SDSF, IEBGENER, IEBCOPY, etc. as long you pass/receive parameters and DD correctly.

In fact, zSecure ISPF panels are mostly driven by REXX.

But, I agree with you, something standardised so you can do what you desire would really be useful.

Something like "ALLOC F(SYSIN) <Stemvariable name> ..."

Also FREE(FSYSIN) which -optionally- drops those Stems. (I said optionally, because, you may need to free up SYSIN immediately, but continue to handle those stems.)

Just some little idle ideas, yaaaaa.... ;-)

Groete / Greetings
Elardus Engelbrecht

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

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

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

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Paul Gilmartin
2017-06-07 18:24:53 UTC
Permalink
Raw Message
Post by Nims,Alva John , Al
http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=dd&subtype=sm&htmlfid=897/ENUS5655-D45
That's obsolescent. It should be brought up to the level of
the current CMS Pipelines, its cousin product. The right way to
do this is to share as much source code as possible with minimal
system-specific interfaces. But when I suggested this on another
list Alan Altmark (IIRC) insisted that the effort to maintain the
two as separate products is less. I suspect Alan is overly
devoted to Conway's Law. I believe HLASM, Binder, SuperC, and
others are supported for both z/OS and CMS from single sources,
much to their benefit.
Post by Nims,Alva John , Al
PIPE stem xy. | sort 1 5 | stem yx.
Or PIPE < indsn | sort 1 5 | > outdsn
But that's one utility that has been specifically repackaged as
a Pipelines stage. Rather, what's needed is a more general scheme
for invoking any utility from Pipelines using pipe connectors as
its data sets.

That's impractical on CMS because of the limited (nonexistent?)
support of multiprocessing in CMS. It should be a better fit in z/OS.

-- gil

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Tony Thigpen
2017-06-08 08:52:33 UTC
Permalink
Raw Message
Could you point me to the REXX list?

Also, we have had a SORTSTEM function in VSE REXX for a LONG time. Does
z/OS not have SORTSTEM?

Tony Thigpen
Post by Nims,Alva John , Al
http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=dd&subtype=sm&htmlfid=897/ENUS5655-D45
PIPE stem xy. | sort 1 5 | stem yx.
Or PIPE < indsn | sort 1 5 | > outdsn
These are simple examples and not everything that can be done, but when I was using it (my previous job) it was reasonably quick in execution. Now I have to do the allocation of SORTIN, SORTOUT and SYSIN (control cards) then invoke SORT, very cumbersome compared to the simple PIPE command version.
Al Nims
UFIT
University of Florida
(352) 273-1298
@Home
-----Original Message-----
Sent: Wednesday, June 07, 2017 1:14 PM
Subject: Re: AW: Rexx SORT (was: ... Job Scheduler ... )
http://bernd-oppolzer.de/blog_20150115_151000.htm
this Contains a REXX Procedure to sort a stem variable. See
quicksort_nonrec
o Of course. But why should it be necessary to reinvent the wheel when DFSORT has vast capabilities not practical to duplicate in Rexx?
Could you please be kind to tell us what function(s) you have in mind?
On one side, REXX has this nice PARSE function. hard to duplicate that in DFSORT, but do-able.
On other side, DFSORT handles SMF records and their weird timestamps better. (Yes, I know REXX can handle VBS records these days.)
address LINKMVS 'ICEMAN' with ,
DD:SORTIN stem F1. ,
DD:SORTOUT stem F2.
"ALLOC F(SORTIN).... blah ...."
"EXECIO * DISKR SORTIN (STEM F1. FINIS"
"FREE F(SORTIN)"
... and then call DFSORT and sort out your magic
In fact, I have some RYO REXX progs which call DFSORT to sort something out...
- IEBUPDTE witn SYSIN, SYSUT1, and SYSUT2 assigned to stems.
- ISRSUPC with OLD, NEW, and DELTA assigned to stems.
- Etc. Much like ANSI Rexx.
You can invoke anything with REXX including SDSF, IEBGENER, IEBCOPY, etc. as long you pass/receive parameters and DD correctly.
In fact, zSecure ISPF panels are mostly driven by REXX.
But, I agree with you, something standardised so you can do what you desire would really be useful.
Something like "ALLOC F(SYSIN) <Stemvariable name> ..."
Also FREE(FSYSIN) which -optionally- drops those Stems. (I said optionally, because, you may need to free up SYSIN immediately, but continue to handle those stems.)
Just some little idle ideas, yaaaaa.... ;-)
Groete / Greetings
Elardus Engelbrecht
----------------------------------------------------------------------
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Nims,Alva John , Al
2017-06-08 12:58:12 UTC
Permalink
Raw Message
No, z/OS REXX does not have a SORTSTEM function built-in. I currently have a STEMSORT function, but it is from a 3rd party vendor.

Al Nims
Systems Admin/Programmer 3
UFIT
Universtiy of Florida
(352) 273-1298

-----Original Message-----
From: IBM Mainframe Discussion List [mailto:IBM-***@LISTSERV.UA.EDU] On Behalf Of Tony Thigpen
Sent: Thursday, June 08, 2017 4:54 AM
To: IBM-***@LISTSERV.UA.EDU
Subject: Re: AW: Rexx SORT (was: ... Job Scheduler ... )

Could you point me to the REXX list?

Also, we have had a SORTSTEM function in VSE REXX for a LONG time. Does z/OS not have SORTSTEM?

Tony Thigpen
Post by Nims,Alva John , Al
http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=dd&subtype=
sm&htmlfid=897/ENUS5655-D45
PIPE stem xy. | sort 1 5 | stem yx.
Or PIPE < indsn | sort 1 5 | > outdsn
These are simple examples and not everything that can be done, but when I was using it (my previous job) it was reasonably quick in execution. Now I have to do the allocation of SORTIN, SORTOUT and SYSIN (control cards) then invoke SORT, very cumbersome compared to the simple PIPE command version.
Al Nims
UFIT
University of Florida
(352) 273-1298
@Home
-----Original Message-----
On Behalf Of Elardus Engelbrecht
Sent: Wednesday, June 07, 2017 1:14 PM
Subject: Re: AW: Rexx SORT (was: ... Job Scheduler ... )
http://bernd-oppolzer.de/blog_20150115_151000.htm
this Contains a REXX Procedure to sort a stem variable. See
quicksort_nonrec
o Of course. But why should it be necessary to reinvent the wheel when DFSORT has vast capabilities not practical to duplicate in Rexx?
Could you please be kind to tell us what function(s) you have in mind?
On one side, REXX has this nice PARSE function. hard to duplicate that in DFSORT, but do-able.
On other side, DFSORT handles SMF records and their weird timestamps
better. (Yes, I know REXX can handle VBS records these days.)
address LINKMVS 'ICEMAN' with ,
DD:SORTIN stem F1. ,
DD:SORTOUT stem F2.
"ALLOC F(SORTIN).... blah ...."
"EXECIO * DISKR SORTIN (STEM F1. FINIS"
"FREE F(SORTIN)"
... and then call DFSORT and sort out your magic
In fact, I have some RYO REXX progs which call DFSORT to sort something out...
- IEBUPDTE witn SYSIN, SYSUT1, and SYSUT2 assigned to stems.
- ISRSUPC with OLD, NEW, and DELTA assigned to stems.
- Etc. Much like ANSI Rexx.
You can invoke anything with REXX including SDSF, IEBGENER, IEBCOPY, etc. as long you pass/receive parameters and DD correctly.
In fact, zSecure ISPF panels are mostly driven by REXX.
But, I agree with you, something standardised so you can do what you desire would really be useful.
Something like "ALLOC F(SYSIN) <Stemvariable name> ..."
Also FREE(FSYSIN) which -optionally- drops those Stems. (I said
optionally, because, you may need to free up SYSIN immediately, but
continue to handle those stems.)
Just some little idle ideas, yaaaaa.... ;-)
Groete / Greetings
Elardus Engelbrecht
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN

----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Robert Wessel
2017-06-08 15:34:04 UTC
Permalink
Raw Message
I would strongly suggest *not* using that.

Neither implementation avoids the possibility of stack growth (the
system stack in one case, the explicit stack in the other) of order N
(IOW, proportional to the number of inputs), and neither takes even
the minimum actions which makes it unlikely (although still not
impossible) that the runtime becomes quadratic.

As to the stack size issue, it's not possible to avoid in a purely
recursive implementation (where you recurse on both the right and left
partitions), but on semi-recursive (where you recurse on one
partition, and then loop on the other - or equivalently, have the
second recursion replaced by tail recursion) and
non-recursive/explicit-stack (as implemented here), you can avoid the
problem by arraigning to process the smaller partition first (in the
semi-recursive implementation, you recurse on the smaller, loop on the
larger; in the explicit stack form, you push the larger partition onto
the stack first).

As to the problem of going quadratic, just picking the first or last
item in the partition will lead to quadratic behavior if input is
already sorted or in reverse order (depending on which picot you
choose). Usually people apply at least the median-of-three algorithm
(where the pivot chosen is the median of three elements in the
partition: the first, middle and last), which at least makes the
problem less likely. For pure Quicksort, it's impossible to avoid a
worst case quadratic runtime completely, which is why you usually
implement something like Musser's Introsort (short version: if it
looks like partitioning is not happening in a fairly balanced fashion,
it switches to Heapsort for the partition). Musser's paper is rather
interesting reading, not so much for the algorithm (which is one of
those obvious-in-hind-sight things), but for his discussion of just
how easy it is to generate pathological inputs for Quicksort.

IOW, without the corrections mentioned above, as is the case for the
implementation linked, an input of a million items might, require a
million units of stack space, and run in 1,000,000,000,000 time (as
opposed to the expected 20,000,000 time).

Basically Quicksort is best left to the experts.

IMO, non-experts should know about four sorts: Insertion sort,
Shellsort, Heapsort and Merge sort. The first three work without
extra (per-element) storage (like Quicksort), and are suitable for a
few dozen (Insertion sort), a few thousand (Shellsort), or quite large
inputs (Heap sort). Insertion sort is O(n**2), Shellsort is O(n**1.5)
and Heapsort is O(n log n) (like Quicksort). Unlike Quicksort, all
three of those have worst case runtimes of the same order as their
average runtimes, and none of them have pathological stack
requirements, even in their basic implementations. Heapsort is,
overall, about half the speed of Quicksort (at least when Quicksort is
running well) - Heapsort performs about the same number of steps, but
they're individually about twice the work as the inner loop of the
Quicksort partitioning operation.

Insertion sort and Shellsort are both rather simpler to implement than
either Quicksort (especially one with the corrections mentioned above
implemented), or Heapsort, and so should be the first choice for
appropriately sized inputs. Heap sort is about the same complexity to
implement as a "proper" Quicksort, but has the advantage of never
exhibiting bad runtime behavior.

As an aside, Introsort requires implementing both Quicksort and Heap
sort.

Merge sort is fast and predictable ( O(n log n) for both average and
worst case runtimes, with no possibility of excessive stack use), as
well as simple, but does require space for a link field (pointer) for
each element. If that's not a problem (and structures in memory often
has space for such a thing anyway), that's a sort to consider.

But again, I don't recommend implementing Quicksort - it's *far* to
harder to get right for non-specialists. And again, let me emphasize,
that the version presented is *not* "right".
May I suggest once again that you use
the quicksort Routine that I posted
Yesterday, using pure REXX?
you will see that it is very fast.
but: you have to use the
non recursive Variant, because
Most REXX Implementations
will be Limited on the number
of call Levels
Kind regards
Bernd
--- Original-Nachricht ---
Von: Nims,Alva John (Al)
Betreff: Re: AW: Rexx SORT (was: ... Job Scheduler ... )
Datum: 08.06.2017, 14:59 Uhr
No, z/OS REXX does not have a SORTSTEM function built-in. I currently have
a STEMSORT function, but it is from a 3rd party vendor.
Al Nims
Systems Admin/Programmer 3
UFIT
Universtiy of Florida
(352) 273-1298
-----Original Message-----
Behalf Of Tony Thigpen
Sent: Thursday, June 08, 2017 4:54 AM
Subject: Re: AW: Rexx SORT (was: ... Job Scheduler ... )
Could you point me to the REXX list?
Also, we have had a SORTSTEM function in VSE REXX for a LONG time. Does
z/OS not have SORTSTEM?
Tony Thigpen
Post by Nims,Alva John , Al
This is getting to be like a discussion that was had on the REXX list
recently, as in it would be nice if there was an available PIPE type of
Post by Nims,Alva John , Al
http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=dd&subtype
<http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=dd&subtype> =
Post by Nims,Alva John , Al
sm&htmlfid=897/ENUS5655-D45
PIPE stem xy. | sort 1 5 | stem yx.
Or PIPE < indsn | sort 1 5 | > outdsn
These are simple examples and not everything that can be done, but when I
was using it (my previous job) it was reasonably quick in execution. Now I
have to do the allocation of SORTIN, SORTOUT and SYSIN (control cards) then
invoke SORT, very cumbersome compared to the simple PIPE command version.
Post by Nims,Alva John , Al
Al Nims
UFIT
University of Florida
(352) 273-1298
@Home
-----Original Message-----
On Behalf Of Elardus Engelbrecht
Sent: Wednesday, June 07, 2017 1:14 PM
Subject: Re: AW: Rexx SORT (was: ... Job Scheduler ... )
http://bernd-oppolzer.de/blog_20150115_151000.htm
<http://bernd-oppolzer.de/blog_20150115_151000.htm>
Post by Nims,Alva John , Al
this Contains a REXX Procedure to sort a stem variable. See
quicksort_nonrec
o Of course. But why should it be necessary to reinvent the wheel when
DFSORT has vast capabilities not practical to duplicate in Rexx?
Post by Nims,Alva John , Al
Could you please be kind to tell us what function(s) you have in mind?
On one side, REXX has this nice PARSE function. hard to duplicate that in
DFSORT, but do-able.
Post by Nims,Alva John , Al
On other side, DFSORT handles SMF records and their weird timestamps
better. (Yes, I know REXX can handle VBS records these days.)
I could envision adapting [the ANSI Rexx form] in TSO Rexx something
address LINKMVS 'ICEMAN' with ,
DD:SORTIN stem F1. ,
DD:SORTOUT stem F2.
"ALLOC F(SORTIN).... blah ...."
"EXECIO * DISKR SORTIN (STEM F1. FINIS"
"FREE F(SORTIN)"
... and then call DFSORT and sort out your magic
In fact, I have some RYO REXX progs which call DFSORT to sort something
out...
Post by Nims,Alva John , Al
o And while I chose SORT as an example, I intended to consider a more
- IEBUPDTE witn SYSIN, SYSUT1, and SYSUT2 assigned to stems.
- ISRSUPC with OLD, NEW, and DELTA assigned to stems.
- Etc. Much like ANSI Rexx.
You can invoke anything with REXX including SDSF, IEBGENER, IEBCOPY, etc.
as long you pass/receive parameters and DD correctly.
Post by Nims,Alva John , Al
In fact, zSecure ISPF panels are mostly driven by REXX.
But, I agree with you, something standardised so you can do what you
desire would really be useful.
Post by Nims,Alva John , Al
Something like "ALLOC F(SYSIN) <Stemvariable name> ..."
Also FREE(FSYSIN) which -optionally- drops those Stems. (I said
optionally, because, you may need to free up SYSIN immediately, but
continue to handle those stems.)
Just some little idle ideas, yaaaaa.... ;-)
Groete / Greetings
Elardus Engelbrecht
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send
message: INFO IBM-MAIN
Post by Nims,Alva John , Al
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send
message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email
IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
message: INFO IBM-MAIN
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
Lizette Koehler
2017-06-08 13:25:49 UTC
Permalink
Raw Message
To join the REXX list

TSO REXX http://www2.marist.edu/htbin/wlvindex?TSO-REXX

Or there is the REXX-LA group as well

http://rexxla.org/

Lizette
Post by Nims,Alva John , Al
-----Original Message-----
Behalf Of Tony Thigpen
Sent: Thursday, June 08, 2017 1:54 AM
Subject: Re: AW: Rexx SORT (was: ... Job Scheduler ... )
Could you point me to the REXX list?
Also, we have had a SORTSTEM function in VSE REXX for a LONG time. Does z/OS
not have SORTSTEM?
Tony Thigpen
Post by Nims,Alva John , Al
This is getting to be like a discussion that was had on the REXX list
recently, as in it would be nice if there was an available PIPE type of
Post by Nims,Alva John , Al
http://www-01.ibm.com/common/ssi/cgi-bin/ssialias?infotype=dd&subtype=
sm&htmlfid=897/ENUS5655-D45
PIPE stem xy. | sort 1 5 | stem yx.
Or PIPE < indsn | sort 1 5 | > outdsn
These are simple examples and not everything that can be done, but when I
was using it (my previous job) it was reasonably quick in execution. Now I
have to do the allocation of SORTIN, SORTOUT and SYSIN (control cards) then
invoke SORT, very cumbersome compared to the simple PIPE command version.
Post by Nims,Alva John , Al
Al Nims
UFIT
University of Florida
(352) 273-1298
@Home
-----Original Message-----
On Behalf Of Elardus Engelbrecht
Sent: Wednesday, June 07, 2017 1:14 PM
Subject: Re: AW: Rexx SORT (was: ... Job Scheduler ... )
Post by Paul Gilmartin
http://bernd-oppolzer.de/blog_20150115_151000.htm
this Contains a REXX Procedure to sort a stem variable. See quicksort_nonrec
o Of course. But why should it be necessary to reinvent the wheel when
DFSORT has vast capabilities not practical to duplicate in Rexx?
Post by Nims,Alva John , Al
Could you please be kind to tell us what function(s) you have in mind?
On one side, REXX has this nice PARSE function. hard to duplicate that in
DFSORT, but do-able.
Post by Nims,Alva John , Al
On other side, DFSORT handles SMF records and their weird timestamps
better. (Yes, I know REXX can handle VBS records these days.)
Post by Paul Gilmartin
I could envision adapting [the ANSI Rexx form] in TSO Rexx something
address LINKMVS 'ICEMAN' with ,
DD:SORTIN stem F1. ,
DD:SORTOUT stem F2.
"ALLOC F(SORTIN).... blah ...."
"EXECIO * DISKR SORTIN (STEM F1. FINIS"
"FREE F(SORTIN)"
... and then call DFSORT and sort out your magic
In fact, I have some RYO REXX progs which call DFSORT to sort something
out...
Post by Nims,Alva John , Al
Post by Paul Gilmartin
o And while I chose SORT as an example, I intended to consider a more
- IEBUPDTE witn SYSIN, SYSUT1, and SYSUT2 assigned to stems.
- ISRSUPC with OLD, NEW, and DELTA assigned to stems.
- Etc. Much like ANSI Rexx.
You can invoke anything with REXX including SDSF, IEBGENER, IEBCOPY, etc.
as long you pass/receive parameters and DD correctly.
Post by Nims,Alva John , Al
In fact, zSecure ISPF panels are mostly driven by REXX.
But, I agree with you, something standardised so you can do what you desire
would really be useful.
Post by Nims,Alva John , Al
Something like "ALLOC F(SYSIN) <Stemvariable name> ..."
Also FREE(FSYSIN) which -optionally- drops those Stems. (I said
optionally, because, you may need to free up SYSIN immediately, but
continue to handle those stems.)
Just some little idle ideas, yaaaaa.... ;-)
Groete / Greetings
Elardus Engelbrecht
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions, send email to
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to ***@listserv.ua.edu with the message: INFO IBM-MAIN
Edward Finnell
2017-06-08 09:11:34 UTC
Permalink
Raw Message
Using Catalist at _www.lsoft.com_ (http://www.lsoft.com)

Found these:

***@LISTSERV.UGA.EDU_
(http://www.lsoft.com/scripts/wl.exe?SL1=REXXLIST&H=LISTSERV.UGA.EDU) (https://listserv.uga.edu/cgi-bin/wa?LIST=REXXLIST)
REXX Programming discussion list (356 subscribers)
_TSO-***@VM.MARIST.EDU_
(http://www.lsoft.com/scripts/wl.exe?SL1=TSO-REXX&H=VM.MARIST.EDU)
TSO REXX Discussion List (974 subscribers)
_VM-***@VM.MARIST.EDU_
(http://www.lsoft.com/scripts/wl.exe?SL1=VM-REXX&H=VM.MARIST.EDU)
VM/SP REXX Language Discussion List (120 subscribers)
3 lists matched your search string.


In a message dated 6/8/2017 3:53:44 A.M. Central Daylight Time,
***@VSE2PDF.COM writes:

Could you point me to the REXX list?


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