Statistical programming, matrix languages, and more

Exit IML if error

Accepted Solution Solved
Reply
Contributor
Posts: 27
Accepted Solution

Exit IML if error

Hi Folks,

I have the following IML code in a large macro called %LARGE. Of course, there are other command lines within OOPS module. I want to exit IML and go to label "doit" if there is any error when executing IML. But it falied to execute %goto statement. Could anybody help? Thanks.

proc iml;

start;                                          /* module will be named MAIN */
errcode = {" %if errors >= 0 %then %goto doit ; "} ;
call push (errcode);
errors = 0;

  

   start oops;                             /* start module OOPS */

   .......

   .......

   finish;                                     /* finish OOPS */
   run oops;

finish;                                       /* finish MAIN */


errors= -1;                                /* disable     */
quit;


Accepted Solutions
Solution
‎07-14-2011 09:18 AM
SAS Super FREQ
Posts: 3,225

Re: Exit IML if error

An interesting question. I've never done it. You might try this (I don't know whether it will work):

1) Before PROC IML, use %LET IsError = 0;

2) In PROC IML, if there is an error CALL SYMPUT("IsError", "1"); and then ABORT;

3) After the PROC IML code, use a %IF statement to check the value of &IsError. If it is set, then %GOTO.

View solution in original post


All Replies
SAS Super FREQ
Posts: 3,225

Exit IML if error

Have you looked at

http://communities.sas.com/message/37481#37481 ?

It is a slightly different problem, but related, and it includes a complete example that you can run. Also, it points out that the 'doit' label must be within the OOPS module.

Contributor
Posts: 27

Re: Exit IML if error

Hi Rick.

Thanks for your reply. If it encounters errors, I want it %goto 'doit' label which is outside the IML procedure and skip other steps inside IML. Is there a nice way to do that? Thanks.

Solution
‎07-14-2011 09:18 AM
SAS Super FREQ
Posts: 3,225

Re: Exit IML if error

An interesting question. I've never done it. You might try this (I don't know whether it will work):

1) Before PROC IML, use %LET IsError = 0;

2) In PROC IML, if there is an error CALL SYMPUT("IsError", "1"); and then ABORT;

3) After the PROC IML code, use a %IF statement to check the value of &IsError. If it is set, then %GOTO.

Contributor
Posts: 27

Re: Exit IML if error

Thanks, Rick!

Post a Question
Discussion Stats
  • 4 replies
  • 281 views
  • 5 likes
  • 2 in conversation