Couple questions.... What do you mean that a recursive PERFORM is forbidden? While I can't think of a good use for it, and when I tried it I got into a loop, it doesn't cause a compile or run-time error. Here's what I tried:
identification division. program-id. recur. data division. working-storage section. 77 x pic 9(4) comp value zero. procedure division. perform para goback. para. add 1 to x display x if x < 3 display 'before' perform para display 'after' else display 'no' end-if display 'end' . 0001 before 0002 before 0003 no end after end after end after end ...and on and on and on... So while it doesn't "work", neither is it apparently disallowed. In any case, I wonder if it would be useful to open a PMR to see if they have any suggestions on how to debug your issue. It's an interesting issue, and in my 15 years of COBOL programming I don't think I've ever had a case where I had to debug such a thing. Lucky perhaps? Can this issue not be reproduced in a test/dev region? I'm surprised it's up to a sysprog to figure out this issue. I don't think my sysprogs would touch COBOL with a ten foot pole. :-) They'd shoot us if we (appl dev) gave this to them to resolve. And rightly so. Frank -- Frank Swarbrick Applications Architect - Mainframe Applications Development FirstBank Data Corporation - Lakewood, CO USA P: 303-235-1403 On 4/25/2011 at 1:49 PM, in message <a6b9336cdb62bb46b9f8708e686a7ea005d9901...@nrhmms8p02.uicnrh.dom>, "McKown, John" <john.mck...@healthmarkets.com> wrote: > It is possible to enter a paragraph in either way: You can PERFORM a section, > paragraph, or series of paragraphs (A THRU B). It is possible, but unlikely > to have: > > A. > ...code > PERFORM B THRU D. > PERFORM C. > ... > GOBACK. > B. code > ... more code in B > C. code > ... more code in C > D. code > ... more code in D > E. > > Now, assume that some statement in C causes an abend. Was it from the first > PERFORM, where it just got "dropped into" on the way from B to D? Or was it > the second PERFORM where it was directly PERFORM'd from paragraph A? I will > admit that this code sequence is unlikely. But I don't really care. This is > for my learning and whining pleasure <grin>. We don't having anything this > unusual. What we have is more like one paragraph which reads a file. That is > all it does. But it is PERFORMed from 6 different paragraphs. Which are > themselves PERFORMed from more than one other paragraph each. We get a loop > (in CICS to be exact) and I cancel the transaction. I am almost always in > that "read" paragraph. With no idea where I came from, so doing diagnostics > is difficult. And putting in "tracing" entries in production CICS code when > we are "screamed" at about the "inordinate cost to run the z" is just not > politically acceptable. > > -- > 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 Discussion List >> [mailto:IBM-MAIN@bama.ua.edu] On Behalf Of Tobias Schmid >> Sent: Monday, April 25, 2011 2:32 PM >> To: IBM-MAIN@bama.ua.edu >> Subject: Re: Recursive PERFORM in COBOL >> >> > What triggered this is a desire on my part to __EASILY__ >> detemine the >> > PERFORM sequence that got me to a particular paragraph. >> Right now, I >> > must find the "PERFORM return" slot for the paragraph in >> execution to >> > determine which paragraph the PERFORM verb is in. And then >> "loop" doing >> > the same. And I'm not sure how to determine if a paragraph >> was truly >> > PERFORM'ed as opposed to "dropped into" from the preceeding >> paragraph. >> > Some sort of "stack" would make this much simpler for me. >> >> >> I think the problem comes with the "dropped into". >> There should be no way, to "drop" into a paragraph - but if so, >> then there are goto's - where only performs should be. >> >> Or have I missunderstood something? >> >> Tobias Schmid >> >> ---------------------------------------------------------------------- >> 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 >>> The information contained in this electronic communication and any document attached hereto or transmitted herewith is confidential and intended for the exclusive use of the individual or entity named above. If the reader of this message is not the intended recipient or the employee or agent responsible for delivering it to the intended recipient, you are hereby notified that any examination, use, dissemination, distribution or copying of this communication or any part thereof is strictly prohibited. If you have received this communication in error, please immediately notify the sender by reply e-mail and destroy this communication. Thank you. ---------------------------------------------------------------------- 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