× The internal search function is temporarily non-functional. The current search engine is no longer viable and we are researching alternatives.
As a stop gap measure, we are using Google's custom search engine service.
If you know of an easy to use, open source, search engine ... please contact support@midrange.com.


  • Subject: Re: Open Source discussion on error handling was: RPGIII/RPG400 ERRORMONITORING
  • From: "L. S. Russell" <leslier@xxxxxxxxxx>
  • Date: Wed, 09 Feb 2000 07:32:11 -0600

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 thread ...

Replies:

Follow On AppleNews
Return to Archive home page | Return to MIDRANGE.COM home page

This mailing list archive is Copyright 1997-2024 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.