Focal Point
[SOLVED] branching on FOCERRNUM not working

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/8137075176

July 07, 2014, 10:32 AM
jodye
[SOLVED] branching on FOCERRNUM not working
Hi All

Simple thing ... trying to detect a focerrnum and branch to an error routine. Like a try ... catch.

But the branching is never run. Basically the fex stops completely when it encounters the error.

example below I am passing a bad date "A20140101" and getting the expected error

(FOC36355) INVALID TYPE OF ARGUMENT #1 FOR USER FUNCTION DATECVT

But My test never runs

-IF &FOCERRNUM NE 0 THEN GOTO DATE_ERROR;

So bottom line... how can I tell the fex to keep going when there is an error... I will handle it. I tried SET MESSAGE = OFF.

thx

Jodye

-SET &MYDATE='A20140101';
-SET &X= DATECVT(&MYDATE, 'I8YYMD', 'YYMD');
-IF &FOCERRNUM NE 0 THEN GOTO DATE_ERROR;
-RUN

-GOTO ALL_DONE;


-DATE_ERROR;
-TYPE BAD DATE

-ALL_DONE
-TYPE ALL DONE DATE IS &X

This message has been edited. Last edited by: <Kathryn Henning>,


WF 8.0.0.5M
July 07, 2014, 04:28 PM
<Kathryn Henning>
Hi Jodye,

Please try the following:

-* File aa.fex
-SET &ECHO=ALL;
-SET &MYDATE='A20140101';
-SET &ERR = CHKFMT(8, &MYDATE  , '99999999', 'I3');
-IF &ERR EQ 1 THEN GOTO DATE_ERROR;
-SET &X= DATECVT(&MYDATE, 'I8YYMD', 'YYMD');
-EXIT
-RUN
-DATE_ERROR
-TYPE DATE IS INVALID
-EXIT

Cheers!

Kathryn
July 07, 2014, 05:39 PM
Waz
Hi Jodye,

Keep in mind that some errors will stop processing of the code immediately.

This is one of them, this typically happens at a dialog manager level, and from my perspective, its usually at a function call.


Waz...

Prod:WebFOCUS 7.6.10/8.1.04Upgrade:WebFOCUS 8.2.07OS:LinuxOutputs:HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!

July 08, 2014, 12:54 PM
jodye
Thanks guys. Yes that is what I am trying to catch. Nothing should totally stop processing like that. No matter what the error is in a function call, I expect to be able to catch it and continue. I opened a case...


WF 8.0.0.5M
July 08, 2014, 05:52 PM
Waz
If you get an answer, please post it back.

I think we would all like to know.


Waz...

Prod:WebFOCUS 7.6.10/8.1.04Upgrade:WebFOCUS 8.2.07OS:LinuxOutputs:HTML, PDF, Excel, PPT
In Focus since 1984
Pity the lost knowledge of an old programmer!

July 09, 2014, 07:25 AM
Alan B
Dialogue Manager does have this habit of stopping processing on an error. However, if this calculation were to be in a DEFINE or COMPUTE, it is expected that an error would be trapped. So how about:
-SET &MYDATE='A20140101';

DEFINE FUNCTION CHECK (INPUT/A10)
CHECK/YYMD = DATECVT(INPUT, 'A8YYMD', 'YYMD');
END
-RUN

-SET &X= CHECK(&MYDATE);
-IF &X EQ 0 THEN GOTO DATE_ERROR;

-GOTO ALL_DONE;

-DATE_ERROR;
-TYPE BAD DATE
-EXIT

-ALL_DONE
-TYPE ALL DONE DATE IS &X
-EXIT



Alan.
WF 7.705/8.007
July 11, 2014, 01:51 PM
jodye
Hi Alan!

Wow fantastic solution. I never knew you could call a user defined func from DM like that.

Thanks!


WF 8.0.0.5M