Re: DFSORT - AND/OR mystery

2021-07-30 Thread Sri h Kolusu
> 3. I found another mystery, which seems to be APARable:
> But this statement gives zero records. Note, I added "OR" conditions, so
  it cannot narrow the output.

Radoslaw,

I would respectfully disagree with that statement. I explained the quirks
of having Variable record lengths have on the comparison tests.  Use the
control cards that I showed and if you are still NOT getting the right
results, then please open a case with IBM support.
IMHO you wouldn't need that, but just in case !


Thanks,
Kolusu
DFSORT Development
IBM Corporation



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


Re: DFSORT - AND/OR mystery

2021-07-30 Thread Sri h Kolusu
> What's DFSORT's operator precedence?  Was it necessary to bracket the
> conjunctions in order that they have higher precedence than
> the alternations?

Gil,

I vaguely remember that we went over this before. Any way here is DFSORT's
operator precedence.

"AND statements are evaluated before OR statements unless parentheses are
used to change the order of evaluation; expressions inside parentheses are
always evaluated first. (Nesting of parentheses is limited only by the
amount of storage available.)"

Here is the documentation that shows DFSORT's operator precedence.

https://www.ibm.com/docs/en/zos/2.3.0?topic=statement-relational-condition

> Are you just rewriting Radoslaw's expression according to the
Distributive Law?
> Does DFSORTT not recognize the Distributive Law?

There is NO need to code the statements the way that Mike has coded as
DFSORT recongizes the distributive law.  My earlier post is a testament
that Op's original control cards can be used to get the desired results.
A positive test condition (EQ) would be straight forward , however a
negative test (NE) with OR conditions can be a monkey wrench. coding the
conditions in parenthesis makes the evaluations in the right order and also
would be easy to understand and maintain.

Thanks,
Kolusu
DFSORT Development
IBM Corporation



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


Re: DFSORT - AND/OR mystery

2021-07-30 Thread Radoslaw Skorupka

W dniu 30.07.2021 o 17:45, Radoslaw Skorupka pisze:

W dniu 30.07.2021 o 17:33, Paul Gilmartin pisze:

On Fri, 30 Jul 2021 09:54:51 -0500, Mike Schwab wrote:


Try 5 pairs of conditions?
INCLUDE COND=((5,4,CH,EQ,C'0205',AND,83,3,CH,EQ,C'YES'),
OR,(5,4,CH,EQ,C'0205',AND,88,3,CH,EQ,C'YES'),
OR,(5,4,CH,EQ,C'0205',AND,93,3,CH,EQ,C'YES'),
OR,(5,4,CH,EQ,C'0205',AND,98,3,CH,EQ,C'YES'),
OR,(5,4,CH,EQ,C'0102',AND,28,7,CH,NE,C'USE    '))


What's DFSORT's operator precedence?  Was it necessary to bracket the
conjunctions in order that they have higher precedence than
the alternations?

Are you just rewriting Radoslaw's expression according to the 
Distributive Law?

Does DFSORTT not recognize the Distributive Law?


1. Operator precedence. According to documentation AND is first. 
However parenthesis should change it and it is allow to use as many 
parenthesis as needed.


2. DFSORT should recognize the law (Rozdzielność działań in Polish)

3. I found another mystery, which seems to be APARable:

The following statement gives several test records as expected:
INCLUDE COND=(5,4,CH,EQ,C'0205',AND,(83,3,CH,EQ,C'YES',OR,
 88,3,CH,EQ,C'YES',OR,
 93,3,CH,EQ,C'YES',OR,
 98,3,CH,EQ,C'YES'))

But this statement gives zero records. Note, I added "OR" conditions, 
so it cannot narrow the output.

INCLUDE COND=(5,4,CH,EQ,C'0205',AND,(83,3,CH,EQ,C'YES',OR,
 88,3,CH,EQ,C'YES',OR,
 93,3,CH,EQ,C'YES',OR,
 99,3,CH,EQ,C'YES',OR,
    103,3,CH,EQ,C'YES',OR,
    113,3,CH,EQ,C'YES'))



"The truth is out there"
The above example work properly with OPTION VLSCMP
And in fact my previous examples should have VLSCMP, not VLSHRT.
And for 0102 record I misunderstood (not very clear) documentation - the 
field length is NOT fixed, so blank characters after 'USE' were my wrong 
assumption.


