BookmarkSubscribeRSS Feed
polarjud
Obsidian | Level 7

I am running a simulation of GLIMMIX on a multi-level dataset that I create.  Periodically, one of the populations I generate will cause GLIMMIX to spasm.  It cannot get convergence.  Should be no bid deal.  I want to disregard that draw (by examining the ods ConvergenceStatus) and move onto the next draw.  However, once this error has been activated, nothing else works.  Every datastep and procedure fails to execute.  I should say that this happens only in batch mode.  Interactively, I can continue with the next draw, but the program is too intensive to run interactively.  I guess the batch session permanently enters some sort of safe mode after encountering this error. 

 

Is there some way that I can force the system out of this mode and return to executing the next loop of my program?

 

The error code is: 

 

1012 The GLIMMIX procedure failed to obtain post-processing information.

3 REPLIES 3
ballardw
Super User

@polarjud wrote:

I am running a simulation of GLIMMIX on a multi-level dataset that I create.  Periodically, one of the populations I generate will cause GLIMMIX to spasm.  It cannot get convergence.  Should be no bid deal.  I want to disregard that draw (by examining the ods ConvergenceStatus) and move onto the next draw.  However, once this error has been activated, nothing else works.  Every datastep and procedure fails to execute.  I should say that this happens only in batch mode.  Interactively, I can continue with the next draw, but the program is too intensive to run interactively.  I guess the batch session permanently enters some sort of safe mode after encountering this error. 

 

Is there some way that I can force the system out of this mode and return to executing the next loop of my program?

 

The error code is: 

 

1012 The GLIMMIX procedure failed to obtain post-processing information.


Your symptom is fairly common with macro code and errors. Does your code involve macros? If so you now have the joyous part of tracing every line of code and finding out which type of error is involved. Common causes are unbalanced quotes or parentheses or a missing semicolon such that the end of a statement is not detected.

 

First thing would be to shut down SAS, restart and run the program with the OPTIONS MPRINT on to examine the generated code.

Look for things that may depend on convergence such as a data set existence or requiring at least one observation when it may not with the particular failure.

 

Another occasional issue may arise from attempting to reuse a data set created in a previous step whose values make no sense during the current run. So you may want to explicitly delete temporary sets before your block of code starts (Proc Datasets).

polarjud
Obsidian | Level 7

Thanks, but I already did all of that. There is no way to prevent the error from occasionally occurring.  Interactively, I can recover from the error.  Is there nothing to do in a batch job to force execution to resume just as it does in interactive mode?

 

ballardw
Super User

@polarjud wrote:

Thanks, but I already did all of that. There is no way to prevent the error from occasionally occurring.  Interactively, I can recover from the error.  Is there nothing to do in a batch job to force execution to resume just as it does in interactive mode?

 


If this is a macro related problem then have your run this with the option MPRINT set with one of the problem data sets?

One thing this may do is place any error messages you receive in better relationship to the code that caused them. The other is to debug the condition(s) that are failing.

 

The output from GLIMMIX provides an output table named CONVERGENCESTATUS. Use ODS OUTPUT to place the results of that table into a data set. Examine that data set and if it doesn't converge set macro variables or something to skip the parts that are executing assuming converge.

 

 

Ready to join fellow brilliant minds for the SAS Hackathon?

Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.

Register today!
How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 3 replies
  • 364 views
  • 0 likes
  • 2 in conversation