|
Yes, the original would continue to encounter the error condition and continue to loop. There isn't much more you can do without getting specific to the application. I had it leave after setting the result to 0 because , if it were a black box it should do just that, get a result and leave. Its to bad you can't just force the program to pick up where it left off. I guess you could if you monitored the status of ERRTYP for a non blank value and then call you own error handler (not *PSSR) Buck Calabro wrote: > > When this code encounters the divide by zero error, *PSSR sets Result to 0 > then returns to *DETC. Since ErrFlag is raised, it executes nothing and > exits. > > Appropriate bits of changed code: > > > *main() > > C if not ErrFlag > > C exsr RTNADD > > C exsr RTNSUB > > C exsr RTNMUL > > C exsr RTNDIV > > C Result dsply > > C endif > > > > C Eval *InLR=*On > > C return > > > > CSR RTNDIV begsr > > C Eval Result=PI/ZERO > > C endsr > > > > C *PSSR BegSR > > C eval ErrFlag = *on > > C ErrTyp cat CPFNUM:0 ErrorID > > > > C Select > > C when ErrorId = 'MCH1211' > > C eval Result = 0 > > C EndSl > > > > C EndSR ErrorAct > > > The original code ID'd itself, encountered the divide by zero and tripped > the PSSR, which set the error flag then returned to the top. The code at > the top then decoded which routine failed and continued at the next "proper" > code fragment after the error. > > Appropriate bits of original: > * Mainline. > * *DETC Tag > C If ErrFlag='Y' > C Eval ErrFlag='N' > C Select > C When CurrRoutine = RTNDIV > C Eval Result=0 > C GoTo PastDiv > > * Program processing occurs here > C Div Tag > C Eval CurrRoutine=RTNDIV > C Eval Result=PI/ZERO > C PastDiv Tag > > C *PSSR BegSR > C Eval ErrFlag='Y' > C EndSR ErrAction > > Buck > +--- > | This is the RPG/400 Mailing List! > | To submit a new message, send your mail to RPG400-L@midrange.com. > | To subscribe to this list send email to RPG400-L-SUB@midrange.com. > | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com. > | Questions should be directed to the list owner/operator: david@midrange.com > +--- -- L. S. Russell Programmer/Analyst Datrek Professional Bags, Inc. 2413 Industrial Drive Springfield, TN. 37172 mailto:leslier@datrek.com http://www.datrek.com -- +--- | This is the RPG/400 Mailing List! | To submit a new message, send your mail to RPG400-L@midrange.com. | To subscribe to this list send email to RPG400-L-SUB@midrange.com. | To unsubscribe from this list send email to RPG400-L-UNSUB@midrange.com. | Questions should be directed to the list owner/operator: david@midrange.com +---
As an Amazon Associate we earn from qualifying purchases.
This mailing list archive is Copyright 1997-2025 by midrange.com and David Gibbs as a compilation work. Use of the archive is restricted to research of a business or technical nature. Any other uses are prohibited. Full details are available on our policy page. If you have questions about this, please contact [javascript protected email address].
Operating expenses for this site are earned using the Amazon Associate program and Google Adsense.