BookmarkSubscribeRSS Feed
gskn4u
Obsidian | Level 7

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
9 REPLIES 9
Cynthia_sas
SAS Super FREQ
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
gskn4u
Obsidian | Level 7

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;
ballardw
Super User

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.

 

gskn4u
Obsidian | Level 7

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; 
ballardw
Super User

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.

gskn4u
Obsidian | Level 7

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). 

 

 

SASKiwi
PROC Star

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.

gskn4u
Obsidian | Level 7

 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.

SASKiwi
PROC Star

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.

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 9 replies
  • 7404 views
  • 1 like
  • 4 in conversation