Re: Difference between DISP=NEW and MOD for a PDS member?
Radoslaw You used many words, citations, quotations, etc. but IMHO you should just say I was wrong. I don't think trying to make sense of what is written in the manual which is *supposed* to describe what the product does hoping that WAC corresponds to WAD can be considered wrong. The manual was guilty of some sort of disingenuity - sorry, words again but they are rather appropriate when writing! - in suggesting that DISP=NEW could involve an existing data set. I was going to say I was misled but it's more bemused. If you care to recall, I did say that in constructing the diagrams which that section of the manual first offered by Gerhard Adam cried out to be so represented, I tried initially to follow your contention - which is what I had assumed previously without even having given it all that much thought. Then I decided that first paragraph required what has turned out to be erroneous. If I'd placed more credence on what was said about DISP=OLD I would have been guided back to the path of righteousness. I really don't care what's in the manual, ... Sadly, not having a sandbox to hand these days, I'm obliged to rely on whatever documentation I can find. But since you *do* have one or more playpen systems to hand, perhaps you'd like to verify my revised diagrams. It would, for example, be interesting to have plotted out what how the errors which have passed JCL reveal themselves. Looking back to your first post in this thread, I see you may have already identified PDS with member name specified, data set does exist and member does exist, DISP=MOD as *not* a JCL fail but abend SB14 whether input or output. I want the discussion to stay technical one ... What could be more technical than reporting live experiments! Chris Mason On Sun, 6 Mar 2011 20:02:56 +0100, R.S. r.skoru...@bremultibank.com.pl wrote: W dniu 2011-03-06 17:19, Chris Mason pisze: Radoslaw Yes, DISP=NEW fails if the PDS already exists. Even if nonexistent member is specified. I'm assuming that what you mean to say is the following [...] Chris, You used many words, citations, quotations, etc. but IMHO you should just say I was wrong. I really don't care what's in the manual, what somebody said, etc. DISP in JCL is always for dataset, not the member, DISP=NEW always end with JCL error when PDS(E) exist, and it it completely irrelevant whether you specify member name or not or specified member exists or not. The only (not mentioned) case when DISP=NEW works (does not cause error) for existing dataset is ... (I think it wasn't mentioned here yet) GDG. GDG dataset with deferred roll in (proper name can be slightly different, wrote from my poor memory) is simply rolled it when DISP=NEW is used. But it is very specific case, which precludes usage of PDSE and membername of PDS. And was (no longer is) unsupported by IBM for PDS. I want the discussion to stay technical one, not - let's say - political, like USS meaning or Toronto airports. Regards -- Radoslaw Skorupka -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
In 4d73da60.30...@bremultibank.com.pl, on 03/06/2011 at 08:02 PM, R.S. r.skoru...@bremultibank.com.pl said: I really don't care what's in the manual, what somebody said, etc. ITYM that you simply don't care about facts. DISP in JCL is always for dataset, not the member, Yes, there's no difference between getting an S214 and not getting one. I want the discussion to stay technical one, not Then you should look at how the OS works rather than how you believe that it should work. -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
Linda, thanks, yes, that is more or less what I do for the can't pre-create cases. I use an internal copy function. (My bug was in not recognizing certain can't pre-create cases.) I'm curious too. The only answer I could get was that IBM supported this and that's what they wanted to do. They are creating a temporary PDS and member and passing it to a subsequent step. I don't see any reason not to pass a sequential file, but I have not seen all of the job, just failing fragments. Whatever. I had the logic to test for the can't pre-create cases. I had the copy function. I fixed the bug. They can do all the FOO(BAR),DISP=NEW/MOD they want now. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Linda Mooney Sent: Sunday, March 06, 2011 11:09 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Yes, that would be the same. So, how about if you preallocated a sequential file, then used IEBCOPY (with or without replace - as might be appropriate for your product) to copy the new file into the pds or pdse member? I am curious as to why a pds or pds/e is needed . In my shop, we use individual sequential , or GDG for ftp datasets. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
W dniu 2011-03-06 05:41, Chris Mason pisze: Charles The bottom line lacks copper. DISP=NEW fails if the PDS already exists Not if the name of a non-existent member is specified. Yes, DISP=NEW fails if the PDS already exists. Even if nonexistent member is specified. At least my poor z/OS claims so. (Read: I just tested it). And I dare to repeat: DISP is always for dataset, not for the member. That's what we observe everyday: DELETE deletes PDS(E), NEW requires SPACE and creates new PDS(E) on disk. -- Radoslaw Skorupka Lodz, Poland -- BRE Bank SA ul. Senatorska 18 00-950 Warszawa www.brebank.pl Sd Rejonowy dla m. st. Warszawy XII Wydzia Gospodarczy Krajowego Rejestru Sdowego, nr rejestru przedsibiorców KRS 025237 NIP: 526-021-50-88 Wedug stanu na dzie 16.07.2010 r. kapita zakadowy BRE Banku SA (w caoci wpacony) wynosi 168.248.328 zotych. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
When I replied with my simple answer, I had not seen the part of thread referring to product being written. Over the years, I have had to restore many PDSes when a naïve user coded DISP=(MOD,DELETE). Sorry, I'm biased with trying to make sure that most people view, in general, DISP as a dataset level parameter. However, in this case the nuances of the DISP parameter are important. Don -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Chris Mason Sent: Saturday, March 05, 2011 11:44 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Don The simple answer: This is not a topic for people who need simple answers! When I said ... DISP=NEW/MOD insists that the member does not exist irrespective of whether or not a partitioned data set exists obviously I was concentrating on the only on first suboperand of the DISP operand. It seems we must take a different perspective according to whether we are dealing with the first suboperand or the second and third suboperands - not at all simple! The DISP parameter is for the data set/library and not members. Apparently not so in the case of the first suboperand. If a member name is specified, the first suboperand relates to the member and appears not to care about the data set. Otherwise why make a fuss about whether a member exists or not in a data set that can't be there to contain the member - which may or may not be there - if the data set is not supposed to exist - in the case of DISP=NEW anyhow. There's something of the Cheshire Cat about this! Here, once again for your delectation, is the first paragraph of the section 12.19.8 Disposition of Partitioned Data Sets (PDSs and PDSEs) from the z/OS V1R12 MVS JCL Reference manual: http://publibz.boulder.ibm.com/cgi- bin/bookmgr_OS390/BOOKS/IEA2B6A0/12.19.8 quote When you specify DISP=MOD or DISP=NEW for a partitioned data set (PDS) or partitioned data set extended (PDSE), and you also specify a member name in the DSNAME parameter, the member name must not already exist. If the member name already exists, the system terminates the job. /quote If you can explain this away, I'll accept your simple contention also regarding the first suboperand. For example, DSN=MY.LIBRARY(MYMEM),DISP=(OLD,DELETE) deletes the library and not just the member. Assuming you verified your example rather than just composing it in order to illustrate your point, it appears that the normal and abnormal termination disposition suboperands do indeed apply to the data set irrespective of whether or not a member name is specified. I checked the z/OS V1R12 MVS JCL Reference manual to try to be sure and there is certainly no mention of any variation based on whether or not a member name is specified so I guess an actual test would have been superfluous. http://publibz.boulder.ibm.com/cgi- bin/bookmgr_OS390/BOOKS/IEA2B6A0/12.19.2.2 http://publibz.boulder.ibm.com/cgi- bin/bookmgr_OS390/BOOKS/IEA2B6A0/12.19.2.3 Indeed, it's all getting a bit complex and the poor systems programmer who tried to delete a member using the DISP second suboperand can be forgiven - well by those who were not desperately relying on the partitioned data set, that is![1] - A modification to my previous post with the diagrams: In the case of a DISP=NEW data set or dataset(member) - and DISP=MOD if the entity has had no existence hitherto - it is an error not to write something. This makes my error or immediate EOF simply error. An immediate EOF would be possible only if the data set - or a member I guess - had deliberately been created - written to - with 0 records. Alternatively I'll be happy to be corrected. - Chris Mason [1] This reminds me of an occasion when I keyed up a SCRATCH statement that was supposed to be coded as SCRATCH VTOC,VOL=2314=MYVOLM,SYS After that traumatic event, I resolved always to use the order SCRATCH VTOC,SYS,VOL=2314=MYVOLM because it turns out you can't always be sure that where you intended to key a comma, a comma actually got keyed! I remember even better because it was New Year's Eve and the was someone from north of the border in the overworked team. On Sat, 5 Mar 2011 15:12:41 -0500, Don Williams donb...@gmail.com wrote: The simple answer: The DISP parameter is for the data set/library and not members. For example, DSN=MY.LIBRARY(MYMEM),DISP=(OLD,DELETE) deletes the library and not just the member. -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Charles Mills Sent: Friday, March 04, 2011 3:03 PM To: IBM-MAIN@bama.ua.edu Subject: Difference between DISP=NEW and MOD for a PDS member? What is the difference between DISP=NEW and DISP=MOD for a PDS member (member name specified on the DD statement)? Both disallow duplicate member names. Are there any differences? What? Charles
Re: Difference between DISP=NEW and MOD for a PDS member?
Linda - Thanks, yes, I am pre-creating (hope that's what you meant) the dataset. I get into trouble if it's DSN(MEMBER),DISP=NEW/MOD because you can't do that twice. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Linda Mooney Sent: Saturday, March 05, 2011 8:32 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Hi Charles, I have read through the thread with some interest, though I do not know you or which product you are working on. Would it be possible for your code to preallocate the receiving dataset? -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
DISP=NEW fails if the PDS already exists Not if the name of a non-existent member is specified. Nay! I just tested exactly that and got IEF253I TCC00114 BR14 FOO - DUPLICATE NAME ON DIRECT ACCESS VOLUME The same DD executes if I specify DISP=MOD (but would presumably fail on the CLOSE). I'm still waiting for an explanation of how a member can exist in a partitioned data set that cannot exist - possibly I'm in the wrong universe! If you're still waiting you didn't read what you quoted below! this can only happen if the program creates the member during execution (OPEN, PUT, CLOSE, OPEN, PUT, CLOSE) because after all the PDS must be brand new Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Chris Mason Sent: Saturday, March 05, 2011 8:41 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Charles The bottom line lacks copper. DISP=NEW fails if the PDS already exists Not if the name of a non-existent member is specified. DISP=NEW and MOD both fail if the member already exists. I'm still waiting for an explanation of how a member can exist in a partitioned data set that cannot exist - possibly I'm in the wrong universe! Chris Mason On Sat, 5 Mar 2011 11:28:40 -0800, Charles Mills charl...@mcn.org wrote: And I guess the bottom line on the original technical question is: - DISP=NEW fails if the PDS already exists (or, if you will, may be used to make certain that the PDS does not already exist); DISP=MOD is good either way. - DISP=NEW and MOD both fail if the member already exists but fail differently: NEW fails on the CLOSE with SB14-04 -- this can only happen if the program creates the member during execution (OPEN, PUT, CLOSE, OPEN, PUT, CLOSE) because after all the PDS must be brand new; MOD fails on the OPEN but I am not sure of the exact error. Comments? Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Charles Mills Sent: Saturday, March 05, 2011 7:26 AM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? A lot of replies. Thanks all. Let me try to address various comments in a single response. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
The FTP LRECL default is 256 for both client and server. The FTP RECFM default is VB for both client and server. That's nice. I just tested //TESTDD DD DSN=userid.FOO.BAR,DISP=(NEW,CATLG),UNIT=SYSDA, // SPACE=(TRK,(1,1)) GET TCC.CTNL(IEFBR14) //DD:TESTDD And got userid.FOO.BAR --RECFM-LRECL-BLKSIZE-DSORG U **6144PS If your problem concerns the way z/OS Communications Server FTP behaves It does not. It concerns the difference between DISP=NEW and DISP=MOD for a PDS member. Did somebody say was a figure of speech. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Chris Mason Sent: Saturday, March 05, 2011 8:52 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Charles The underlying problem is that FTP has the world's worst RECFM and LRECL defaults, something like RECFM=U, LRECL=1024 (LRECL from recollection). The FTP LRECL default is 256 for both client and server. http://publibz.boulder.ibm.com/cgi- bin/bookmgr_OS390/BOOKS/F1A1B4A0/18.77 The FTP RECFM default is VB for both client and server. http://publibz.boulder.ibm.com/cgi- bin/bookmgr_OS390/BOOKS/F1A1B4A0/18.100 Did somebody say use LOCSITE? Unfortunately LOCSITE is not effective with //DD: Not unless you have been receiving private communications which the rest of us have not seen or it's a contributor whose post hasn't appeared in the IBM- MAIN archives. - If your problem concerns the way z/OS Communications Server FTP behaves, you may find the expertise you need in the IBMTCP-L list. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
DISP is always for the dataset and not the member The problem is that DISP means different things. If you are a JCL coder, then DISP is a parameter that indicates the current status of the dataset and what is to become of it after the jobstep completes: DISP=(NEW,CATLG). If you are using SVC 99 or looking at JFCBs then disposition means only the latter of those two things, what is to become of the dataset. The current status is called -- drum roll please -- status. I think it is safe to say that disposition -- what happens after the jobstep completes -- DELETE, CATLG, etc. -- is always for the dataset and not the member. DISP= -- which includes the current status of the dataset -- NEW, MOD, OLD -- is for both the dataset AND the member. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of R.S. Sent: Sunday, March 06, 2011 2:16 AM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? W dniu 2011-03-06 05:41, Chris Mason pisze: Charles The bottom line lacks copper. DISP=NEW fails if the PDS already exists Not if the name of a non-existent member is specified. Yes, DISP=NEW fails if the PDS already exists. Even if nonexistent member is specified. At least my poor z/OS claims so. (Read: I just tested it). And I dare to repeat: DISP is always for dataset, not for the member. That's what we observe everyday: DELETE deletes PDS(E), NEW requires SPACE and creates new PDS(E) on disk. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
Radoslaw Yes, DISP=NEW fails if the PDS already exists. Even if nonexistent member is specified. I'm assuming that what you mean to say is the following: Yes, DISP=NEW fails if the PDS already exists and a member name is specified, even if a non-existent member is specified. In fact, the post to which you are actually responding - had the virtue of brevity so could appeal to short attention spans - and I'm not accusing you of that - it's just that I've tried to make the point in a few posts and been ignored - has the vice of not being properly hedged with the qualification if what is implied by the manual is to be believed but then, to have ameliorated that vice, would have impinged on the virtue! Anyhow thanks very much for having demonstrated that what is implied in the manual is *not* to be believed with a test. I hope you noted in an earlier post that I tried to take your route but committed the heinous crime of actually believing what the manual implied. Will I ever learn? Unfortunately I don't have a sandbox these days so these suspect documents are all I have to try to clarify these sorts of matters. What this indicates is that the section of the manual to which Gerhard Adam directed us is fatally wrong. Which could be used as an answer to Gerhard's question: ... Has it occurred to anyone to just look at the JCL Reference manual? Maybe Yes, but I don't trust what the JCL Reference manual tells me so I'm asking for help from someone who really knows. I propose a rewriting as follows: current text When you specify DISP=MOD or DISP=NEW for a partitioned data set (PDS) or partitioned data set extended (PDSE), and you also specify a member name in the DSNAME parameter, the member name must not already exist. If the member name already exists, the system terminates the job. When you specify DISP=OLD for a PDS or a PDSE, and you also specify a member name in the DSNAME parameter, the data set must already exist. If the member name already exists and the data set is opened for output, the system replaces the existing member with the new member. If the member name does not already exist and the data set is opened for output, the system adds the member to the data set. When you specify DISP=MOD for a PDS or a PDSE, and you do not specify a member name, the system positions the read/write mechanism at the end of the data set. The system does not make an automatic entry into the directory. When you specify DISP=MOD for a PDS or a PDSE, and you do specify a member name, the system positions the read/write mechanism at the end of the data set. If the member name already exists, the system terminates the job. /current text proposed text When you specify DISP=NEW for a partitioned data set (PDS) or partitioned data set extended (PDSE) and you also specify a member name in the DSNAME parameter, naturally neither the data set nor the member exist.[1] If the data set is opened for output, the system adds the member to the data set. When you specify DISP=MOD for a PDS or PDSE and you also specify a member name in the DSNAME parameter, the data set may exist but, if the data set already exists, the member must not already exist. (If the member already exists, the system terminates the job.) If the data set is opened for output, the system adds the member to the data set. When you specify DISP=MOD for a PDS or a PDSE, the system positions the read/write mechanism at the end of the data set. When you specify DISP=MOD for a PDS or a PDSE, and you do not specify a member name in the DSNAME parameter and the data set exists, the system does not make an automatic entry into the directory. When you specify DISP=OLD for a PDS or a PDSE and you also specify a member name in the DSNAME parameter, the data set must already exist. If the member name already exists and the data set is opened for output, the system replaces the existing member with the new member. If the member name does not already exist and the data set is opened for output, the system adds the member to the data set. [1] Initially. However, if, during execution, a data set is created thereby creating a member having the specified name and then there is an attempt to create another data which would, if allowed to proceed create a member replacing the previous member, that attempt will fail. /proposed text I've fixed up not only the first paragraph, the one that is so ridiculously wrong, but also the rest in order to be just a bit clearer and I have tried to maintain a pattern which should provide assurance that the description is more comprehensive. The sentence regarding the automatic entry is a bit of a mystery since I find no other reference to something like this anywhere else in either of the JCL manuals. Also I'm not sure that the read/write mechanism comment belongs here. I've a suspicion that the manual author was asked to slip in a comment like this wherever
Re: Difference between DISP=NEW and MOD for a PDS member?
Don It turns out there is some amazing sophistry which can explain the grin on the non-existent Cheshire Cat! The copper-bottomed line is that, indeed, all suboperands of DISP relate to the data set and, in that case where the DSNAME specifies a member, none of the suboperands of DISP relate to the member. That confusing paragraph which implied that a data set could exist already with DISP=NEW - or why was the existence or otherwise of the member pertinent - can be explained as follows: - Let us say the program wants to open and close the data set N times and at least the first time one or more records (blocks) are written. -- If DISP=OLD or DISP=SHR is specified and the data set (pds) exists already, this is fine. -- If DISP=NEW is specified and the data set didn't exist already, the first open and close will work, but the second open causes a failure since now the member exists. -- If DISP=MOD is specified and the data set didn't exist already, the first open and close will work, but the second open causes a failure since now the member exists. -- If DISP=MOD is specified and the data set existed already but the member didn't exist, the first open and close will work, but the second open causes a failure since now the member exists. -- If DISP=MOD is specified, the data set existed already and the member existed already, the first open causes a failure since the member exists. For convenience, here's that pesky paragraph again: quote When you specify DISP=MOD or DISP=NEW for a partitioned data set (PDS) or partitioned data set extended (PDSE), and you also specify a member name in the DSNAME parameter, the member name must not already exist. If the member name already exists, the system terminates the job. /quote Charles Mills did hint at this earlier but I'm afraid I missed his point. Of course, why this should be a problem is not clear - or not to me anyhow - and when something like this isn't clear it behoves the developers to explain themselves - and sometimes they do, sometimes they don't! Chris Mason On Sun, 6 Mar 2011 09:49:03 -0500, Don Williams donb...@gmail.com wrote: When I replied with my simple answer, I had not seen the part of thread referring to product being written. Over the years, I have had to restore many PDSes when a naïve user coded DISP=(MOD,DELETE). Sorry, I'm biased with trying to make sure that most people view, in general, DISP as a dataset level parameter. However, in this case the nuances of the DISP parameter are important. Don -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Chris Mason Sent: Saturday, March 05, 2011 11:44 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Don The simple answer: This is not a topic for people who need simple answers! When I said ... DISP=NEW/MOD insists that the member does not exist irrespective of whether or not a partitioned data set exists obviously I was concentrating on the only on first suboperand of the DISP operand. It seems we must take a different perspective according to whether we are dealing with the first suboperand or the second and third suboperands - not at all simple! The DISP parameter is for the data set/library and not members. Apparently not so in the case of the first suboperand. If a member name is specified, the first suboperand relates to the member and appears not to care about the data set. Otherwise why make a fuss about whether a member exists or not in a data set that can't be there to contain the member - which may or may not be there - if the data set is not supposed to exist - in the case of DISP=NEW anyhow. There's something of the Cheshire Cat about this! Here, once again for your delectation, is the first paragraph of the section 12.19.8 Disposition of Partitioned Data Sets (PDSs and PDSEs) from the z/OS V1R12 MVS JCL Reference manual: http://publibz.boulder.ibm.com/cgi- bin/bookmgr_OS390/BOOKS/IEA2B6A0/12.19.8 quote When you specify DISP=MOD or DISP=NEW for a partitioned data set (PDS) or partitioned data set extended (PDSE), and you also specify a member name in the DSNAME parameter, the member name must not already exist. If the member name already exists, the system terminates the job. /quote If you can explain this away, I'll accept your simple contention also regarding the first suboperand. For example, DSN=MY.LIBRARY(MYMEM),DISP=(OLD,DELETE) deletes the library and not just the member. Assuming you verified your example rather than just composing it in order to illustrate your point, it appears that the normal and abnormal termination disposition suboperands do indeed apply to the data set irrespective of whether or not a member name is specified. I checked the z/OS V1R12 MVS JCL Reference manual to try to be sure and there is certainly no mention of any variation based on whether or not a member name is specified so I guess
Re: Difference between DISP=NEW and MOD for a PDS member?
W dniu 2011-03-06 17:19, Chris Mason pisze: Radoslaw Yes, DISP=NEW fails if the PDS already exists. Even if nonexistent member is specified. I'm assuming that what you mean to say is the following [...] Chris, You used many words, citations, quotations, etc. but IMHO you should just say I was wrong. I really don't care what's in the manual, what somebody said, etc. DISP in JCL is always for dataset, not the member, DISP=NEW always end with JCL error when PDS(E) exist, and it it completely irrelevant whether you specify member name or not or specified member exists or not. The only (not mentioned) case when DISP=NEW works (does not cause error) for existing dataset is ... (I think it wasn't mentioned here yet) GDG. GDG dataset with deferred roll in (proper name can be slightly different, wrote from my poor memory) is simply rolled it when DISP=NEW is used. But it is very specific case, which precludes usage of PDSE and membername of PDS. And was (no longer is) unsupported by IBM for PDS. I want the discussion to stay technical one, not - let's say - political, like USS meaning or Toronto airports. Regards -- Radoslaw Skorupka Lodz, Poland -- BRE Bank SA ul. Senatorska 18 00-950 Warszawa www.brebank.pl Sd Rejonowy dla m. st. Warszawy XII Wydzia Gospodarczy Krajowego Rejestru Sdowego, nr rejestru przedsibiorców KRS 025237 NIP: 526-021-50-88 Wedug stanu na dzie 16.07.2010 r. kapita zakadowy BRE Banku SA (w caoci wpacony) wynosi 168.248.328 zotych. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
In 02c601cbdae7$d9103650$8b30a2f0$@net, on 03/04/2011 at 07:46 PM, Gerhard Adam gada...@charter.net said: I personally can't see any reason for coding DISP=MOD or DISP=NEW when maintaining PDS members. Avoiding an ABEND is a good reason. My point about poor coding practice, is that the DISP is used to reflect the state of an entire data set and not individual members. Perhaps in some other OS. In z/OS it's used for both. Poor design, perhaps, but it's not likely to change. So while DISP=NEW and DISP=MOD are supported, there's no practical reason for their use Not if you don't care aboput the ABEND. -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
In 4d71708d.3000...@bremultibank.com.pl, on 03/05/2011 at 12:06 AM, R.S. r.skoru...@bremultibank.com.pl said: DISP is always for dataset, not for member. Not only is that false, but it contracdicts the remaindeer of your message. DISP is for both the DS and the member. -- Shmuel (Seymour J.) Metz, SysProg and JOAT ISO position; see http://patriot.net/~shmuel/resume/brief.html We don't care. We don't have to care, we're Congress. (S877: The Shut up and Eat Your spam act of 2003) -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
Yes, that would be the same. So, how about if you preallocated a sequential file, then used IEBCOPY (with or without replace - as might be appropriate for your product) to copy the new file into the pds or pdse member? I am curious as to why a pds or pds/e is needed . In my shop, we use individual sequential , or GDG for ftp datasets. Linda - Original Message - From: Charles Mills charl...@mcn.org To: IBM-MAIN@bama.ua.edu Sent: Sunday, March 6, 2011 6:51:01 AM Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Linda - Thanks, yes, I am pre-creating (hope that's what you meant) the dataset. I get into trouble if it's DSN(MEMBER),DISP=NEW/MOD because you can't do that twice. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Linda Mooney Sent: Saturday, March 05, 2011 8:32 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Hi Charles, I have read through the thread with some interest, though I do not know you or which product you are working on. Would it be possible for your code to preallocate the receiving dataset? -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
Gerhard and all following this topic I've tried to develop a complete story in part based on the above extract from the z/OS V1R12 MVS JCL Reference, SA22-7597-14, 12.19.8 Disposition of Partitioned Data Sets (PDSs and PDSEs): http://publibz.boulder.ibm.com/cgi- bin/bookmgr_OS390/BOOKS/IEA2B6A0/12.19.8 I start with the simpler case of a sequential data set and go on to a PDS without a member name specified finishing with a PDS with a member name specified. It's very much a requirement that these tables be viewed with a non- proportional font of course. Sequential -- JCL - | DISP=NEW | DISP=MOD | DISP=OLD | DISP=SHR | - | pass | pass | fail | fail | data set does not exist - | fail | pass | pass | pass | data set does exist - Input - | DISP=NEW | DISP=MOD | DISP=OLD | DISP=SHR | - | 1| 1| | | data set does not exist - | | 2| 2| 2| data set does exist - 1 - error or immediate EOF 2 - normal with QSAM Output - | DISP=NEW | DISP=MOD | DISP=OLD | DISP=SHR | - | 2| 2| | | data set does not exist - | | 3| 2| 2| data set does exist - 2 - normal with QSAM 3 - normal with QSAM and data appended PDS with no member name specified - JCL - | DISP=NEW | DISP=MOD | DISP=OLD | DISP=SHR | - | pass | pass | fail | fail | data set does not exist - | fail | pass | pass | pass | data set does exist - Note: identical to sequential Input - | DISP=NEW | DISP=MOD | DISP=OLD | DISP=SHR | - | 1| 1| | | data set does not exist - | | 4| 4| 4| data set does exist - 1 - error or immediate EOF 4 - programming for PDS structure Output - | DISP=NEW | DISP=MOD | DISP=OLD | DISP=SHR | - | 5| 5| | | data set does not exist - | | 6| 5| 5| data set does exist - 5 - apparently normal with QSAM but creates a sequential data set - or - programming for PDS structure 6 - apparently normal with QSAM but resulting data set is corrupted PDS with member name specified -- JCL - | DISP=NEW | DISP=MOD | DISP=OLD | DISP=SHR | - | pass | pass | fail | fail | data set does not exist - | pass | pass | fail | fail | data set does exist but member does not exist - | fail | fail | pass | pass | data set does exist and member does exist - Input - | DISP=NEW | DISP=MOD | DISP=OLD | DISP=SHR | - | 1| 1| | | data set does not exist - | 1| 1| | | data set does exist but member does not exist - | | | 2| 2| data set does exist and member does exist - 1 - error or immediate EOF 2 - normal with QSAM Output - | DISP=NEW | DISP=MOD | DISP=OLD | DISP=SHR | - | 2| 2| | | data set does not exist - | 2| 6| | | data set does exist but member does not exist - | | | 7| 7| data set does exist and member does exist
Re: Difference between DISP=NEW and MOD for a PDS member?
Charles It's supported by IBM. It's possible - or it was in the early 1970s - to specify that whatever MVS was called in those days could be defined to read a blocked tape backwards so that logically each GET should yield a record in the implied order. Did it work? It most certainly did not. Could it have worked? Well, yes it could and, in effect, I created access method logic comparable to QSAM which did just that. Was it really necessary to have created that access method logic? Well, I never found out that it was. In other words, I never encountered a case of a program from the conversions to MVS of the 360-like systems which ever called upon what this foreign operating system implied - just like MVS - was possible, namely unblocking tape data backwards. Moral: just because the coding appears to be accepted, it doesn't mean what function it implies is actually supported. - BTW, which one is poor coding practice, NEW or MOD? I thought Gerhard made that quite clear: ... In fact, a DISP=MOD doesn't make logical sense for a PDS, ... Chris Mason On Fri, 4 Mar 2011 17:13:32 -0800, Charles Mills charl...@mcn.org wrote: That could be. JCL apparently converts DISP=MOD to DISP=NEW internally (x'C0' is what ends up in JFCBIND2 for either one). That's why I was asking. They are both supported -- why, I wondered -- is there a difference? I'm not just playing with JCL variations in my spare time. I have responsibility for a virtualization product that does a lot of varied processing depending on many details of its execution environment. I have a bug involving the treatment of PDS members DISP=NEW/MOD. I'm trying to figure out what the distinctions are, if any. Face it, the MVS documentation tends to be very scattered. It's tough to know whether the discussion you have found is the only relevant discussion. And it's tough to run an experiment when you don't know what exactly you are looking for. It may be a poor practice in actual coding, but customers/users do what they do. It's supported by IBM. Not good form for a product to fail. And it's supported by IBM but it's a poor coding practice is not an argument I want to have with a customer or prospect. BTW, which one is poor coding practice, NEW or MOD? Geez! Why do I have to defend asking a question on IBMMAIN? Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Gerhard Adam Sent: Friday, March 04, 2011 4:57 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Why should it make a distinction? DISP=MOD and DISP=NEW behave exactly the same way for a new data set also. In fact, a DISP=MOD doesn't make logical sense for a PDS, since it isn't sequential data that is being appended, nor does it make sense for a directory. While the manual indicates that both forms work, they seem like a poor practice in actual coding. -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Charles Mills Sent: Friday, March 04, 2011 4:34 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Yes. Notice that it makes no distinction between MOD and NEW for a member. That is exactly why I asked the question. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Gerhard Adam Sent: Friday, March 04, 2011 4:08 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Has it occurred to anyone to just look at the JCL Reference manual? When you specify DISP=MOD or DISP=NEW for a partitioned data set (PDS) or partitioned data set extended (PDSE), and you also specify a member name in the DSNAME parameter, the member name must not already exist. If the member name already exists, the system terminates the job. When you specify DISP=OLD for a PDS or a PDSE, and you also specify a member name in the DSNAME parameter, the data set must already exist. If the member name already exists and the data set is opened for output, the system replaces the existing member with the new member. If the member name does not already exist and the data set is opened for output, the system adds the member to the data set. When you specify DISP=MOD for a PDS or a PDSE, and you do not specify a member name, the system positions the read/write mechanism at the end of the data set. The system does not make an automatic entry into the directory. When you specify DISP=MOD for a PDS or a PDSE, and you do specify a member name, the system positions the read/write mechanism at the end of the data set. If the member name already exists, the system terminates the job. When you specify DISP=SHR for a partitioned data set extended (PDSE) and also specify a member name, then: * If the member name exists, the member can have one writer or be shared by multiple readers
Re: Difference between DISP=NEW and MOD for a PDS member?
Gerhard ... the DISP is used to reflect the state of an entire data set and not individual members. That's *not* what the section you quoted before says to me! Try making sense of the following otherwise: quote When you specify DISP=MOD or DISP=NEW for a partitioned data set (PDS) or partitioned data set extended (PDSE), and you also specify a member name in the DSNAME parameter, the member name must not already exist. If the member name already exists, the system terminates the job. /quote I tried to work out what the section you quoted meant using the concept that a data set specified as just data_set_name and a data set specified as data_set_name(member_name) were *not* the same but that the data set was just to what the data_set_name referred. This finally didn't work - mainly because I had to assume an error in the paragraph above. Once I had accepted that data set meant data_set_name or data_set_name (member_name), what I found in the manual made sense. Applying Occam's razor, I accepted the latter interpretation. Of course, I could just be having an incredibly dense Saturday and I should desist from making any technical posts this weekend! Chris Mason On Fri, 4 Mar 2011 19:46:01 -0800, Gerhard Adam gada...@charter.net wrote: I don't think it's a question of what to reply, but rather if you feel the product is poorly documented or supported, then it seems the place to be having this conversation is with IBM. I personally can't see any reason for coding DISP=MOD or DISP=NEW when maintaining PDS members. As for, customers can do what they want ... perhaps so, but not if they expect support. I had one programmer code DISP=(OLD,DELETE) to try and remove a member from a LNKLST library, so I don't accept that argument (fortunately security prevented him from deleting the entire library). If they use the DISP improperly, then you will see this kind of coding. My point about poor coding practice, is that the DISP is used to reflect the state of an entire data set and not individual members. So while DISP=NEW and DISP=MOD are supported, there's no practical reason for their use and it creates the erroneous view that DISP processing operates against members. While it's not my place to tell you what to do, or how your organization runs, I'm concerned that you've mentioned that you have a bug, but haven't mentioned what IBM's response is to this (perhaps you mentioned it already and I simply missed it)? I don't find that the MVS documentation is scattered as much as it is redundant in numerous placed. I don't recall seeing conflicting or contradictory documentation, so I'm not quite sure what you mean by that statement. From what I posted, it was found exactly where it should be, so I'm not sure what you might be referring to. If you don't mind ... what is the bug you're experiencing? Is it behaving in some unusual way or simply failing? Adam -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
W dniu 2011-03-05 00:40, Charles Mills pisze: I have been performing some tests. There are a lot of variations: not just JCL but SVC 99, FTP, etc. People here love to demonstrate their knowledge. What's wrong with asking them? Discussion of the city of Toronto's airports is okay but a discussion of PDS DISP= is not? The problem is not obvious, as you have seen in having re-thought your first answer. Charles, You mis-interpreted my intention. I suggested the tests, because it's IMHO good advice. I think you understand it as don't bother us with simple questions, you should RTFM or test it!. Yes, it can be understood that way, but *it wasn't my intention*. Please, remember: English is foreign language for me so sometimes some nuances or allusions can be unintentional. I answered because not to say I know the answer, but because I knew the answer and thought it can be helpful. Provided some clue. Back to technical discussion: it is quite simple IMHO, and can be easily tested using JCL and DFSMS utilities. (My self-correction was a result of type in a hurry mode.) Caution: there many test cases, but it doesn't make it complicated. When you get results for JCL and utilities - I think that ftp, SVC99, and whatever will not make it more complex. Regards -- Radoslaw Skorupka Lodz, Poland P.S. Regarding Toronto: I simply delete whole thread without reading it. -- BRE Bank SA ul. Senatorska 18 00-950 Warszawa www.brebank.pl Sd Rejonowy dla m. st. Warszawy XII Wydzia Gospodarczy Krajowego Rejestru Sdowego, nr rejestru przedsibiorców KRS 025237 NIP: 526-021-50-88 Wedug stanu na dzie 16.07.2010 r. kapita zakadowy BRE Banku SA (w caoci wpacony) wynosi 168.248.328 zotych. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
A lot of replies. Thanks all. Let me try to address various comments in a single response. You mis-interpreted my intention Sorry. I took I'd suggest you to simply perform some tests - IMHO it's much better than asking others about it and Has it occurred to anyone to just look at the JCL Reference manual? as a rebuke. My apologies if I was over-paranoid. English is foreign language for me Your English is certainly better than my Polish and I thank you for being so tolerant of us mono-lingual Americans. it seems the place to be having this conversation is with IBM I am not alleging any bug in any IBM component. I was simply asking how it worked. I think the whole of MVS could use some vast improvements in documentation but that's just IMHO and I don't think IBM would be terribly responsive to my opening a ticket. (And please, save the flames, yes, MVS is much better documented than some operating systems.) Ah! I get it. You interpreted my I have a bug involving the treatment of PDS members as meaning that I was alleging a bug in MVS. Nay! By I have a bug I meant there is a bug (apparently) in my code. That is, the product is failing at a customer's site and I have no reason to think the bug is other than in my code. I've found the immediate problem. Where my code apparently really should be testing for NEW or MOD it was testing only for MOD, and as JCL apparently populates JFCBIND2 with NEW (x'C0') for both NEW and MOD my code was failing for both cases. I asked about the differences between NEW and MOD because if I was going to change the code I wanted to get it right. SHOULD the code be differentiating between NEW and MOD? (Apparently not.) I don't find that the MVS documentation is scattered ... I don't recall seeing conflicting or contradictory documentation ... I'm not sure what you might be referring to. Agreed, on this particular topic, all of the documentation is apparently in one place. But one does not know that, does one? If one is trying to RTFM about how feature X works and one finds a paragraph or a chapter devoted to X, how does one know whether there is additional (or conflicting!) information elsewhere? Particularly if the keywords in question are DISP or NEW or MEMBER which occur with such frequency that a simple search is not useful? DISP is always for dataset, not for member. That statement is a useful principle to keep in mind but it is not exactly relevant to my question. FOO(BAR),DISP=NEW behaves differently depending on whether or not FOO(BAR) exists. So DISP is always FOR the dataset, but its behavior is affected by the member. (And more specifically, *disposition* (DELETE, CATLG, etc., as opposed to status NEW, MOD, etc.) is always for the dataset, not the member.) Finally, I think some of you just don't appreciate the software vendor sales/support environment. I think many of you if you were dealing with a vendor you would be quick to say you are asking big bucks for your product. Like it or not, this is how our shop does things. Fix your product or go away! But somehow when you put on your advice hats you think a vendor should be in a position to tell a customer what you are doing is illogical so fix your logic and THEN buy our product. You may be right -- but you wouldn't sell much software (i.e., stay in business and pay your programmers' salaries) if you were a vendor with that approach. Thanks again. Great resource here. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of R.S. Sent: Saturday, March 05, 2011 5:10 AM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Charles, You mis-interpreted my intention. I suggested the tests, because it's IMHO good advice. I think you understand it as don't bother us with simple questions, you should RTFM or test it!. Yes, it can be understood that way, but *it wasn't my intention*. Please, remember: English is foreign language for me so sometimes some nuances or allusions can be unintentional. I answered because not to say I know the answer, but because I knew the answer and thought it can be -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
W dniu 2011-03-05 04:46, Gerhard Adam pisze: I don't think it's a question of what to reply, but rather if you feel the product is poorly documented or supported, then it seems the place to be having this conversation is with IBM. I personally can't see any reason for coding DISP=MOD or DISP=NEW when maintaining PDS members. As for, customers can do what they want ... perhaps so, but not if they expect support. I had one programmer code DISP=(OLD,DELETE) to try and remove a member from a LNKLST library, so I don't accept that argument (fortunately security prevented him from deleting the entire library). If they use the DISP improperly, then you will see this kind of coding. In normal circumstances there are more protection means. All LNKLST datasets are kept by XCFAS and LLA. Both can be switched off, but this is really exceptional situation. BTW: The programmer mentione in the story could use (SHR,DELETE), because OLD would cause job is waiting for datasets and not even start (the step). -- Radoslaw Skorupka Lodz, Poland -- BRE Bank SA ul. Senatorska 18 00-950 Warszawa www.brebank.pl Sd Rejonowy dla m. st. Warszawy XII Wydzia Gospodarczy Krajowego Rejestru Sdowego, nr rejestru przedsibiorców KRS 025237 NIP: 526-021-50-88 Wedug stanu na dzie 16.07.2010 r. kapita zakadowy BRE Banku SA (w caoci wpacony) wynosi 168.248.328 zotych. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
And I guess the bottom line on the original technical question is: - DISP=NEW fails if the PDS already exists (or, if you will, may be used to make certain that the PDS does not already exist); DISP=MOD is good either way. - DISP=NEW and MOD both fail if the member already exists but fail differently: NEW fails on the CLOSE with SB14-04 -- this can only happen if the program creates the member during execution (OPEN, PUT, CLOSE, OPEN, PUT, CLOSE) because after all the PDS must be brand new; MOD fails on the OPEN but I am not sure of the exact error. Comments? Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Charles Mills Sent: Saturday, March 05, 2011 7:26 AM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? A lot of replies. Thanks all. Let me try to address various comments in a single response. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
The simple answer: The DISP parameter is for the data set/library and not members. For example, DSN=MY.LIBRARY(MYMEM),DISP=(OLD,DELETE) deletes the library and not just the member. -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Charles Mills Sent: Friday, March 04, 2011 3:03 PM To: IBM-MAIN@bama.ua.edu Subject: Difference between DISP=NEW and MOD for a PDS member? What is the difference between DISP=NEW and DISP=MOD for a PDS member (member name specified on the DD statement)? Both disallow duplicate member names. Are there any differences? What? Charles -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
I'm not sure I'm interpreting this properly, but it sounds like you have a product and want to support what your customers do when accessing a PDS (even if they code it badly). My confusion comes from your reference to the JFCB, since it suggests that you are checking to see what they have coded, instead of simply overriding whatever they have coded with the proper disposition. Since you have the JFCB, just set the DISP and issue an OPEN TYPE=J and be done with it. That way it doesn't make any difference what they have coded (since whatever they have coded shouldn't make any difference anyway). You don't have to explain it to them, nor do you have to justify your actions. You're simply taking the choice away from them regardless of what they code and doing it properly. I've found the immediate problem. Where my code apparently really should be testing for NEW or MOD it was testing only for MOD, and as JCL apparently populates JFCBIND2 with NEW (x'C0') for both NEW and MOD my code was failing for both cases. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
want to support what your customers do You got it! issue an OPEN TYPE=J Unfortunately I'm not doing the OPEN, FTP is. The problem is not with the DISP per se. The underlying problem is that FTP has the world's worst RECFM and LRECL defaults, something like RECFM=U, LRECL=1024 (LRECL from recollection). I have several strategies for dealing with the problem and the strategy I choose depends on among other things whether we are in a PDS member DISP=NEW/MOD situation. The bug was in choosing the wrong strategy due to the logic error I described. My strategies are good -- I was just choosing the wrong one. Did somebody say use LOCSITE? Unfortunately LOCSITE is not effective with //DD: As the FTP is z/OS to z/OS a clever FTP client would pick up the dataset attributes from the server but z/OS FTP is not that clever. I am contemplating instead the use of IEFQMREQ to modify the JFCB to add LRECL and RECFM but I have not yet committed to that route. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Gerhard Adam Sent: Saturday, March 05, 2011 2:32 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? I'm not sure I'm interpreting this properly, but it sounds like you have a product and want to support what your customers do when accessing a PDS (even if they code it badly). My confusion comes from your reference to the JFCB, since it suggests that you are checking to see what they have coded, -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
Hi Charles, I have read through the thread with some interest, though I do not know you or which product you are working on. Would it be possible for your code to preallocate the receiving dataset? HTH, Linda - Original Message - From: Charles Mills charl...@mcn.org To: IBM-MAIN@bama.ua.edu Sent: Friday, March 4, 2011 12:03:14 PM Subject: Difference between DISP=NEW and MOD for a PDS member? What is the difference between DISP=NEW and DISP=MOD for a PDS member (member name specified on the DD statement)? Both disallow duplicate member names. Are there any differences? What? Charles -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
Charles DISP is always for dataset, not for member. That statement is a useful principle to keep in mind but it is not exactly relevant to my question. The statement is wrong and I think there may actually be a significance for your threefold initial question. For the arguments as to why that statement is wrong, please see, for example, my posts in answer to Don Williams and Gerhard Adam. (And more specifically, *disposition* (DELETE, CATLG, etc., as opposed to status NEW, MOD, etc.) is always for the dataset, not the member.) A subtlety not to be overlooked. Chris Mason On Sat, 5 Mar 2011 07:26:17 -0800, Charles Mills charl...@mcn.org wrote: A lot of replies. Thanks all. Let me try to address various comments in a single response. You mis-interpreted my intention Sorry. I took I'd suggest you to simply perform some tests - IMHO it's much better than asking others about it and Has it occurred to anyone to just look at the JCL Reference manual? as a rebuke. My apologies if I was over-paranoid. English is foreign language for me Your English is certainly better than my Polish and I thank you for being so tolerant of us mono-lingual Americans. it seems the place to be having this conversation is with IBM I am not alleging any bug in any IBM component. I was simply asking how it worked. I think the whole of MVS could use some vast improvements in documentation but that's just IMHO and I don't think IBM would be terribly responsive to my opening a ticket. (And please, save the flames, yes, MVS is much better documented than some operating systems.) Ah! I get it. You interpreted my I have a bug involving the treatment of PDS members as meaning that I was alleging a bug in MVS. Nay! By I have a bug I meant there is a bug (apparently) in my code. That is, the product is failing at a customer's site and I have no reason to think the bug is other than in my code. I've found the immediate problem. Where my code apparently really should be testing for NEW or MOD it was testing only for MOD, and as JCL apparently populates JFCBIND2 with NEW (x'C0') for both NEW and MOD my code was failing for both cases. I asked about the differences between NEW and MOD because if I was going to change the code I wanted to get it right. SHOULD the code be differentiating between NEW and MOD? (Apparently not.) I don't find that the MVS documentation is scattered ... I don't recall seeing conflicting or contradictory documentation ... I'm not sure what you might be referring to. Agreed, on this particular topic, all of the documentation is apparently in one place. But one does not know that, does one? If one is trying to RTFM about how feature X works and one finds a paragraph or a chapter devoted to X, how does one know whether there is additional (or conflicting!) information elsewhere? Particularly if the keywords in question are DISP or NEW or MEMBER which occur with such frequency that a simple search is not useful? DISP is always for dataset, not for member. That statement is a useful principle to keep in mind but it is not exactly relevant to my question. FOO(BAR),DISP=NEW behaves differently depending on whether or not FOO(BAR) exists. So DISP is always FOR the dataset, but its behavior is affected by the member. (And more specifically, *disposition* (DELETE, CATLG, etc., as opposed to status NEW, MOD, etc.) is always for the dataset, not the member.) Finally, I think some of you just don't appreciate the software vendor sales/support environment. I think many of you if you were dealing with a vendor you would be quick to say you are asking big bucks for your product. Like it or not, this is how our shop does things. Fix your product or go away! But somehow when you put on your advice hats you think a vendor should be in a position to tell a customer what you are doing is illogical so fix your logic and THEN buy our product. You may be right -- but you wouldn't sell much software (i.e., stay in business and pay your programmers' salaries) if you were a vendor with that approach. Thanks again. Great resource here. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of R.S. Sent: Saturday, March 05, 2011 5:10 AM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Charles, You mis-interpreted my intention. I suggested the tests, because it's IMHO good advice. I think you understand it as don't bother us with simple questions, you should RTFM or test it!. Yes, it can be understood that way, but *it wasn't my intention*. Please, remember: English is foreign language for me so sometimes some nuances or allusions can be unintentional. I answered because not to say I know the answer, but because I knew the answer and thought it can be -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists
Re: Difference between DISP=NEW and MOD for a PDS member?
Charles The bottom line lacks copper. DISP=NEW fails if the PDS already exists Not if the name of a non-existent member is specified. DISP=NEW and MOD both fail if the member already exists. I'm still waiting for an explanation of how a member can exist in a partitioned data set that cannot exist - possibly I'm in the wrong universe! Chris Mason On Sat, 5 Mar 2011 11:28:40 -0800, Charles Mills charl...@mcn.org wrote: And I guess the bottom line on the original technical question is: - DISP=NEW fails if the PDS already exists (or, if you will, may be used to make certain that the PDS does not already exist); DISP=MOD is good either way. - DISP=NEW and MOD both fail if the member already exists but fail differently: NEW fails on the CLOSE with SB14-04 -- this can only happen if the program creates the member during execution (OPEN, PUT, CLOSE, OPEN, PUT, CLOSE) because after all the PDS must be brand new; MOD fails on the OPEN but I am not sure of the exact error. Comments? Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Charles Mills Sent: Saturday, March 05, 2011 7:26 AM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? A lot of replies. Thanks all. Let me try to address various comments in a single response. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
Don The simple answer: This is not a topic for people who need simple answers! When I said ... DISP=NEW/MOD insists that the member does not exist irrespective of whether or not a partitioned data set exists obviously I was concentrating on the only on first suboperand of the DISP operand. It seems we must take a different perspective according to whether we are dealing with the first suboperand or the second and third suboperands - not at all simple! The DISP parameter is for the data set/library and not members. Apparently not so in the case of the first suboperand. If a member name is specified, the first suboperand relates to the member and appears not to care about the data set. Otherwise why make a fuss about whether a member exists or not in a data set that can't be there to contain the member - which may or may not be there - if the data set is not supposed to exist - in the case of DISP=NEW anyhow. There's something of the Cheshire Cat about this! Here, once again for your delectation, is the first paragraph of the section 12.19.8 Disposition of Partitioned Data Sets (PDSs and PDSEs) from the z/OS V1R12 MVS JCL Reference manual: http://publibz.boulder.ibm.com/cgi- bin/bookmgr_OS390/BOOKS/IEA2B6A0/12.19.8 quote When you specify DISP=MOD or DISP=NEW for a partitioned data set (PDS) or partitioned data set extended (PDSE), and you also specify a member name in the DSNAME parameter, the member name must not already exist. If the member name already exists, the system terminates the job. /quote If you can explain this away, I'll accept your simple contention also regarding the first suboperand. For example, DSN=MY.LIBRARY(MYMEM),DISP=(OLD,DELETE) deletes the library and not just the member. Assuming you verified your example rather than just composing it in order to illustrate your point, it appears that the normal and abnormal termination disposition suboperands do indeed apply to the data set irrespective of whether or not a member name is specified. I checked the z/OS V1R12 MVS JCL Reference manual to try to be sure and there is certainly no mention of any variation based on whether or not a member name is specified so I guess an actual test would have been superfluous. http://publibz.boulder.ibm.com/cgi- bin/bookmgr_OS390/BOOKS/IEA2B6A0/12.19.2.2 http://publibz.boulder.ibm.com/cgi- bin/bookmgr_OS390/BOOKS/IEA2B6A0/12.19.2.3 Indeed, it's all getting a bit complex and the poor systems programmer who tried to delete a member using the DISP second suboperand can be forgiven - well by those who were not desperately relying on the partitioned data set, that is![1] - A modification to my previous post with the diagrams: In the case of a DISP=NEW data set or dataset(member) - and DISP=MOD if the entity has had no existence hitherto - it is an error not to write something. This makes my error or immediate EOF simply error. An immediate EOF would be possible only if the data set - or a member I guess - had deliberately been created - written to - with 0 records. Alternatively I'll be happy to be corrected. - Chris Mason [1] This reminds me of an occasion when I keyed up a SCRATCH statement that was supposed to be coded as SCRATCH VTOC,VOL=2314=MYVOLM,SYS After that traumatic event, I resolved always to use the order SCRATCH VTOC,SYS,VOL=2314=MYVOLM because it turns out you can't always be sure that where you intended to key a comma, a comma actually got keyed! I remember even better because it was New Year's Eve and the was someone from north of the border in the overworked team. On Sat, 5 Mar 2011 15:12:41 -0500, Don Williams donb...@gmail.com wrote: The simple answer: The DISP parameter is for the data set/library and not members. For example, DSN=MY.LIBRARY(MYMEM),DISP=(OLD,DELETE) deletes the library and not just the member. -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Charles Mills Sent: Friday, March 04, 2011 3:03 PM To: IBM-MAIN@bama.ua.edu Subject: Difference between DISP=NEW and MOD for a PDS member? What is the difference between DISP=NEW and DISP=MOD for a PDS member (member name specified on the DD statement)? Both disallow duplicate member names. Are there any differences? What? Charles -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Vendor documentation (Was: Difference between DISP=NEW and MOD for a PDS member?)
Gerhard You don't have to explain it to them, nor do you have to justify your actions. Actually, you do - both. The customers are paying for you and your family - very likely - to exist on this earth and they deserve every consideration that you can offer them. I have spent a lot - a lot - of time dealing with an arrogant vendor - now subsumed into IBM - who would not explain an sequence of logic that - with a lot of work - could be deduced but was diametrically at odds with architecture and intended and accepted practice. I wasn't even getting to the point where I was dealing with someone like Charles Mills who was actually responsible for the sequence so that I could pass on what I had discovered. Had I managed to make my through the impenetrable supposedly technical bureaucracy, I would have made sure that the aberration was understood and, having been understood, was at least highlighted very clearly in the documentation so that necessary customisation could support it. What is even more galling is that a lunch on the morning the problem was first raised, my principle technical colleague at the customer and I somewhat jokingly agreed on the probable cause of the problem. Weeks later we were proved to have been right for the wrong reasons but it took the intervening weeks to be sure of the unthinkable - all because the vendor was *not* explaining what they were doing. You're simply taking the choice away from them regardless of what they code and doing it properly. Such an action *has* to be documented - close to where (supposedly) doing it properly is documented. Chris Mason On Sat, 5 Mar 2011 14:31:58 -0800, Gerhard Adam gada...@charter.net wrote: I'm not sure I'm interpreting this properly, but it sounds like you have a product and want to support what your customers do when accessing a PDS (even if they code it badly). My confusion comes from your reference to the JFCB, since it suggests that you are checking to see what they have coded, instead of simply overriding whatever they have coded with the proper disposition. Since you have the JFCB, just set the DISP and issue an OPEN TYPE=J and be done with it. That way it doesn't make any difference what they have coded (since whatever they have coded shouldn't make any difference anyway). You don't have to explain it to them, nor do you have to justify your actions. You're simply taking the choice away from them regardless of what they code and doing it properly. I've found the immediate problem. Where my code apparently really should be testing for NEW or MOD it was testing only for MOD, and as JCL apparently populates JFCBIND2 with NEW (x'C0') for both NEW and MOD my code was failing for both cases. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
Charles The underlying problem is that FTP has the world's worst RECFM and LRECL defaults, something like RECFM=U, LRECL=1024 (LRECL from recollection). The FTP LRECL default is 256 for both client and server. http://publibz.boulder.ibm.com/cgi- bin/bookmgr_OS390/BOOKS/F1A1B4A0/18.77 The FTP RECFM default is VB for both client and server. http://publibz.boulder.ibm.com/cgi- bin/bookmgr_OS390/BOOKS/F1A1B4A0/18.100 Did somebody say use LOCSITE? Unfortunately LOCSITE is not effective with //DD: Not unless you have been receiving private communications which the rest of us have not seen or it's a contributor whose post hasn't appeared in the IBM- MAIN archives. - If your problem concerns the way z/OS Communications Server FTP behaves, you may find the expertise you need in the IBMTCP-L list. For IBMTCP-L subscribe / signoff / archive access instructions, send email to lists...@vm.marist.edu with the message: INFO IBMTCP-L Chris Mason On Sat, 5 Mar 2011 14:49:20 -0800, Charles Mills charl...@mcn.org wrote: want to support what your customers do You got it! issue an OPEN TYPE=J Unfortunately I'm not doing the OPEN, FTP is. The problem is not with the DISP per se. The underlying problem is that FTP has the world's worst RECFM and LRECL defaults, something like RECFM=U, LRECL=1024 (LRECL from recollection). I have several strategies for dealing with the problem and the strategy I choose depends on among other things whether we are in a PDS member DISP=NEW/MOD situation. The bug was in choosing the wrong strategy due to the logic error I described. My strategies are good -- I was just choosing the wrong one. Did somebody say use LOCSITE? Unfortunately LOCSITE is not effective with //DD: As the FTP is z/OS to z/OS a clever FTP client would pick up the dataset attributes from the server but z/OS FTP is not that clever. I am contemplating instead the use of IEFQMREQ to modify the JFCB to add LRECL and RECFM but I have not yet committed to that route. Charles -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Difference between DISP=NEW and MOD for a PDS member?
What is the difference between DISP=NEW and DISP=MOD for a PDS member (member name specified on the DD statement)? Both disallow duplicate member names. Are there any differences? What? Charles -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
W dniu 2011-03-04 21:03, Charles Mills pisze: What is the difference between DISP=NEW and DISP=MOD for a PDS member (member name specified on the DD statement)? Both disallow duplicate member names. Are there any differences? What? DISP is always for dataset, not for member. DISP=MOD for existing member ends with SB14. DISP=NEW for existing member ends with JCL ERROR (assumed SMS). DISP=MOD for non-existing member but existing PDS ends with pds gas. BTW: I'd suggest you to simply perform some tests - IMHO it's much better than asking others about it. -- Radoslaw Skorupka Lodz, Poland -- BRE Bank SA ul. Senatorska 18 00-950 Warszawa www.brebank.pl Sd Rejonowy dla m. st. Warszawy XII Wydzia Gospodarczy Krajowego Rejestru Sdowego, nr rejestru przedsibiorców KRS 025237 NIP: 526-021-50-88 Wedug stanu na dzie 16.07.2010 r. kapita zakadowy BRE Banku SA (w caoci wpacony) wynosi 168.248.328 zotych. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
W dniu 2011-03-05 00:06, R.S. pisze: W dniu 2011-03-04 21:03, Charles Mills pisze: What is the difference between DISP=NEW and DISP=MOD for a PDS member (member name specified on the DD statement)? Both disallow duplicate member names. Are there any differences? What? DISP is always for dataset, not for member. DISP=MOD for existing member ends with SB14. DISP=NEW for existing member ends with JCL ERROR (assumed SMS). DISP=MOD for non-existing member but existing PDS ends with pds gas. BTW: I'd suggest you to simply perform some tests - IMHO it's much better than asking others about it. Errata! DISP=NEW for existing *DATASET* (was: member) ends with JCL ERROR (assumed SMS). To complement: DISP=NEW for existing member means existing dataset, means ...see above DISP=NEW for non-existing member, but existing dataset also ends with JCL ERROR. -- Radoslaw Skorupka Lodz, Poland -- BRE Bank SA ul. Senatorska 18 00-950 Warszawa www.brebank.pl Sd Rejonowy dla m. st. Warszawy XII Wydzia Gospodarczy Krajowego Rejestru Sdowego, nr rejestru przedsibiorców KRS 025237 NIP: 526-021-50-88 Wedug stanu na dzie 16.07.2010 r. kapita zakadowy BRE Banku SA (w caoci wpacony) wynosi 168.248.328 zotych. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
I have been performing some tests. There are a lot of variations: not just JCL but SVC 99, FTP, etc. People here love to demonstrate their knowledge. What's wrong with asking them? Discussion of the city of Toronto's airports is okay but a discussion of PDS DISP= is not? The problem is not obvious, as you have seen in having re-thought your first answer. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of R.S. Sent: Friday, March 04, 2011 3:07 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? W dniu 2011-03-04 21:03, Charles Mills pisze: What is the difference between DISP=NEW and DISP=MOD for a PDS member (member name specified on the DD statement)? Both disallow duplicate member names. Are there any differences? What? DISP is always for dataset, not for member. DISP=MOD for existing member ends with SB14. DISP=NEW for existing member ends with JCL ERROR (assumed SMS). DISP=MOD for non-existing member but existing PDS ends with pds gas. BTW: I'd suggest you to simply perform some tests - IMHO it's much better than asking others about it. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
Has it occurred to anyone to just look at the JCL Reference manual? When you specify DISP=MOD or DISP=NEW for a partitioned data set (PDS) or partitioned data set extended (PDSE), and you also specify a member name in the DSNAME parameter, the member name must not already exist. If the member name already exists, the system terminates the job. When you specify DISP=OLD for a PDS or a PDSE, and you also specify a member name in the DSNAME parameter, the data set must already exist. If the member name already exists and the data set is opened for output, the system replaces the existing member with the new member. If the member name does not already exist and the data set is opened for output, the system adds the member to the data set. When you specify DISP=MOD for a PDS or a PDSE, and you do not specify a member name, the system positions the read/write mechanism at the end of the data set. The system does not make an automatic entry into the directory. When you specify DISP=MOD for a PDS or a PDSE, and you do specify a member name, the system positions the read/write mechanism at the end of the data set. If the member name already exists, the system terminates the job. When you specify DISP=SHR for a partitioned data set extended (PDSE) and also specify a member name, then: * If the member name exists, the member can have one writer or be shared by multiple readers, or * If the member name does not exist, the member can be added to the data set. Thus, multiple jobs can access different members of the data set and add new members to the data set concurrently -- but concurrent update access to a specific member (or update and read by other jobs) is not valid. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
Yes. Notice that it makes no distinction between MOD and NEW for a member. That is exactly why I asked the question. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Gerhard Adam Sent: Friday, March 04, 2011 4:08 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Has it occurred to anyone to just look at the JCL Reference manual? When you specify DISP=MOD or DISP=NEW for a partitioned data set (PDS) or partitioned data set extended (PDSE), and you also specify a member name in the DSNAME parameter, the member name must not already exist. If the member name already exists, the system terminates the job. When you specify DISP=OLD for a PDS or a PDSE, and you also specify a member name in the DSNAME parameter, the data set must already exist. If the member name already exists and the data set is opened for output, the system replaces the existing member with the new member. If the member name does not already exist and the data set is opened for output, the system adds the member to the data set. When you specify DISP=MOD for a PDS or a PDSE, and you do not specify a member name, the system positions the read/write mechanism at the end of the data set. The system does not make an automatic entry into the directory. When you specify DISP=MOD for a PDS or a PDSE, and you do specify a member name, the system positions the read/write mechanism at the end of the data set. If the member name already exists, the system terminates the job. When you specify DISP=SHR for a partitioned data set extended (PDSE) and also specify a member name, then: * If the member name exists, the member can have one writer or be shared by multiple readers, or * If the member name does not exist, the member can be added to the data set. Thus, multiple jobs can access different members of the data set and add new members to the data set concurrently -- but concurrent update access to a specific member (or update and read by other jobs) is not valid. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
Why should it make a distinction? DISP=MOD and DISP=NEW behave exactly the same way for a new data set also. In fact, a DISP=MOD doesn't make logical sense for a PDS, since it isn't sequential data that is being appended, nor does it make sense for a directory. While the manual indicates that both forms work, they seem like a poor practice in actual coding. -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Charles Mills Sent: Friday, March 04, 2011 4:34 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Yes. Notice that it makes no distinction between MOD and NEW for a member. That is exactly why I asked the question. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Gerhard Adam Sent: Friday, March 04, 2011 4:08 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Has it occurred to anyone to just look at the JCL Reference manual? When you specify DISP=MOD or DISP=NEW for a partitioned data set (PDS) or partitioned data set extended (PDSE), and you also specify a member name in the DSNAME parameter, the member name must not already exist. If the member name already exists, the system terminates the job. When you specify DISP=OLD for a PDS or a PDSE, and you also specify a member name in the DSNAME parameter, the data set must already exist. If the member name already exists and the data set is opened for output, the system replaces the existing member with the new member. If the member name does not already exist and the data set is opened for output, the system adds the member to the data set. When you specify DISP=MOD for a PDS or a PDSE, and you do not specify a member name, the system positions the read/write mechanism at the end of the data set. The system does not make an automatic entry into the directory. When you specify DISP=MOD for a PDS or a PDSE, and you do specify a member name, the system positions the read/write mechanism at the end of the data set. If the member name already exists, the system terminates the job. When you specify DISP=SHR for a partitioned data set extended (PDSE) and also specify a member name, then: * If the member name exists, the member can have one writer or be shared by multiple readers, or * If the member name does not exist, the member can be added to the data set. Thus, multiple jobs can access different members of the data set and add new members to the data set concurrently -- but concurrent update access to a specific member (or update and read by other jobs) is not valid. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
DISP=MOD was originally created as a means to append EREP data to the EREP history tape data set. Of course in today's world it gets used for everything. However if memory serves trying to use DISP=MOD in place of DISP=NEW would cause an error in the EREP job stream. Perhaps it behaves differently with other types of DTF's. - Original Message - From: IBM Mainframe Discussion List IBM-MAIN@bama.ua.edu To: IBM-MAIN@bama.ua.edu IBM-MAIN@bama.ua.edu Sent: Fri Mar 04 18:34:22 2011 Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Yes. Notice that it makes no distinction between MOD and NEW for a member. That is exactly why I asked the question. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Gerhard Adam Sent: Friday, March 04, 2011 4:08 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Has it occurred to anyone to just look at the JCL Reference manual? When you specify DISP=MOD or DISP=NEW for a partitioned data set (PDS) or partitioned data set extended (PDSE), and you also specify a member name in the DSNAME parameter, the member name must not already exist. If the member name already exists, the system terminates the job. When you specify DISP=OLD for a PDS or a PDSE, and you also specify a member name in the DSNAME parameter, the data set must already exist. If the member name already exists and the data set is opened for output, the system replaces the existing member with the new member. If the member name does not already exist and the data set is opened for output, the system adds the member to the data set. When you specify DISP=MOD for a PDS or a PDSE, and you do not specify a member name, the system positions the read/write mechanism at the end of the data set. The system does not make an automatic entry into the directory. When you specify DISP=MOD for a PDS or a PDSE, and you do specify a member name, the system positions the read/write mechanism at the end of the data set. If the member name already exists, the system terminates the job. When you specify DISP=SHR for a partitioned data set extended (PDSE) and also specify a member name, then: * If the member name exists, the member can have one writer or be shared by multiple readers, or * If the member name does not exist, the member can be added to the data set. Thus, multiple jobs can access different members of the data set and add new members to the data set concurrently -- but concurrent update access to a specific member (or update and read by other jobs) is not valid. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
That could be. JCL apparently converts DISP=MOD to DISP=NEW internally (x'C0' is what ends up in JFCBIND2 for either one). That's why I was asking. They are both supported -- why, I wondered -- is there a difference? I'm not just playing with JCL variations in my spare time. I have responsibility for a virtualization product that does a lot of varied processing depending on many details of its execution environment. I have a bug involving the treatment of PDS members DISP=NEW/MOD. I'm trying to figure out what the distinctions are, if any. Face it, the MVS documentation tends to be very scattered. It's tough to know whether the discussion you have found is the only relevant discussion. And it's tough to run an experiment when you don't know what exactly you are looking for. It may be a poor practice in actual coding, but customers/users do what they do. It's supported by IBM. Not good form for a product to fail. And it's supported by IBM but it's a poor coding practice is not an argument I want to have with a customer or prospect. BTW, which one is poor coding practice, NEW or MOD? Geez! Why do I have to defend asking a question on IBMMAIN? Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Gerhard Adam Sent: Friday, March 04, 2011 4:57 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Why should it make a distinction? DISP=MOD and DISP=NEW behave exactly the same way for a new data set also. In fact, a DISP=MOD doesn't make logical sense for a PDS, since it isn't sequential data that is being appended, nor does it make sense for a directory. While the manual indicates that both forms work, they seem like a poor practice in actual coding. -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Charles Mills Sent: Friday, March 04, 2011 4:34 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Yes. Notice that it makes no distinction between MOD and NEW for a member. That is exactly why I asked the question. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Gerhard Adam Sent: Friday, March 04, 2011 4:08 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Has it occurred to anyone to just look at the JCL Reference manual? When you specify DISP=MOD or DISP=NEW for a partitioned data set (PDS) or partitioned data set extended (PDSE), and you also specify a member name in the DSNAME parameter, the member name must not already exist. If the member name already exists, the system terminates the job. When you specify DISP=OLD for a PDS or a PDSE, and you also specify a member name in the DSNAME parameter, the data set must already exist. If the member name already exists and the data set is opened for output, the system replaces the existing member with the new member. If the member name does not already exist and the data set is opened for output, the system adds the member to the data set. When you specify DISP=MOD for a PDS or a PDSE, and you do not specify a member name, the system positions the read/write mechanism at the end of the data set. The system does not make an automatic entry into the directory. When you specify DISP=MOD for a PDS or a PDSE, and you do specify a member name, the system positions the read/write mechanism at the end of the data set. If the member name already exists, the system terminates the job. When you specify DISP=SHR for a partitioned data set extended (PDSE) and also specify a member name, then: * If the member name exists, the member can have one writer or be shared by multiple readers, or * If the member name does not exist, the member can be added to the data set. Thus, multiple jobs can access different members of the data set and add new members to the data set concurrently -- but concurrent update access to a specific member (or update and read by other jobs) is not valid. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html
Re: Difference between DISP=NEW and MOD for a PDS member?
Sir it is not my place to ask you why you asked a particular question, or why you want to use a particular approach. Your reasons are really none of my business. If the same approach caused problems in our shop I may mention it as a professional courtesy relative to the technical discussion. If people don't think something is worth discussing they don't have to reply. - Original Message - From: IBM Mainframe Discussion List IBM-MAIN@bama.ua.edu To: IBM-MAIN@bama.ua.edu IBM-MAIN@bama.ua.edu Sent: Fri Mar 04 19:13:32 2011 Subject: Re: Difference between DISP=NEW and MOD for a PDS member? That could be. JCL apparently converts DISP=MOD to DISP=NEW internally (x'C0' is what ends up in JFCBIND2 for either one). That's why I was asking. They are both supported -- why, I wondered -- is there a difference? I'm not just playing with JCL variations in my spare time. I have responsibility for a virtualization product that does a lot of varied processing depending on many details of its execution environment. I have a bug involving the treatment of PDS members DISP=NEW/MOD. I'm trying to figure out what the distinctions are, if any. Face it, the MVS documentation tends to be very scattered. It's tough to know whether the discussion you have found is the only relevant discussion. And it's tough to run an experiment when you don't know what exactly you are looking for. It may be a poor practice in actual coding, but customers/users do what they do. It's supported by IBM. Not good form for a product to fail. And it's supported by IBM but it's a poor coding practice is not an argument I want to have with a customer or prospect. BTW, which one is poor coding practice, NEW or MOD? Geez! Why do I have to defend asking a question on IBMMAIN? Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Gerhard Adam Sent: Friday, March 04, 2011 4:57 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Why should it make a distinction? DISP=MOD and DISP=NEW behave exactly the same way for a new data set also. In fact, a DISP=MOD doesn't make logical sense for a PDS, since it isn't sequential data that is being appended, nor does it make sense for a directory. While the manual indicates that both forms work, they seem like a poor practice in actual coding. -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Charles Mills Sent: Friday, March 04, 2011 4:34 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Yes. Notice that it makes no distinction between MOD and NEW for a member. That is exactly why I asked the question. Charles -Original Message- From: IBM Mainframe Discussion List [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Gerhard Adam Sent: Friday, March 04, 2011 4:08 PM To: IBM-MAIN@bama.ua.edu Subject: Re: Difference between DISP=NEW and MOD for a PDS member? Has it occurred to anyone to just look at the JCL Reference manual? When you specify DISP=MOD or DISP=NEW for a partitioned data set (PDS) or partitioned data set extended (PDSE), and you also specify a member name in the DSNAME parameter, the member name must not already exist. If the member name already exists, the system terminates the job. When you specify DISP=OLD for a PDS or a PDSE, and you also specify a member name in the DSNAME parameter, the data set must already exist. If the member name already exists and the data set is opened for output, the system replaces the existing member with the new member. If the member name does not already exist and the data set is opened for output, the system adds the member to the data set. When you specify DISP=MOD for a PDS or a PDSE, and you do not specify a member name, the system positions the read/write mechanism at the end of the data set. The system does not make an automatic entry into the directory. When you specify DISP=MOD for a PDS or a PDSE, and you do specify a member name, the system positions the read/write mechanism at the end of the data set. If the member name already exists, the system terminates the job. When you specify DISP=SHR for a partitioned data set extended (PDSE) and also specify a member name, then: * If the member name exists, the member can have one writer or be shared by multiple readers, or * If the member name does not exist, the member can be added to the data set. Thus, multiple jobs can access different members of the data set and add new members to the data set concurrently -- but concurrent update access to a specific member (or update and read by other jobs) is not valid. -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm
Re: Difference between DISP=NEW and MOD for a PDS member?
I don't think it's a question of what to reply, but rather if you feel the product is poorly documented or supported, then it seems the place to be having this conversation is with IBM. I personally can't see any reason for coding DISP=MOD or DISP=NEW when maintaining PDS members. As for, customers can do what they want ... perhaps so, but not if they expect support. I had one programmer code DISP=(OLD,DELETE) to try and remove a member from a LNKLST library, so I don't accept that argument (fortunately security prevented him from deleting the entire library). If they use the DISP improperly, then you will see this kind of coding. My point about poor coding practice, is that the DISP is used to reflect the state of an entire data set and not individual members. So while DISP=NEW and DISP=MOD are supported, there's no practical reason for their use and it creates the erroneous view that DISP processing operates against members. While it's not my place to tell you what to do, or how your organization runs, I'm concerned that you've mentioned that you have a bug, but haven't mentioned what IBM's response is to this (perhaps you mentioned it already and I simply missed it)? I don't find that the MVS documentation is scattered as much as it is redundant in numerous placed. I don't recall seeing conflicting or contradictory documentation, so I'm not quite sure what you mean by that statement. From what I posted, it was found exactly where it should be, so I'm not sure what you might be referring to. If you don't mind ... what is the bug you're experiencing? Is it behaving in some unusual way or simply failing? Adam -- For IBM-MAIN subscribe / signoff / archive access instructions, send email to lists...@bama.ua.edu with the message: GET IBM-MAIN INFO Search the archives at http://bama.ua.edu/archives/ibm-main.html