BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
anneg109
Fluorite | Level 6

Hi, 

I am running SAS daily from a batch file to produce a pdf containing a couple of tables, a couple of plots from gplot and then several from sgplot. My program worked in 9.3, but when I updated to 9.4 the tables and the gplot output is produced, but the sgplot output is not and I get "ERROR: Trying to open a key that does not exist: CORE\PRINTING\PRINTERS\\DEFAULT SETTINGS".

This only happens when I run sas from a batch file, not if I open SAS and run from there.

I can't find any reference to sgplots run from batch files other than that ods graphics are off by default in batch mode, but turning ods graphics on in the program doesn't fix my problem.

I would really appreciate any help!

Thanks,

Anne

 

Here is the code I am running:

 

 

options nodate nonumber;
goptions device=pdf border gsfmode=replace hsize=8 vsize=8;
title "LTBE Soil Water Probes";
title2 "&pdate";
ods pdf file="c:\projects\bioenergy\LTBE\data\weather\soil probes &pdate..pdf" pdftoc=1;
ods noproctitle;
 ****tables and gplot code not included************;
ods graphics on;
ods pdf startpage=now;
title "Long-Term Biomass Experiment";
title2 "&pyear";
ods layout gridded width=7in height=8in columns=2 rows=2 order_type=row_major; 
ods region x=0 y=5% width=50% height=50%; 
ods proclabel "Whole Season by Treatment Plots";
ods noproctitle;
proc sgplot data=forplts2 description="Control";
series x=datetime y=CA / legendlabel="Austin" lineattrs=(thickness=1 color=stgy) break; 
series x=datetime y=CH /legendlabel="Houston" lineattrs=(thickness=1 color=deo) break; 
needle x=datetime y=rain_mm /legendlabel="rain" y2axis lineattrs=(thickness=1 color=cyan);
xaxis label=" ";
yaxis label="volumetric soil water content (%)" labelattrs=(size=1.1%) values=(0 to 60 by 10);
y2axis label="mm of water" labelattrs=(size=1.1%) values=(0 to 100 by 10);
title "Treatment = Control"; 
run;
ods region x=50% y=5% width=50% height=50%; 
ods proclabel " ";
proc sgplot data=forplts2 description="Spring drought"; 
series x=datetime y=PPTSDA /legendlabel="Austin" lineattrs=(thickness=1 color=stgy) break; 
series x=datetime y=PPTSDH /legendlabel="Houston" lineattrs=(thickness=1 color=deo) break; 
needle x=datetime y=rain_mm /legendlabel="rain" y2axis lineattrs=(thickness=1 color=cyan);
xaxis label=" ";
yaxis label="volumetric soil water content (%)" labelattrs=(size=1.1%) values=(0 to 60 by 10);
y2axis label="mm of water" labelattrs=(size=1.1%) values=(0 to 100 by 10);
title "Treatment = Spring Drought"; 
run;
ods region x=0 y=42% width=50% height=50%;
ods proclabel " ";
proc sgplot data=forplts2 description="Winter drought";
series x=datetime y=PPTWDA /legendlabel="Austin" lineattrs=(thickness=1 color=stgy) break; 
series x=datetime y=PPTWDH /legendlabel="Houston" lineattrs=(thickness=1 color=deo) break; 
needle x=datetime y=rain_mm /legendlabel="rain" y2axis lineattrs=(thickness=1 color=cyan);
xaxis label=" ";
yaxis label="volumetric soil water content (%)" labelattrs=(size=1.1%) values=(0 to 60 by 10);
y2axis label="mm of water" labelattrs=(size=1.1%) values=(0 to 100 by 10);
title "Treatment = Winter Drought"; 
run;
ods region x=50% Y=42% width=50% height=50%; 
ods proclabel " ";
proc sgplot data=forplts2 description="ET replacement"; 
series x=datetime y=ETA /legendlabel="Austin" lineattrs=(thickness=1 color=stgy) break; 
series x=datetime y=ETH /legendlabel="Houston" lineattrs=(thickness=1 color=deo) break; 
needle x=datetime y=rain_mm /legendlabel="rain" y2axis lineattrs=(thickness=1 color=cyan);
needle x=datetime y=irrig_mm /legendlabel="irrigation" y2axis lineattrs=(thickness=1 color=blue);
xaxis label=" ";
yaxis label="volumetric soil water content (%)" labelattrs=(size=1.1%) values=(0 to 60 by 10);
y2axis label="mm of water" labelattrs=(size=1.1%) values=(0 to 100 by 10);
title "Treatment = ET Replacement";
keylegend /across=4;
run;
 
*season by soil plots;
ods pdf startpage=now;
title "Long Term Biomass Experiment";
title2 "&pyear";
ods layout gridded width=7in height=8in columns=2 rows=2 order_type=row_major; 
ods proclabel "Whole Season by Soil Plots";
ods region x=0 y=5% width=50% height=50%; 
proc sgplot data=forplts2 description="Austin ET and control"; 
series x=datetime y=CA / legendlabel="Control" lineattrs=(thickness=1 color=green) break; 
series x=datetime y=ETA /legendlabel="ET replacement" lineattrs=(thickness=1 color=purple) break; 
needle x=datetime y=rain_mm /legendlabel="rain" y2axis lineattrs=(thickness=1 color=cyan);
needle x=datetime y=irrig_mm /legendlabel="irrigation" y2axis lineattrs=(thickness=1 color=blue);
xaxis label=" ";
yaxis label="volumetric soil water content (%)" labelattrs=(size=1%) values=(0 to 60 by 10);
y2axis label="mm of water" labelattrs=(size=1%) values=(0 to 100 by 10);
title "Soil = Austin"; 
keylegend /across=4;
run;
ods region x=50% y=5% width=50% height=50%; 
ods proclabel " ";
proc sgplot data=forplts2 description="Houston ET and control"; 
series x=datetime y=CH / legendlabel="Control" lineattrs=(thickness=1 color=green) break; 
series x=datetime y=ETH /legendlabel="ET replacement" lineattrs=(thickness=1 color=purple) break; 
needle x=datetime y=rain_mm /legendlabel="rain" y2axis lineattrs=(thickness=1 color=cyan);
needle x=datetime y=irrig_mm /legendlabel="irrigation" y2axis lineattrs=(thickness=1 color=blue);
xaxis label=" ";
yaxis label="volumetric soil water content (%)" labelattrs=(size=1%) values=(0 to 60 by 10);
y2axis label="mm of water" labelattrs=(size=1%) values=(0 to 100 by 10);
title "Soil = Houston";
keylegend /across=4;
run;
ods region x=0 y=45% width=50% height=50%;
ods proclabel " ";
proc sgplot data=forplts2 description="Austin Droughts and control";
series x=datetime y=CA / legendlabel="Control" lineattrs=(thickness=1 color=green) break; 
series x=datetime y=PPTWDA /legendlabel="Winter drt" lineattrs=(thickness=1 color=viy) break; 
series x=datetime y=PPTSDA /legendlabel="Spring drt" lineattrs=(thickness=1 color=vio) break; 
needle x=datetime y=rain_mm /legendlabel="rain" y2axis lineattrs=(thickness=1 color=cyan);
xaxis label=" ";
yaxis label="volumetric soil water content (%)" labelattrs=(size=1%) values=(0 to 60 by 10);
y2axis label="mm of water" labelattrs=(size=1%) values=(0 to 100 by 10);
title "Soil = Austin"; 
keylegend /across=4;
run;
ods region x=50% Y=45% width=50% height=50%; 
ods proclabel " ";
proc sgplot data=forplts2 description="Houston Droughts and control"; 
series x=datetime y=CH / legendlabel="Control" lineattrs=(thickness=1 color=green) break; 
series x=datetime y=PPTWDH /legendlabel="Winter drt" lineattrs=(thickness=1 color=viy) break; 
series x=datetime y=PPTSDH /legendlabel="Spring drt" lineattrs=(thickness=1 color=vio) break; 
needle x=datetime y=rain_mm /legendlabel="rain" y2axis lineattrs=(thickness=1 color=cyan);
xaxis label=" ";
yaxis label="volumetric soil water content (%)" labelattrs=(size=1%) values=(0 to 60 by 10);
y2axis label="mm of water" labelattrs=(size=1%) values=(0 to 100 by 10);
title "Soil = Houston"; 
keylegend /across=4;
run;
ods layout end; 
title;
axis;
ods pdf close;

 

Here is the contents of the batch file:

"c:\program files\SASHome\SASFoundation\9.4\sas.exe" -log "c:\projects\bioenergy\LTBE\data\Daily soil moisture sensors.log" -sysin "c:\projects\bioenergy\LTBE\data\sasdatasets\Daily soil moisture sensors.sas" -config "c:\program files\SASHome\SASFoundation\9.4\sasv9.cfg"

1 ACCEPTED SOLUTION

Accepted Solutions
anneg109
Fluorite | Level 6

The problem was solved by SAS support by adding 'ods _all_ close' before the 'ods pdf' statement

and 'goptions device=SASPRTC' before running the sgplot procs.

View solution in original post

6 REPLIES 6
ballardw
Super User

Have you tried this with just a single SGPLOT call?

Without any macro references?

Specify an explicit style on the ODS PDF statement?

 

I suspect a noteable difference in the default printer settings under the new install for batch, possibly none set.

anneg109
Fluorite | Level 6
Ballardw,
Thanks for your response. I tried all your suggestions, with no change in my results. Still getting the same error message.
Any other thoughts?
Anne
anneg109
Fluorite | Level 6

The problem was solved by SAS support by adding 'ods _all_ close' before the 'ods pdf' statement

and 'goptions device=SASPRTC' before running the sgplot procs.

PLim_Aus
Calcite | Level 5

Thanks for this solution. I had a very similar problem when trying to produce a large number of graphs (SGPANEL), where each one was sent to a PDF using ODS using a macro call for each graph.

 

I simply put the ODS _all_ close statement before the ODS PDF statement, and it worked (SAS v9.3).


Thanks again for this.

DanH_sas
SAS Super FREQ

For the record, the GOPTIONS statement should not be used for the SG procedures, or for any GTL-based output. The ODS GRAPHICS statement is where the "global" options should be specified for this system. For your example, try removing the GOPTIONS statement and setting the WIDTH and HEIGHT on the ODS GRAPHICS statement you have in your program. You can also set the OUTPUTFMT on that statement; but try the default first, which will give you a nice vector-based output in PDF.

 

Hope this helps!

Dan

P_Marty
SAS Employee

I came across the same problem when trying to send gplot output to my output window and a subsequent sgplot to an (external) emf file.  Instead of "ods _all_ close;" which will close all ods destinations (obvi), you can be more specific and use "ods listing close; ods listing;" in case you want to also include further output to, say, a pdf destination that you opened earlier in your program.  (Note that the "ods listing;" is not required unless you want to immediately restore the listing destination.)  This worked for me.

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

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
  • 6 replies
  • 3234 views
  • 2 likes
  • 5 in conversation