Thank you all gentlemen for help.
And special thanks to Sri Hari for the solution and explanation.


Regards
--
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: DFSORT - AND/OR mystery

2021-07-30 Thread Sri h Kolusu
> The input contains '0102' and '0205' records and simple statement with
only one type show expected output.

Radoslaw,

The given conditions should work , however you should realize that IRRDB00
output is record format V and the length of the record is stored in RDW. So
a 0102 record with  authority USE can only have a length of 26 , but you
are checking the AUTH field for a length of 7 bytes. In such cases VLSCMP
parm will be useful, however it would pad binary zeroes for short records,
which would make the 28,7,CH,BE,C'USE' as true as there are binary zeroes
after the word USE and when compared against spaces it would be a true
condition and will be included in the output. So to handle such scenario,
just do the compare on 3 bytes

I also added comments to the control cards so that it is easy to understand

//SYSINDD *
  OPTION COPY,VLSCMP
  INCLUDE COND=((05,4,CH,EQ,C'0205',AND,$ USCON_RECORD_TYPE
(83,3,CH,EQ,C'YES',OR,  $ USCON_GRP_ADSP
 88,3,CH,EQ,C'YES',OR,  $ USCON_GRP_SPECIAL
 93,3,CH,EQ,C'YES',OR,  $ USCON_GRP_OPER
 98,3,CH,EQ,C'YES')),OR,$ USCON_REVOKE
(05,4,CH,EQ,C'0102',AND,$ GPMEM_RECORD_TYPE
 28,3,CH,NE,C'USE'))$ GPMEM_AUTH
