Intentional abends: System vs. User vs. #DIE (was VarIabLe DD names in VSAM)
Thanks for the mention Rob. WRT this religions war over whether to use system abends vs. user abends, I'm agnostic. My own personal preference is to use a contrived 0C1 (which is what my dead traps are that Rob mentioned), but it ain't worth a hill of beans to argue about. However, not that my #DIE macro has been mentioned, I would like to add this. One minor convenience of #DIE, in addition to those mentioned by RScott, is that it can generate a conditional branch ahead of the X'00DEAD' code, thereby making execution of the dead trap optional. Example: LTR R1,R1 #DIE NP,'ILLOGICAL IF R1 IS NOT POSITIVE' z/XDC's internal code has *thousands* of #DIE traps scattered throughout its logic. Yet, problem reports resulting from those traps occur only a couple of times a year. The purpose of the #DIE traps is to arrest illogical conditions before that can seed a failure that occurs a million instructions later. They are used within z/XDC's logic where the perceived likelihood of the illogical condition is low or nonexistent. i.e. in places where it is not worth the effort to write a more polite handler. The result of my use of #DIE traps is that when an impossible condition does arise, my having trapped it early makes creating a fix considerably easier. Sometimes I can produce and publish a fix within only a day or two or sometimes even within an hour or two! One good application for dead traps is to verify the critical details of an interface to some outside support routine (especially undocumented interfaces). If an API changes in an unexpected way, it generally is good to know about that sooner than later. One example of where I got bit by that is with IBM's TPUT service. A couple of decades ago, they added some new return codes. I was using a branch vector to react to the various return codes, so the new one caused execution to blow past the vector entirely. There were several lessons learned from that. One was to use dead traps to vcheck what was returned. The #DIE macro is available to anyone for free in a MACLIB.ZIP file located at http://www.colesoft.com/Downloads/downloads_utilities.htmlhttp://www.colesoft.com/Downloads/downloads_utilities.html Dave Cole REPLY TO: dbc...@colesoft.com ColeSoft Marketing WEB PAGE: http://www.colesoft.com 736 Fox Hollow RoadVOICE:540-456-8536 Afton, VA 22920FAX: 540-456-6658 At 2/13/2012 06:32 AM, Rob Scott wrote: I have always liked Dave Cole's approach in z/XDC here - he supplies a #DIE macro that places X'00DEAD' in the code followed by identification bytes that indicate where in the code the #DIE was and optional comments Rob Scott Lead Developer Rocket Software 275 Grove Street * Newton, MA 02466-2272 * USA Tel: +1.781.684.2305 Email: rsc...@rs.com Web: www.rocketsoftware.com -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Martin Truebner Sent: 13 February 2012 11:21 To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: VarIabLe DD names in VSAM Thomas (or should I say amateur in asm ;-) The idea is to produce something that is easy recognisable as done on purpose and not to muddy the water more for this unexpected situation. I for example always have a EX *,* (or an equivalent if there is no base covering it) after a EXEC CICS RETURN. It must work- but hey, I have seen horses dying in front of drugstores (German saying) -- Martin Pi_cap_CPU - all you ever need around MWLC/SCRT/CMT in z/VSE more at http://www.picapcpu.de
SV: VarIabLe DD names in VSAM
Why not code: DC X'00' ? (Just a curious amateur in asm) Regards, Thomas Berg _ Thomas Berg Specialist A M SWEDBANK -Ursprungligt meddelande- Från: IBM Mainframe Assembler List [mailto:ASSEMBLER- l...@listserv.uga.edu] För McKown, John Skickat: den 10 februari 2012 14:10 Till: ASSEMBLER-LIST@LISTSERV.UGA.EDU Ämne: Re: VarIabLe DD names in VSAM I used to do EX *,0 to get an S0C3. I now do j *+2 to get a S0C1. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Binyamin Dissen Sent: Friday, February 10, 2012 6:31 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: VarIabLe DD names in VSAM On Fri, 10 Feb 2012 22:06:12 +1100 Shane G ibm-m...@tpg.com.au wrote: :On Fri, Feb 10th, 2012 at 9:37 PM, Sharuff Morsa3 wrote: : Would anyone want to share good/bad comments they've seen ? :This code is never entered :Usually in recovery/error processing code. What I do is force an 0C6 in such cases. Leaves everything intact for debugging. -- Binyamin Dissen bdis...@dissensoftware.com http://www.dissensoftware.com Director, Dissen Software, Bar Grill - Israel Should you use the mailblocks package and expect a response from me, you should preauthorize the dissensoftware.com domain. I very rarely bother responding to challenge/response systems, especially those from irresponsible companies.
Re: SV: VarIabLe DD names in VSAM
On 2/13/2012 3:49 AM, Thomas Berg wrote: Why not code: DC X'00' ? (Just a curious amateur in asm) Well, the following instruction will be on an odd boundary, for one. More common, I think: DC H'0' Regards, Thomas Berg _ Thomas Berg Specialist A M SWEDBANK -Ursprungligt meddelande- Från: IBM Mainframe Assembler List [mailto:ASSEMBLER- l...@listserv.uga.edu] För McKown, John Skickat: den 10 februari 2012 14:10 Till: ASSEMBLER-LIST@LISTSERV.UGA.EDU Ämne: Re: VarIabLe DD names in VSAM I used to do EX *,0 to get an S0C3. I now do j *+2 to get a S0C1. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Binyamin Dissen Sent: Friday, February 10, 2012 6:31 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: VarIabLe DD names in VSAM On Fri, 10 Feb 2012 22:06:12 +1100 Shane G ibm-m...@tpg.com.au wrote: :On Fri, Feb 10th, 2012 at 9:37 PM, Sharuff Morsa3 wrote: : Would anyone want to share good/bad comments they've seen ? :This code is never entered :Usually in recovery/error processing code. What I do is force an 0C6 in such cases. Leaves everything intact for debugging. -- Binyamin Dissenbdis...@dissensoftware.com http://www.dissensoftware.com Director, Dissen Software, Bar Grill - Israel Should you use the mailblocks package and expect a response from me, you should preauthorize the dissensoftware.com domain. I very rarely bother responding to challenge/response systems, especially those from irresponsible companies. -- Kind regards, -Steve Comstock The Trainer's Friend, Inc. 303-355-2752 http://www.trainersfriend.com * To get a good Return on your Investment, first make an investment! + Training your people is an excellent investment * Try our tool for calculating your Return On Investment for training dollars at http://www.trainersfriend.com/ROI/roi.html
Re: VarIabLe DD names in VSAM
We have of course been here before. The idea that a desired USER ABEND is best achieved by triggering a SYSTEM ABEND that will be minimally confusing, highly unlikely to be confused with the corresponding real SYSTEM ABEND, does not seem to want to die. Why try to trick the system into issuing an ABEND when you can do it yourself? USER ABENDS are immediately available by coding an ABEND macro instruction. They specify a [USER] completion code; and they may, optionally but desirably, specify a fullword user code too. This whole discussion of the relative merits of these triggering mechanisms is thus otiose at best. The only gotcha that can arise in connection with such an ABEND macro instruction is that one issued in AR mode must be preceded by a | SYSTATE ASCENV=AR macro instruction, but surely those of you who are writing AR-mode code can cope with this difficulty; and those of you who cannot should not be doing it. -- John Gilmore, Ashland, MA 01721 - USA
Re: VarIabLe DD names in VSAM
On Mon, 13 Feb 2012 06:52:23 -0700 Steve Comstock st...@trainersfriend.com wrote: :On 2/13/2012 3:49 AM, Thomas Berg wrote: : Why not code: DC X'00' ? : (Just a curious amateur in asm) :Well, the following instruction will be on an :odd boundary, for one. Not unless there is some weird assembler option that allows that. I do not think NOALIGN will do that. On the other hand, following it with LABELEQU * will cause LABEL to be on an odd boundary. But branch instructions referring to it should get assembly errors as well. -- Binyamin Dissen bdis...@dissensoftware.com http://www.dissensoftware.com Director, Dissen Software, Bar Grill - Israel Should you use the mailblocks package and expect a response from me, you should preauthorize the dissensoftware.com domain. I very rarely bother responding to challenge/response systems, especially those from irresponsible companies.
Re: SV: VarIabLe DD names in VSAM
On Feb 13, 2012, at 06:52, Steve Comstock wrote: On 2/13/2012 3:49 AM, Thomas Berg wrote: Why not code: DC X'00' ? (Just a curious amateur in asm) Well, the following instruction will be on an odd boundary, ... Is this even true if the programmer uses PARM=NOALIGN? But this is sophistry; see John G.'s wise followup. -- gil
Re: VarIabLe DD names in VSAM
On Mon, 13 Feb 2012 09:05:03 -0500 John Gilmore johnwgilmore0...@gmail.com wrote: :We have of course been here before. :The idea that a desired USER ABEND is best achieved by triggering a :SYSTEM ABEND that will be minimally confusing, highly unlikely to be :confused with the corresponding real SYSTEM ABEND, does not seem to :want to die. Because it is quite useful. :Why try to trick the system into issuing an ABEND when you can do it yourself? :USER ABENDS are immediately available by coding an ABEND macro :instruction. They specify a [USER] completion code; and they may, :optionally but desirably, specify a fullword user code too. All of which alter the CC, and R15-R1. User abends are quite useful for known issues - missing DD statement, missing module, insufficient authority, etc.. But if the code gets a completely unexpected result there is a need to figure out how to save the environment before issuing the abend so that the problem can be diagnosed. But where and how should this be saved? :This whole discussion of the relative merits of these triggering :mechanisms is thus otiose at best. The only gotcha that can arise in :connection with such an ABEND macro instruction is that one issued in :AR mode must be preceded by a :| SYSTATE ASCENV=AR :macro instruction, but surely those of you who are writing AR-mode :code can cope with this difficulty; and those of you who cannot should :not be doing it. Not all issues can be placed into one box. The programmer should have a big enough imagination to consider other options. -- Binyamin Dissen bdis...@dissensoftware.com http://www.dissensoftware.com Director, Dissen Software, Bar Grill - Israel Should you use the mailblocks package and expect a response from me, you should preauthorize the dissensoftware.com domain. I very rarely bother responding to challenge/response systems, especially those from irresponsible companies.
Re: VarIabLe DD names in VSAM
Binyamin is talking nonsense. A USER ABEND has the same DUMP options available to it that are available to any other ABEND. The notion that the default options supplied for, say, a judiciously chosen SYSTEM OCx ABEND can somehow be better than those chosen in a considered way for a USER ABEND is not just untenable; it is not even intellectually respectable. The search for a SYSTEM ABEND facility the misuse of which will be minimally deceptive is misconceived. The set of facilities available via ABEND is globally invariant. Nothing can be done by faking an OC1 ABEND that cannot be done by writing one's own ABEND macro instruction. In the first case one is constrained by the system's, i.e., someone else's, defaults; in the second one can make one's own choices. Analogous facilities usable to produce user ABENDs without trickery are also available in COBOL, C/C++, and PL/I. On 2/13/12, Binyamin Dissen bdis...@dissensoftware.com wrote: On Mon, 13 Feb 2012 09:05:03 -0500 John Gilmore johnwgilmore0...@gmail.com wrote: :We have of course been here before. :The idea that a desired USER ABEND is best achieved by triggering a :SYSTEM ABEND that will be minimally confusing, highly unlikely to be :confused with the corresponding real SYSTEM ABEND, does not seem to :want to die. Because it is quite useful. :Why try to trick the system into issuing an ABEND when you can do it yourself? :USER ABENDS are immediately available by coding an ABEND macro :instruction. They specify a [USER] completion code; and they may, :optionally but desirably, specify a fullword user code too. All of which alter the CC, and R15-R1. User abends are quite useful for known issues - missing DD statement, missing module, insufficient authority, etc.. But if the code gets a completely unexpected result there is a need to figure out how to save the environment before issuing the abend so that the problem can be diagnosed. But where and how should this be saved? :This whole discussion of the relative merits of these triggering :mechanisms is thus otiose at best. The only gotcha that can arise in :connection with such an ABEND macro instruction is that one issued in :AR mode must be preceded by a :| SYSTATE ASCENV=AR :macro instruction, but surely those of you who are writing AR-mode :code can cope with this difficulty; and those of you who cannot should :not be doing it. Not all issues can be placed into one box. The programmer should have a big enough imagination to consider other options. -- Binyamin Dissen bdis...@dissensoftware.com http://www.dissensoftware.com Director, Dissen Software, Bar Grill - Israel Should you use the mailblocks package and expect a response from me, you should preauthorize the dissensoftware.com domain. I very rarely bother responding to challenge/response systems, especially those from irresponsible companies. -- John Gilmore, Ashland, MA 01721 - USA
Re: VarIabLe DD names in VSAM
Personally, I do the S0C1 for one reason alone: for debugging purposes. It is just simpler to do than coding up a good ABEND macro instruction. I'm not say this is for production use of reporting an error to an end user. I do use the ABEND and/or DUMP macros for that. But for a what the bleeping is going on when I get to this point in my code, I want a dump, then a nice S0C1 works well for me. I don't have z/XDC or some other high quality debugging tool. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of John Gilmore Sent: Monday, February 13, 2012 9:01 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: VarIabLe DD names in VSAM Binyamin is talking nonsense. A USER ABEND has the same DUMP options available to it that are available to any other ABEND. The notion that the default options supplied for, say, a judiciously chosen SYSTEM OCx ABEND can somehow be better than those chosen in a considered way for a USER ABEND is not just untenable; it is not even intellectually respectable. The search for a SYSTEM ABEND facility the misuse of which will be minimally deceptive is misconceived. The set of facilities available via ABEND is globally invariant. Nothing can be done by faking an OC1 ABEND that cannot be done by writing one's own ABEND macro instruction. In the first case one is constrained by the system's, i.e., someone else's, defaults; in the second one can make one's own choices. Analogous facilities usable to produce user ABENDs without trickery are also available in COBOL, C/C++, and PL/I. On 2/13/12, Binyamin Dissen bdis...@dissensoftware.com wrote: On Mon, 13 Feb 2012 09:05:03 -0500 John Gilmore johnwgilmore0...@gmail.com wrote: :We have of course been here before. :The idea that a desired USER ABEND is best achieved by triggering a :SYSTEM ABEND that will be minimally confusing, highly unlikely to be :confused with the corresponding real SYSTEM ABEND, does not seem to :want to die. Because it is quite useful. :Why try to trick the system into issuing an ABEND when you can do it yourself? :USER ABENDS are immediately available by coding an ABEND macro :instruction. They specify a [USER] completion code; and they may, :optionally but desirably, specify a fullword user code too. All of which alter the CC, and R15-R1. User abends are quite useful for known issues - missing DD statement, missing module, insufficient authority, etc.. But if the code gets a completely unexpected result there is a need to figure out how to save the environment before issuing the abend so that the problem can be diagnosed. But where and how should this be saved? :This whole discussion of the relative merits of these triggering :mechanisms is thus otiose at best. The only gotcha that can arise in :connection with such an ABEND macro instruction is that one issued in :AR mode must be preceded by a :| SYSTATE ASCENV=AR :macro instruction, but surely those of you who are writing AR-mode :code can cope with this difficulty; and those of you who cannot should :not be doing it. Not all issues can be placed into one box. The programmer should have a big enough imagination to consider other options. -- Binyamin Dissen bdis...@dissensoftware.com http://www.dissensoftware.com Director, Dissen Software, Bar Grill - Israel Should you use the mailblocks package and expect a response from me, you should preauthorize the dissensoftware.com domain. I very rarely bother responding to challenge/response systems, especially those from irresponsible companies. -- John Gilmore, Ashland, MA 01721 - USA
Re: VarIabLe DD names in VSAM
Binyamin and I see the world differently. I judge that he is talking nonsense, and he judges that my arguments are irelevant. So be it. On 2/13/12, McKown, John john.mck...@healthmarkets.com wrote: Personally, I do the S0C1 for one reason alone: for debugging purposes. It is just simpler to do than coding up a good ABEND macro instruction. I'm not say this is for production use of reporting an error to an end user. I do use the ABEND and/or DUMP macros for that. But for a what the bleeping is going on when I get to this point in my code, I want a dump, then a nice S0C1 works well for me. I don't have z/XDC or some other high quality debugging tool. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of John Gilmore Sent: Monday, February 13, 2012 9:01 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: VarIabLe DD names in VSAM Binyamin is talking nonsense. A USER ABEND has the same DUMP options available to it that are available to any other ABEND. The notion that the default options supplied for, say, a judiciously chosen SYSTEM OCx ABEND can somehow be better than those chosen in a considered way for a USER ABEND is not just untenable; it is not even intellectually respectable. The search for a SYSTEM ABEND facility the misuse of which will be minimally deceptive is misconceived. The set of facilities available via ABEND is globally invariant. Nothing can be done by faking an OC1 ABEND that cannot be done by writing one's own ABEND macro instruction. In the first case one is constrained by the system's, i.e., someone else's, defaults; in the second one can make one's own choices. Analogous facilities usable to produce user ABENDs without trickery are also available in COBOL, C/C++, and PL/I. On 2/13/12, Binyamin Dissen bdis...@dissensoftware.com wrote: On Mon, 13 Feb 2012 09:05:03 -0500 John Gilmore johnwgilmore0...@gmail.com wrote: :We have of course been here before. :The idea that a desired USER ABEND is best achieved by triggering a :SYSTEM ABEND that will be minimally confusing, highly unlikely to be :confused with the corresponding real SYSTEM ABEND, does not seem to :want to die. Because it is quite useful. :Why try to trick the system into issuing an ABEND when you can do it yourself? :USER ABENDS are immediately available by coding an ABEND macro :instruction. They specify a [USER] completion code; and they may, :optionally but desirably, specify a fullword user code too. All of which alter the CC, and R15-R1. User abends are quite useful for known issues - missing DD statement, missing module, insufficient authority, etc.. But if the code gets a completely unexpected result there is a need to figure out how to save the environment before issuing the abend so that the problem can be diagnosed. But where and how should this be saved? :This whole discussion of the relative merits of these triggering :mechanisms is thus otiose at best. The only gotcha that can arise in :connection with such an ABEND macro instruction is that one issued in :AR mode must be preceded by a :| SYSTATE ASCENV=AR :macro instruction, but surely those of you who are writing AR-mode :code can cope with this difficulty; and those of you who cannot should :not be doing it. Not all issues can be placed into one box. The programmer should have a big enough imagination to consider other options. -- Binyamin Dissen bdis...@dissensoftware.com http://www.dissensoftware.com Director, Dissen Software, Bar Grill - Israel Should you use the mailblocks package and expect a response from me, you should preauthorize the dissensoftware.com domain. I very rarely bother responding to challenge/response systems, especially those from irresponsible companies. -- John Gilmore, Ashland, MA 01721 - USA -- John Gilmore, Ashland, MA 01721 - USA
Re: VarIabLe DD names in VSAM
More real world vs. Ivory Tower, but whatever. On Mon, 13 Feb 2012 11:11:04 -0500 John Gilmore johnwgilmore0...@gmail.com wrote: :Binyamin and I see the world differently. I judge that he is talking :nonsense, and he judges that my arguments are irelevant. So be it. : :On 2/13/12, McKown, John john.mck...@healthmarkets.com wrote: : Personally, I do the S0C1 for one reason alone: for debugging purposes. It : is just simpler to do than coding up a good ABEND macro instruction. I'm not : say this is for production use of reporting an error to an end user. I do : use the ABEND and/or DUMP macros for that. But for a what the bleeping is : going on when I get to this point in my code, I want a dump, then a nice : S0C1 works well for me. I don't have z/XDC or some other high quality : debugging tool. : : -- : John McKown : Systems Engineer IV : IT : : Administrative Services Group : : HealthMarkets(r) : : 9151 Boulevard 26 * N. Richland Hills * TX 76010 : (817) 255-3225 phone * : john.mck...@healthmarkets.com * www.HealthMarkets.com : : Confidentiality Notice: This e-mail message may contain confidential or : proprietary information. If you are not the intended recipient, please : contact the sender by reply e-mail and destroy all copies of the original : message. HealthMarkets(r) is the brand name for products underwritten and : issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake : Life Insurance Company(r), Mid-West National Life Insurance Company of : TennesseeSM and The MEGA Life and Health Insurance Company.SM : : : : -Original Message- : From: IBM Mainframe Assembler List : [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of John Gilmore : Sent: Monday, February 13, 2012 9:01 AM : To: ASSEMBLER-LIST@LISTSERV.UGA.EDU : Subject: Re: VarIabLe DD names in VSAM : : Binyamin is talking nonsense. : : A USER ABEND has the same DUMP options available to it that are : available to any other ABEND. : : The notion that the default options supplied for, say, a judiciously : chosen SYSTEM OCx ABEND can somehow be better than those chosen in a : considered way for a USER ABEND is not just untenable; it is not even : intellectually respectable. : : The search for a SYSTEM ABEND facility the misuse of which will be : minimally deceptive is misconceived. : : The set of facilities available via ABEND is globally invariant. : Nothing can be done by faking an OC1 ABEND that cannot be done by : writing one's own ABEND macro instruction. In the first case one is : constrained by the system's, i.e., someone else's, defaults; in the : second one can make one's own choices. : : Analogous facilities usable to produce user ABENDs without trickery : are also available in COBOL, C/C++, and PL/I. : : : On 2/13/12, Binyamin Dissen bdis...@dissensoftware.com wrote: : On Mon, 13 Feb 2012 09:05:03 -0500 John Gilmore : johnwgilmore0...@gmail.com : wrote: : : :We have of course been here before. : : :The idea that a desired USER ABEND is best achieved by : triggering a : :SYSTEM ABEND that will be minimally confusing, highly : unlikely to be : :confused with the corresponding real SYSTEM ABEND, does : not seem to : :want to die. : : Because it is quite useful. : : :Why try to trick the system into issuing an ABEND when : you can do it : yourself? : : :USER ABENDS are immediately available by coding an ABEND macro : :instruction. They specify a [USER] completion code; and they may, : :optionally but desirably, specify a fullword user code too. : : All of which alter the CC, and R15-R1. : : User abends are quite useful for known issues - missing DD : statement, : missing : module, insufficient authority, etc.. But if the code gets : a completely : unexpected result there is a need to figure out how to save : the environment : before issuing the abend so that the problem can be : diagnosed. But where and : how should this be saved? : : :This whole discussion of the relative merits of these triggering : :mechanisms is thus otiose at best. The only gotcha that : can arise in : :connection with such an ABEND macro instruction is that : one issued in : :AR mode must be preceded by a : : :| SYSTATE ASCENV=AR : : :macro instruction, but surely those of you who are writing AR-mode : :code can cope with this difficulty; and those of you who : cannot should : :not be doing it. : : Not all issues can be placed into one box. The programmer : should have a big : enough imagination to consider other options. : : -- : Binyamin Dissen bdis...@dissensoftware.com : http://www.dissensoftware.com : : Director, Dissen Software, Bar Grill - Israel : : : Should you use the mailblocks package and expect a response from me, : you should preauthorize the dissensoftware.com domain. : : I very rarely bother responding to challenge/response systems, : especially those from irresponsible companies. : : : : -- : John Gilmore, Ashland, MA 01721 - USA : : : -- Binyamin
Re: VarIabLe DD names in VSAM
On 2/13/2012 10:53 AM, McKown, John wrote: Personally, I do the S0C1 for one reason alone: for debugging purposes. It is just simpler to do than coding up a good ABEND macro instruction. I'm not say this is for production use of reporting an error to an end user. I do use the ABEND and/or DUMP macros for that. But for a what the bleeping is going on when I get to this point in my code, I want a dump, then a nice S0C1 works well for me. I don't have z/XDC or some other high quality debugging tool. When I'm debugging a new or heavily revised program, I have a #TRAP subroutine to display PSW, registers, and variables. But for a quick and dirty approach, EX 0,* or B 2, B 4, B 6, are preferable in that I do not need to save R0 and R1 in storage that I then need to locate in a dump, as is the case for an ABEND macro or SVC. For production programs, I prefer to save the registers, if useful, issue one or more explanatory messages, and then issue a user abend. Gerhard Postpischil Bradford, VT
Re: VarIabLe DD names in VSAM
After describing his own debugging practices, Gerhard Postpischil writes: begin snippet For production programs, I prefer to save the registers, if useful, issue one or more explanatory messages, and then issue a user abend. /end snippet and this is enough. Debugging--as opposed to prior and subsequent systematic testing, which are not--is a highly personal matter. Debuggers are and should be free to use any technique they find effective; they should indeed be free, as I said here long ago, to consult a haruspex (plural haruspices) if they judge it helpful to do so (privately, of course, lest the animal-rights people target their colleagues too). -- John Gilmore, Ashland, MA 01721 - USA
Re: VarIabLe DD names in VSAM
Referring to Chris's comment -...extensively commented assembler programs ...- I'm all in favour of well commented code - I believe 'good comments' should be mandatory. But what is a 'good comment'? Who hasn't seen something like: MVCC89FLA,C60MGT move C60MGT to C89FLA or even (shock horror!) MVCC89FLA,C60MGT move C89FLA to C60MGT Is that a useful comment ? It does describe the instruction, but how useful is the comment ? Would anyone want to share good/bad comments they've seen ? Sharuff smo...@uk.ibm.com Sent from my laptop -- Date:Thu, 9 Feb 2012 11:01:21 +0100 From:Chris Mason chrisma...@belgacom.net Subject: Re: VarIabLe DD names in VSAM. Tony snip [1] I believe there are some in this list to whom this approach is some sort of heresy! (Actually it's probably this sort of mind-set that caused John actually to try to use the xxxCB macros!) My excuse is contained in a comment one of my managers made to the effect, he had never seen such extensively commented assembler programs and he was one of those managers who really used to be happier as a technician. He was responsible for installing - in the SE sense of the word - one of the first 360/67s. ... snips - Chris Mason End of ASSEMBLER-LIST Digest - 8 Feb 2012 to 9 Feb 2012 (#2012-30) ** Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
Re: VarIabLe DD names in VSAM
On Fri, Feb 10th, 2012 at 9:37 PM, Sharuff Morsa3 wrote: Would anyone want to share good/bad comments they've seen ? This code is never entered Usually in recovery/error processing code. wtf ???. Shane ...
code comments (Was: VarIabLe DD names in VSAM)
Code that said: Mike told me this condition could never happen. If this abend ever happens, call John at xxx-xxx- and tell him that Mike owes him $100. Tony Thigpen -Original Message - From: Shane G Sent: 02/10/2012 06:06 AM On Fri, Feb 10th, 2012 at 9:37 PM, Sharuff Morsa3 wrote: Would anyone want to share good/bad comments they've seen ? This code is never entered Usually in recovery/error processing code. wtf ???. Shane ...
Re: VarIabLe DD names in VSAM
A while back in IBM we had rather strict commenting rules...at least compared to what I have seen outside of IBM. First of all, we had two types of comments: A block comment that was not attached to any particular statement and was used as an introductory paragraph to a block of code that followed. The second was a 'remark' which always applied to a specific statement. The rules were simple. If a statement caused the generation of code, it had to have a remark. All data declarations whether a constant, or in a DSECT always required a remark. We also had code inspections by a team of code reviewers and comments were reviewed along with the code to ensure that a block comments matched the subsequent code and that remarks were clear and reflected what the code was accomplishing. Your example of a remark would be rejected. A remark had to reflect the meaning, purpose, or context of what the code was doing. The reason for all of this was that were invariably many other people that needed to look at the code. Defects were almost always supported by another team and future enhancements to a program were many times performed by the next developer go own the program. The comments and remarks were invaluable to these folks in helping to understand the code so changes required could be made efficiently and effective without introducing new bugs. Even if the original developer had to make changes to a program six months after developing it and forgot the details of the logic, the comments would serve as a reminder of what was going on, made for a quickly getting up to speed so the changes could be made. I know when I had to make changes to a program that poorly commented or had no comments, it was a nightmare trying to figure it out. I even had to go as far as adding my own comments to keep to logic of the program clear. I wasted hundreds of man hours doing this. In the end, it had actually cost the company more money to support uncommented code than had the comments been placed there to begin with. I think that people who don't comment their code are selfish, have no regard for subsequent people that need to read and understand the code, and don't care or understand the big picture and what it means to their employer. That's just my opinion. John -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Sharuff Morsa3 Sent: Friday, February 10, 2012 5:38 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: VarIabLe DD names in VSAM Referring to Chris's comment -...extensively commented assembler programs ...- I'm all in favour of well commented code - I believe 'good comments' should be mandatory. But what is a 'good comment'? Who hasn't seen something like: MVCC89FLA,C60MGT move C60MGT to C89FLA or even (shock horror!) MVCC89FLA,C60MGT move C89FLA to C60MGT Is that a useful comment ? It does describe the instruction, but how useful is the comment ? Would anyone want to share good/bad comments they've seen ? Sharuff smo...@uk.ibm.com Sent from my laptop -- Date:Thu, 9 Feb 2012 11:01:21 +0100 From:Chris Mason chrisma...@belgacom.net Subject: Re: VarIabLe DD names in VSAM. Tony snip [1] I believe there are some in this list to whom this approach is some sort of heresy! (Actually it's probably this sort of mind-set that caused John actually to try to use the xxxCB macros!) My excuse is contained in a comment one of my managers made to the effect, he had never seen such extensively commented assembler programs and he was one of those managers who really used to be happier as a technician. He was responsible for installing - in the SE sense of the word - one of the first 360/67s. ... snips - Chris Mason End of ASSEMBLER-LIST Digest - 8 Feb 2012 to 9 Feb 2012 (#2012-30) ** Unless stated otherwise above: IBM United Kingdom Limited - Registered in England and Wales with number 741598. Registered office: PO Box 41, North Harbour, Portsmouth, Hampshire PO6 3AU
Re: code comments (Was: VarIabLe DD names in VSAM)
LOL --Original Message-- From: Tony Thigpen Sender: IBM Mainframe Assembler List To: ASSEMBLER-LIST@LISTSERV.UGA.EDU ReplyTo: IBM Mainframe Assembler List Subject: code comments (Was: VarIabLe DD names in VSAM) Sent: Feb 10, 2012 3:31 AM Code that said: Mike told me this condition could never happen. If this abend ever happens, call John at xxx-xxx- and tell him that Mike owes him $100. Tony Thigpen -Original Message - From: Shane G Sent: 02/10/2012 06:06 AM On Fri, Feb 10th, 2012 at 9:37 PM, Sharuff Morsa3 wrote: Would anyone want to share good/bad comments they've seen ? This code is never entered Usually in recovery/error processing code. wtf ???. Shane ... Sent from my Verizon Wireless BlackBerry
Re: VarIabLe DD names in VSAM
S0c3 is very nice for a deliberate abend, since it's extremely rare in its accidental form; so my replacement is EXRL 0,*. sas On 2/10/2012 8:10, McKown, John wrote: I used to do EX *,0 to get an S0C3. I now do j *+2 to get a S0C1. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Binyamin Dissen Sent: Friday, February 10, 2012 6:31 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: VarIabLe DD names in VSAM On Fri, 10 Feb 2012 22:06:12 +1100 Shane G ibm-m...@tpg.com.au wrote: :On Fri, Feb 10th, 2012 at 9:37 PM, Sharuff Morsa3 wrote: : Would anyone want to share good/bad comments they've seen ? :This code is never entered :Usually in recovery/error processing code. What I do is force an 0C6 in such cases. Leaves everything intact for debugging. -- Binyamin Dissenbdis...@dissensoftware.com http://www.dissensoftware.com Director, Dissen Software, Bar Grill - Israel Should you use the mailblocks package and expect a response from me, you should preauthorize the dissensoftware.com domain. I very rarely bother responding to challenge/response systems, especially those from irresponsible companies.
Re: VarIabLe DD names in VSAM
S0c3 is very nice for a deliberate abend, since it's extremely rare in its accidental form; so my replacement is EXRL 0,* But what a surprise when you've shipped your code to all your customers and you find one who does not have the execute-extensions facility installed. Your S0C3 magically becomes a S0C1. My feeling is that if I can't find anything better to do than force an abend that I'm not writing good code. How about error messages with return and reason codes so when the customer calls your help desk saying he got a S0C3/S0C1 that you have some idea what the problem is? Oh, and invariably the customer will have deleted the dump if you took one. This all said because should not occurs WILL occur at some time and some place. Andy -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Steve Smith Sent: Friday, February 10, 2012 8:54 PM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: VarIabLe DD names in VSAM S0c3 is very nice for a deliberate abend, since it's extremely rare in its accidental form; so my replacement is EXRL 0,*. sas On 2/10/2012 8:10, McKown, John wrote: I used to do EX *,0 to get an S0C3. I now do j *+2 to get a S0C1. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Binyamin Dissen Sent: Friday, February 10, 2012 6:31 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: VarIabLe DD names in VSAM On Fri, 10 Feb 2012 22:06:12 +1100 Shane G ibm-m...@tpg.com.au wrote: :On Fri, Feb 10th, 2012 at 9:37 PM, Sharuff Morsa3 wrote: : Would anyone want to share good/bad comments they've seen ? :This code is never entered :Usually in recovery/error processing code. What I do is force an 0C6 in such cases. Leaves everything intact for debugging. -- Binyamin Dissenbdis...@dissensoftware.com http://www.dissensoftware.com Director, Dissen Software, Bar Grill - Israel Should you use the mailblocks package and expect a response from me, you should preauthorize the dissensoftware.com domain. I very rarely bother responding to challenge/response systems, especially those from irresponsible companies.
Re: VarIabLe DD names in VSAM
On 10 February 2012 20:54, Steve Smith sasd...@gmail.com wrote: S0c3 is very nice for a deliberate abend, since it's extremely rare in its accidental form; so my replacement is EXRL 0,*. A Square Root exception is also only-deliberate in most non scientific programs, and shows up on z/OS as a 0E0-1D abend. It's easy to create in any number of ways, e.g: LE0,*+4 SQER 0,0 Not that I recommend actually using any of these oh-so-cute but appalling techniques, you understand... Tony H.
Re: VarIabLe DD names in VSAM
This all said because should not occurs WILL occur at some time and some place. Apropos of nothing, I have to repeat my all time favorite abend message. It said Shut her down Clancy; She's a pumpin' mud. Andy -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Andy Coburn Sent: Friday, February 10, 2012 9:13 PM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: VarIabLe DD names in VSAM S0c3 is very nice for a deliberate abend, since it's extremely rare in its accidental form; so my replacement is EXRL 0,* But what a surprise when you've shipped your code to all your customers and you find one who does not have the execute-extensions facility installed. Your S0C3 magically becomes a S0C1. My feeling is that if I can't find anything better to do than force an abend that I'm not writing good code. How about error messages with return and reason codes so when the customer calls your help desk saying he got a S0C3/S0C1 that you have some idea what the problem is? Oh, and invariably the customer will have deleted the dump if you took one. This all said because should not occurs WILL occur at some time and some place. Andy -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Steve Smith Sent: Friday, February 10, 2012 8:54 PM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: VarIabLe DD names in VSAM S0c3 is very nice for a deliberate abend, since it's extremely rare in its accidental form; so my replacement is EXRL 0,*. sas On 2/10/2012 8:10, McKown, John wrote: I used to do EX *,0 to get an S0C3. I now do j *+2 to get a S0C1. -- John McKown Systems Engineer IV IT Administrative Services Group HealthMarkets(r) 9151 Boulevard 26 * N. Richland Hills * TX 76010 (817) 255-3225 phone * john.mck...@healthmarkets.com * www.HealthMarkets.com Confidentiality Notice: This e-mail message may contain confidential or proprietary information. If you are not the intended recipient, please contact the sender by reply e-mail and destroy all copies of the original message. HealthMarkets(r) is the brand name for products underwritten and issued by the insurance subsidiaries of HealthMarkets, Inc. -The Chesapeake Life Insurance Company(r), Mid-West National Life Insurance Company of TennesseeSM and The MEGA Life and Health Insurance Company.SM -Original Message- From: IBM Mainframe Assembler List [mailto:ASSEMBLER-LIST@LISTSERV.UGA.EDU] On Behalf Of Binyamin Dissen Sent: Friday, February 10, 2012 6:31 AM To: ASSEMBLER-LIST@LISTSERV.UGA.EDU Subject: Re: VarIabLe DD names in VSAM On Fri, 10 Feb 2012 22:06:12 +1100 Shane G ibm-m...@tpg.com.au wrote: :On Fri, Feb 10th, 2012 at 9:37 PM, Sharuff Morsa3 wrote: : Would anyone want to share good/bad comments they've seen ? :This code is never entered :Usually in recovery/error processing code. What I do is force an 0C6 in such cases. Leaves everything intact for debugging. -- Binyamin Dissenbdis...@dissensoftware.com http://www.dissensoftware.com Director, Dissen Software, Bar Grill - Israel Should you use the mailblocks package and expect a response from me, you should preauthorize the dissensoftware.com domain. I very rarely bother responding to challenge/response systems, especially those from irresponsible companies.
VarIabLe DD names in VSAM
Use IFGACB macro to map the fields in the ACB. Establish addressability to the generated ACB area and plug the DDNAME into the ACB ddname field. The other macro of interest is IFGRPL for manipulating the RPL. Ken Kripke kkri...@mindspring.com
VarIabLe DD names in VSAM.
I am writing a subroutine which receives a DDNAME as an argument to use in a dynamically create ACB. I need to put that input DDNAME into an ACB before opening it. I cannot find anyway to specify the DDNAME on GENACB or MODCB that will accept anything other than a name that is a character string. There must be a way to do it but I haven't found it. John
Re: VarIabLe DD names in VSAM.
On 2/7/2012 3:25 PM, John Gilmore wrote: I am missing something here. What form would you like a DDNAME value to take? Given that the DDNAME value is a character string, I suspect the OP would like the macro to take an address of a character string as an argument. On 2/7/12, Bodoh John Robertjohn.robert.bo...@irs.gov wrote: I am writing a subroutine which receives a DDNAME as an argument to use in a dynamically create ACB. I need to put that input DDNAME into an ACB before opening it. I cannot find anyway to specify the DDNAME on GENACB or MODCB that will accept anything other than a name that is a character string. There must be a way to do it but I haven't found it. -- gil
Re: VarIabLe DD names in VSAM.
On Tue, 7 Feb 2012 22:17:00 +, Bodoh John Robert wrote: I am writing a subroutine which receives a DDNAME as an argument to use in a dynamically create ACB. I need to put that input DDNAME into an ACB before opening it. I cannot find anyway to specify the DDNAME on GENACB or MODCB that will accept anything other than a name that is a character string. There must be a way to do it but I haven't found it. GENCB BLK=ACB,DDNAME=(*,VARNAME) VARNAME DCCL8'MYDDNAME' See Subparameters with GENCB, MODCB, SHOWCB, and TESTCB in Chapter 2 of z/OS DFSMS Macro Instructions for Data Sets SC26-7408. IIRC it works in VSE too. David