|
Buck,
what is that GOTO :)))))? Oh, wait, rings a bell, Commodore C-64 and these
high school days, BASIC & puberty.
Seriously, this is a good experimental example, but I think IBM should
give us something better to trick a cycle in the real world.
Best regards,
Vanay Jovic,
Canada
On Tue, 22 Dec 1998, Buck Calabro/commsoft wrote:
>
>
> >>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
> +---
>
+---
| 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 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.