× 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: Overflow values
  • From: Buck Calabro/commsoft<mcalabro@xxxxxxxxxxxx>
  • Date: Tue, 22 Dec 1998 11:24:44 -0500


>>While using EVAL for computing numbers, if the 
>>result of computing gets larger than the result 
>>field definition, the throws up an error.  Is 
>>there any way to get around this?  Like say 
>>truncate (as it does in Move) some EVAL(T)?? :) 

No.  EVAL will always behave like this, which is 
probably a good thing, otherwise you are losing 
precision in your calculated values and don't
know it!  If you really want to lose data, you'll
have to stick with ADD/SUB/MULT/DIV.

>>If I use *PSSR, the program goes to the top of the line 
>>and I loose all the work that is done till then.

You can set up calculations in your *PSSR that check for
the type of error and set a flag.  When you ENDSR *DETC,
you can check the flag at the top of the detail calcs
and start processing at the appropriate place. 

Here's a poor example of what I mean:

H Debug 
 
 * Sample code to demonstrate use of *PSSR directing 
 * traffic after an error occurs 
 
 * Global declarations 
D ErrFlag         S              1    Inz('N') 
D ErrAction       S              6    Inz('*DETC ') 
D CurrRoutine     S             10    Inz 
 
 * Test numbers 
D Positive        S              5S 0 Inz(15) 
D Negative        S              5S 0 Inz(-15) 
D Zero            S              5S 0 Inz(0) 
D PI              S             10S 9 Inz(3.141592654) 
D Result          S              3S 0 Inz(0) 
 
 * Routine names describe where we are in the program 
 * When an error occurs, we can steer ourselves 
 * back to the appropriate place in the program 
D RtnAdd          S             10    Inz('Add       ') 
D RtnSub          S             10    Inz('Sub       ') 
D RtnMul          S             10    Inz('Mul       ') 
D RtnDiv          S             10    Inz('Div       ') 
 
D                SDS 
D  PGNAME           *PROC 
D  STATUS           *STATUS 
D  TMNAME               244    253 
D  USRNAM               254    263 
D  JOBNBR               264    269  0 
 
 * Mainline.  This is just simple code to demonstrate 
 * how we can direct traffic after an error occurs 
 * The *PSSR traps the error, gets control and then 
 * returns to this point in the program. 
 *    *DETC         Tag 
 * Did an error occur?  If so, recover! 
 * For example's sake, only test/recover from an error 
 * in the division routine 
 
C                   If        ErrFlag='Y' 
C                   Eval      ErrFlag='N' 
C                   Select 
C                   When      CurrRoutine = RtnAdd 
C                   GoTo      Add 
C                   When      CurrRoutine = RtnSub 
C                   GoTo      Sub 
C                   When      CurrRoutine = RtnMul 
C                   GoTo      Mul 
C                   When      CurrRoutine = RtnDiv 
C                   Eval      Result=0 
C                   GoTo      PastDiv 
C                   Other 
C                   Dump 
C                   EndSl 
C                   EndIf 
 
C     Add           Tag 
C                   Eval      CurrRoutine=RtnAdd 
C                   Eval      Result=Zero+1 
 
C     Sub           Tag 
C                   Eval      CurrRoutine=RtnSub 
C                   Eval      Result=Zero-1 
 
C     Mul           Tag 
C                   Eval      CurrRoutine=RtnMul 
C                   Eval      Result=Zero*1 
 
C     Div           Tag 
C                   Eval      CurrRoutine=RtnDiv 
C                   Eval      Result=PI/Zero 
C     PastDiv       Tag 
 
C                   Eval      *InLR=*On 
 
 * An error has occurred 
 * Set the "Error is happening" flag and return to the mainline
C     *PSSR         BegSR 
C                   Eval      ErrFlag='Y' 
C                   EndSR     ErrAction 

Buck Calabro
CommSoft, Albany, NY
mailto:mcalabro@commsoft.net






+---
| This is the Midrange System Mailing List!
| To submit a new message, send your mail to MIDRANGE-L@midrange.com.
| To subscribe to this list send email to MIDRANGE-L-SUB@midrange.com.
| To unsubscribe from this list send email to MIDRANGE-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 ...

Follow-Ups:

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.