/*
This should give produce the right results

Ideally I would have used DFSORT symbols for all the fields and that way it
is easy to follow. Something like this

//SYMNOUT  DD SYSOUT=*
//SYMNAMES DD *
RDW,1,4,BI
USCON_RECORD_TYPE,5,4,CH
USCON_GRP_ADSP,83,3,CH
USCON_GRP_SPECIAL,88,3,CH
USCON_GRP_OPER,93,3,CH
USCON_REVOKE,98,3,CH
GPMEM_RECORD_TYPE,5,4,CH
GPMEM_AUTH,28,3,CH
/*

//SYSINDD *
  OPTION COPY,VLSCMP
  INCLUDE COND=((USCON_RECORD_TYPE,EQ,C'0205',AND,
(USCON_GRP_ADSP,EQ,C'YES',OR,
 USCON_GRP_SPECIAL,EQ,C'YES',OR,
 USCON_GRP_OPER,EQ,C'YES',OR,
 USCON_REVOKE,EQ,C'YES')),OR,
(GPMEM_RECORD_TYPE,EQ,C'0102',AND,
 GPMEM_AUTH,NE,C'USE'))
/*

Thanks
Kolusu
DFSORT Development
IBM Corporation



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


Re: DFSORT - AND/OR mystery

2021-07-30 Thread Radoslaw Skorupka

W dniu 30.07.2021 o 17:33, Paul Gilmartin pisze:

On Fri, 30 Jul 2021 09:54:51 -0500, Mike Schwab wrote:


Try 5 pairs of conditions?
INCLUDE COND=((5,4,CH,EQ,C'0205',AND,83,3,CH,EQ,C'YES'),
  OR,(5,4,CH,EQ,C'0205',AND,88,3,CH,EQ,C'YES'),
   OR,(5,4,CH,EQ,C'0205',AND,93,3,CH,EQ,C'YES'),
   OR,(5,4,CH,EQ,C'0205',AND,98,3,CH,EQ,C'YES'),
   OR,(5,4,CH,EQ,C'0102',AND,28,7,CH,NE,C'USE'))


What's DFSORT's operator precedence?  Was it necessary to bracket the
conjunctions in order that they have higher precedence than
the alternations?

Are you just rewriting Radoslaw's expression according to the Distributive Law?
Does DFSORTT not recognize the Distributive Law?


1. Operator precedence. According to documentation AND is first. However 
parenthesis should change it and it is allow to use as many parenthesis 
as needed.


2. DFSORT should recognize the law (Rozdzielność działań in Polish)

3. I found another mystery, which seems to be APARable:

The following statement gives several test records as expected:
INCLUDE COND=(5,4,CH,EQ,C'0205',AND,(83,3,CH,EQ,C'YES',OR,
 88,3,CH,EQ,C'YES',OR,
 93,3,CH,EQ,C'YES',OR,
 98,3,CH,EQ,C'YES'))

But this statement gives zero records. Note, I added "OR" conditions, so 
it cannot narrow the output.

INCLUDE COND=(5,4,CH,EQ,C'0205',AND,(83,3,CH,EQ,C'YES',OR,
 88,3,CH,EQ,C'YES',OR,
 93,3,CH,EQ,C'YES',OR,
 99,3,CH,EQ,C'YES',OR,
    103,3,CH,EQ,C'YES',OR,
    113,3,CH,EQ,C'YES'))






--
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: DFSORT - AND/OR mystery

2021-07-30 Thread Paul Gilmartin
On Fri, 30 Jul 2021 09:54:51 -0500, Mike Schwab wrote:

>Try 5 pairs of conditions?
>INCLUDE COND=((5,4,CH,EQ,C'0205',AND,83,3,CH,EQ,C'YES'),
>  OR,(5,4,CH,EQ,C'0205',AND,88,3,CH,EQ,C'YES'),
>   OR,(5,4,CH,EQ,C'0205',AND,93,3,CH,EQ,C'YES'),
>   OR,(5,4,CH,EQ,C'0205',AND,98,3,CH,EQ,C'YES'),
>   OR,(5,4,CH,EQ,C'0102',AND,28,7,CH,NE,C'USE'))
>
What's DFSORT's operator precedence?  Was it necessary to bracket the
conjunctions in order that they have higher precedence than
the alternations?

Are you just rewriting Radoslaw's expression according to the Distributive Law?
Does DFSORTT not recognize the Distributive Law?

>On Fri, Jul 30, 2021 at 9:36 AM Radoslaw Skorupka wrote:
>> The following statement is syntactically correct:
>>
>> INCLUDE COND=((5,4,CH,EQ,C'0205',AND,(83,3,CH,EQ,C'YES',OR,
>>88,3,CH,EQ,C'YES',OR,
>>93,3,CH,EQ,C'YES',OR,
>>98,3,CH,EQ,C'YES')),
>>  OR,(5,4,CH,EQ,C'0102',AND,28,7,CH,NE,C'USE'))
>>
>> however SORTOUT contains only records '0205'.
>> The input contains '0102' and '0205' records and simple statement with
>> only one type show expected output.

-- gil

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


Re: DFSORT - AND/OR mystery

2021-07-30 Thread Mike Schwab
Try 5 pairs of conditions?
INCLUDE COND=((5,4,CH,EQ,C'0205',AND,83,3,CH,EQ,C'YES'),
  OR,(5,4,CH,EQ,C'0205',AND,88,3,CH,EQ,C'YES'),
   OR,(5,4,CH,EQ,C'0205',AND,93,3,CH,EQ,C'YES'),
   OR,(5,4,CH,EQ,C'0205',AND,98,3,CH,EQ,C'YES'),
   OR,(5,4,CH,EQ,C'0102',AND,28,7,CH,NE,C'USE'))

On Fri, Jul 30, 2021 at 9:36 AM Radoslaw Skorupka
 wrote:
>
> The following statement is syntactically correct:
>
>
> INCLUDE COND=((5,4,CH,EQ,C'0205',AND,(83,3,CH,EQ,C'YES',OR,
>88,3,CH,EQ,C'YES',OR,
>93,3,CH,EQ,C'YES',OR,
>98,3,CH,EQ,C'YES')),
>  OR,(5,4,CH,EQ,C'0102',AND,28,7,CH,NE,C'USE'))
>
> however SORTOUT contains only records '0205'.
> The input contains '0102' and '0205' records and simple statement with
> only one type show expected output.
>
> Simple statement
> INCLUDE COND=((5,4,CH,EQ,C'0102'),OR,
> (5,4,CH,EQ,C'0205'))
> show all records of both types - 0102 and 0205.
>
> However any AND inside 0205 causes only records with YES in proper field
> are returned to output. So "YES condition applies to both 0102 and 0205
> records, despite of parenthesis.
>
> --
> 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



-- 
Mike A Schwab, Springfield IL USA
Where do Forest Rangers go to get away from it all?

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


Re: DFSORT - compare two fields

2021-07-30 Thread Radoslaw Skorupka

Yes, it works as desired.
Thank you!

--
Radoslaw Skorupka
Lodz, Poland




W dniu 30.07.2021 o 14:31, S.Karthik Premnath pisze:

HTH

//RSPROF EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IRRDBU00 DD DISP=SHR,DSN=
//OUTPUT DD SYSOUT=*
//TOOLIN DD *
SELECT FROM(IRRDBU00) TO(OUTPUT) USING(CTL1)
/*
//CTL1CNTL DD *
INCLUDE COND=(50,8,CH,NE,60,8,CH)
/*

Assuming 50,8 & 60,8 are offset and length of userid & groupname
respectively.


Karthik Premnath.

On Fri, Jul 30, 2021 at 4:20 PM Radoslaw Skorupka 
wrote:


The following scenario:
IRRDBU00 file, record type 0203 - this is about user to group connection.
There are fields: groupname and owner. Usually the owner is also the group.
I want to list all the record where owner is not groupname.

So the goal is to compare two (fixed) fields and include/omit records.
Of course it can be done in REXX, but I think DFSORT is more efficient.
Any clue?

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


DFSORT - AND/OR mystery

2021-07-30 Thread Radoslaw Skorupka

The following statement is syntactically correct:


INCLUDE COND=((5,4,CH,EQ,C'0205',AND,(83,3,CH,EQ,C'YES',OR,
  88,3,CH,EQ,C'YES',OR,
  93,3,CH,EQ,C'YES',OR,
  98,3,CH,EQ,C'YES')),
    OR,(5,4,CH,EQ,C'0102',AND,28,7,CH,NE,C'USE    '))

however SORTOUT contains only records '0205'.
The input contains '0102' and '0205' records and simple statement with 
only one type show expected output.


Simple statement
INCLUDE COND=((5,4,CH,EQ,C'0102'),OR,
   (5,4,CH,EQ,C'0205'))
show all records of both types - 0102 and 0205.

However any AND inside 0205 causes only records with YES in proper field 
are returned to output. So "YES condition applies to both 0102 and 0205 
records, despite of parenthesis.


--
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: DFSORT - compare two fields

2021-07-30 Thread S.Karthik Premnath
HTH

//RSPROF EXEC PGM=ICETOOL
//TOOLMSG DD SYSOUT=*
//DFSMSG DD SYSOUT=*
//IRRDBU00 DD DISP=SHR,DSN=
//OUTPUT DD SYSOUT=*
//TOOLIN DD *
SELECT FROM(IRRDBU00) TO(OUTPUT) USING(CTL1)
/*
//CTL1CNTL DD *
INCLUDE COND=(50,8,CH,NE,60,8,CH)
/*

Assuming 50,8 & 60,8 are offset and length of userid & groupname
respectively.


Karthik Premnath.

On Fri, Jul 30, 2021 at 4:20 PM Radoslaw Skorupka 
wrote:

> The following scenario:
> IRRDBU00 file, record type 0203 - this is about user to group connection.
> There are fields: groupname and owner. Usually the owner is also the group.
> I want to list all the record where owner is not groupname.
>
> So the goal is to compare two (fixed) fields and include/omit records.
> Of course it can be done in REXX, but I think DFSORT is more efficient.
> Any clue?
>
> --
> 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: Identifying PDS/E or PDS in IEBCOPY Unload

2021-07-30 Thread Radoslaw Skorupka

W dniu 29.07.2021 o 22:50, Paul Gilmartin pisze:

On Thu, 29 Jul 2021 15:47:45 -0400, John Abell wrote:


Why not have them use TSO XMIT files like we do?


Will RECEIVE then allocate (NEW,CATLG) a data set with suitable DSNTYPE,
SPACE, RECFM, LRECL, ...

If the original PDS is large, is there a problem of overflow of a temporary 
data set?


Please, define large.
Personally I used XMIT for 500+ MB PDS.
The only issue to remember is IND$FILE parameters, however space can be 
specified.


--
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: Identifying PDS/E or PDS in IEBCOPY Unload

2021-07-30 Thread Radoslaw Skorupka

To summarize:
1. Not everything can be copied between PDS and PDSE (and vice versa). 
Notable examples are program objects, long member names, PDSE v2 member 
versions, etc.
2. Despite other possible options there is no harm to read from PDSU to 
original PO dataset flavour and then optionally copy it to desired/other 
flavour. Having in mind restrictions described above.


Am I missing something?

--
Radoslaw Skorupka
Lodz, Poland




W dniu 30.07.2021 o 02:37, Billy Ashton pisze:

Steve, this is from the IEBCOPY doc:
A load module from an unload data set cannot be reloaded into a PDSE 
as a program object. The load modules should be reloaded into a 
partitioned data set and then the partitioned data set should be 
copied to a PDSE to convert the unloaded load module into a program 
object.


This means if a loadlib PDS is unloaded by IEBCOPY, it cannot be 
loaded directly back into a PDSE as executable modules. I haven't 
found the doc on it, but it is my understanding that a PDS cannot 
contain program objects, so if a PDSE is unloaded by IEBCOPY, it 
cannot be loaded directly back into a PDS.


Or am I misreading something here? Don't forget that I am working only 
with the unloaded file sent to me via FTP, and I do not have the 
original PDS or PDSE available to me to do things like a 3.3 copy.

B

Steve Smith wrote on 7/29/2021 18:31:
Where did you get that notion?  IEBCOPY can indeed load into a 
dataset of a

different type than the source.  Only exception I know of is from a PDSE
with long aliases.

I'd think your "backup plan" (albeit my first plan), would be to 
unload the

file into a PDSE and not worry about it until something goes wrong.

sas

On Thu, Jul 29, 2021 at 6:07 PM Billy Ashton  
wrote:



These are solution files that the vendor sends to us, so we have no
control of what to do. They tell us that the target is a PDS or PDSE,
but I was just looking for a backup method to try and ensure that what
they say matches the file. As I'm sure you know, if they unloaded a PDS
file with load modules, you can't take the unloaded file and then 
try to

load it into a PDSE. Likewise, if a PDSE with program objects was
unloaded, you can't load it into a standard PDS.
Billy


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


Re: Identifying PDS/E or PDS in IEBCOPY Unload

2021-07-30 Thread Radoslaw Skorupka
Multi-step, but universal - you can transfer any number of files and any 
file type.

Small assumption: both sides do have DSS.
I use it for VSAM files.

Personally I created small REXX tool which read list of PDS/PDSE and PS 
datasets to transport, then XMIT them, then copy them to big PDS, then 
XMIT the PDS to sigle FB 80 PS.

Advantage: nested XMITed files can be browsed on PC.

--
Radoslaw Skorupka
Lodz, Poland



W dniu 29.07.2021 o 23:25, Tom Brennan pisze:
And maybe combinations!  I seem to remember doing this one time, 
working with what was available:


DFDSS full volume dump
XMIT
IND$FILE
Thumb drive transfer
IND$FILE
RECEIVE
DFDSS restore

On 7/29/2021 2:13 PM, Lizette Koehler wrote:

I guess it will depend on what you are trying to accomplish

There could be many solutions besides IEBCOPY

You can use DFDSS DUMP/RESTORE function to take it as is and restore 
it as is


You can use TSO XMIT (but your shop may limit how many records you 
can off load


If it does use TSO XMIT Dataset(name here) OUTDSN(transmission 
dataset)  Then use your favorite transfer Program (FTP, Fillezilla, 
etc) to move to new home then receive


You might be able to use TRSMAIN Pack/Unpack - I think it handles PDS 
Datasets now


There could be other vendor products that can do this as well


What problem are you trying to solve by knowing PDS vs PDSe datasets?

I rarely care any more what they are.


Lizette



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


DFSORT - compare two fields

2021-07-30 Thread Radoslaw Skorupka

The following scenario:
IRRDBU00 file, record type 0203 - this is about user to group connection.
There are fields: groupname and owner. Usually the owner is also the group.
I want to list all the record where owner is not groupname.

So the goal is to compare two (fixed) fields and include/omit records.
Of course it can be done in REXX, but I think DFSORT is more efficient.
Any clue?

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


IPCS command to display dataspaces connected to by an arbitral DU

2021-07-30 Thread Binyamin Dissen
Given a dump, which IPCS command will shoe ALESERV added items?

Must I run the control blocks (seems like the XSB has the only DUCT pointer. I
would assume the WEB would have a pointer, but I cannot seem to find the
mapping macro.

--
Binyamin Dissen 
http://www.dissensoftware.com

Director, Dissen Software, Bar & Grill - Israel

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