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