The SAS Output Delivery System and reporting techniques

Fatal ODS error

Reply
Occasional Contributor
Posts: 18

Fatal ODS error

Hi All, 

 

I am running a SAS program that converts report to PDF. 

 

The report is big (150807 lines) and i getting "Out of memory error". 

 

we are using SAS 9.2 and we will soon migrate to 9.4 version. 

 

when I run the same PDF convsion program with test 9.4 version, it runs without any issue. 

 

Did anyone face this issue? or do anyone has solution for above problem?

 

ERROR: Out of memory.
 ERROR: Fatal ODS error has occurred. Unable to continue processing this output destination.
 ERROR: Output Delivery System failure detected.  Aborted during the EXECUTION phase.
 NOTE: The SAS System stopped processing this step because of errors.
 ERROR: Fatal ODS error has occurred. Unable to continue processing this output destination.
 NOTE: Traceback called
SAS Super FREQ
Posts: 8,740

Re: Fatal ODS error

HI:
I generally report Fatal errors to Tech Support. Given your upcoming change from 9.2 to 9.4, the problem may go away, but that is something that Tech Support is more likely to be able to tell you. Without code or data to test, nobody can try to replicate your issue.

cynthia
Occasional Contributor
Posts: 18

Re: Fatal ODS error

I already involved tech support but not much help. 

 

total lines in input is 150807. 

Below is the code:

 

OPTIONS ERRABEND NONUMBER NOMPRINT MAUTOSOURCE SGEN 
FILESPPRI=3900 FILESPSEC=3900 ;  

ODS PDF FILE=OUT1 NOTOC; DATA _NULL_; INFILE IN01 TRUNCOVER; INPUT @001 LI01 $CHAR169. ; FILE PRINT LL=LI LS=169 NOTITLES; PUT @001 LI01 $CHAR169. ; RUN; ODS PDF CLOSE;
Super User
Posts: 10,466

Re: Fatal ODS error

[ Edited ]

What kind of data is in that input file? Is there anything other than simple printable text? If you have something that PDF would interpret as a control code that may be an issue.

 

How about:

ODS PDF FILE=OUT1 NOTOC;                          
DATA work.temp;                                        
  INFILE IN01 TRUNCOVER;                          
  INPUT @001 LI01       $CHAR169. ;
run;
proc print data= work.temp noobs;
  var LI01  ;                 
                                                    
RUN;                                                
ODS PDF CLOSE; 

I tried something similar to your code just writing out a single word a bunch of times and generated what looked like an ieframe.dll error. That dll is involved with rendering HTML, so I suspect that the ODS PDF engine was looking for some html to render into PDF and failed. It did work to export one line but after the error I get nothing but printer errors for PDF. So it may be that the problem becomes a corrupted print subsystem.

 

Or perhaps

ODS PDF FILE=OUT1 NOTOC;                          
DATA _NULL_;                                        
  INFILE IN01 TRUNCOVER;                          
  INPUT @001 LI01       $CHAR169. ;                 
  FILE PRINT ODS;      
  PUT   @001 LI01       $CHAR169. ;                 
                                                    
RUN;                                                
ODS PDF CLOSE; 

I am not sure why you want to attempt to use plaintext settings such as LS and NOTITLE when ODS does not recognize them.

 

Occasional Contributor
Posts: 18

Re: Fatal ODS error

[ Edited ]

I am getting error "ERROR: Out of space writing to file SYS00003.  " when I run below code:

 

ODS PDF FILE=OUT1 NOTOC;                          
DATA work.temp;                                        
  INFILE IN01 TRUNCOVER;                          
  INPUT @001 LI01       $CHAR169. ;
run;
proc print data= work.temp noobs;
  var LI01  ;                 
                                                    
RUN;                                                
ODS PDF CLOSE; 
Super User
Posts: 10,466

Re: Fatal ODS error

I would try the File Print ODS first.

 

You may have to restart your SAS session. As I mentioned after getting an error message from this the print subsytem appears corrupted and won't print anything I tried.

Occasional Contributor
Posts: 18

Re: Fatal ODS error

thank you. 

 

File Print ODS worked but it is printing as tables, column, date etc which is not needed. Also each line is broken into 2 lines. 

 

I just need to read the input (169 chars) and write to PDS (169 chars). 

 

 

Super User
Posts: 3,101

Re: Fatal ODS error

Since you are getting an Out of Memory error, it would be worthwhile checking your MEMSIZE setting in 9.2 versus 9.4. If the 9.4 setting is a lot higher that may explain why 9.4 works and 9.2 doesn't. Use PROC OPTIONS to check the MEMSIZE value.

Occasional Contributor
Posts: 18

Re: Fatal ODS error

 SAS 9.2 

MEMSIZE=142057472 Limit on the total amount of memory to be used by the SAS System

 

SAS 9.4 

MEMSIZE=142057472 Specifies the limit on the amount of virtual memory that can be used during a SAS session.

Super User
Posts: 3,101

Re: Fatal ODS error

[ Edited ]

OK, we can discount MEMSIZE as a possible cause. There has been a vast amount of development in the ODS space between 9.2 and 9.4 so it's not altogether surprising that a large ODS report has problems in 9.2 but not in 9.4. In my experience ODS is very resource hungry, so I tend to avoid it for very large outputs.

Ask a Question
Discussion stats
  • 9 replies
  • 375 views
  • 0 likes
  • 4 in conversation