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
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;
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.
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;
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.
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).
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.
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.
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.
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 16. Read more here about why you should contribute and what is in it for you!
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.
Select SAS Training centers are offering in-person courses. View upcoming courses for: