I’ve got some sas code that generates html which contains an sgplot with drillable data points. When clicking on a line marker, it runs code in sas job execution. This all works fine in studio. Now I’m trying to run it in sas job execution and I can’t get the output to appear. There are no errors in the log. I think I’m just not specifying the correct job definition parameters. Can you advise? Also, would I leave off the ods html and ods graph statements in my code?
Here are the ods statements which I currently have commented out:
/* ods html device=png style=htmlblue newfile=page; */
/* ods graphics / reset imagemap=yes height=4in width=7in outputfmt=png; */
Here are the job definition parameters:
_action=wait
_ODSSTYLE=HTMLBlue
_OUTPUT_TYPE=html
_ODSDEST=html
_ODS_DEVICE=png
I get the html page with a missing icon for the sgplot output.
%jesbegin is generating these ods statements:
ods graphics on / outputfmt=png;
ods html style=HTMLBlue file=_webout;
All:
I have SAS Code below, and upon SAS Job Execution, it doesn't render sgplot image.
ods graphics on / outputfmt=png;
ODS HTML style=HTMLBlue file=_webout gpath= _ODSOPTIONS = options(BITMAP_MODE='inline');
proc sgplot data=xxx ;
title; footnote;
by year;
xaxis type=linear min=&min_y. max=&max_y. values=(&min_y. to &max_y. by 1);
series x=time y=estrips / name="mrfss" lineattrs=(thickness=1.85 color=black) markers markerattrs=(size=3.5px color=black) break;
series x=time y=lower_eff / name="mrfss_ci" lineattrs=(thickness=1.7 pattern=ShortDash color=ligr) break legendlabel="95% Confidence Interval" markers markerattrs=(symbol=x size=4px color=gray);
series x=time y=upper_eff / lineattrs=(thickness=1.7 pattern=ShortDash color=ligr) break legendlabel=" " markers markerattrs=(symbol=x size=4px color=gray);
yaxis offsetmin=0 ;
run;
ods html close;
ods graphics off;
I am getting
I'm sorry if I missled you.
"_ODSOPTIONS" is a parameter that must be submitted to the JobExecution job. The parameter will be handled by the %JESBEGIN-macro.
%JESBEGIN macro will generate a ods-statement for you. To avoid confusion I would remove the ods-statement from your code.
The code below works for me.
I call the job with the parameter _ADDJESBEGINENDMACROS set to "false" to prevent %JESBEGIN from executing before my own code. Then I call %JESBEGIN from within my code to leverage the functionality within the macro.
Tip: Parameters can be set in job properties.
Tip2: Set the _DEBUG-parameter to true to see what code is generated from %JESBEGIN.
* Job must be called with parameter _ADDJESBEGINENDMACROS set to "false" ; %let _ODS_DEVICE = png; %let _ODSOPTIONS = options(BITMAP_MODE='inline'); options mprint; %JESBEGIN; options nomprint; title; footnote; proc sgplot data=sashelp.class; scatter x=height y=weight; run; %JESEND;
Try setting:
_ODSOPTIONS = options(BITMAP_MODE='inline')
This option will convert your binary picture into a BASE64-encoded string that is included into the HTML. The pictures are not stored as separate binary files.
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.
Ready to level-up your skills? Choose your own adventure.