Consider the following
simple GTL template definition:
proc template;
define statgraph mygraphs.scatter;
begingraph;
layout overlay;
scatterplot X=height Y=weight;
endlayout;
endgraph;
end;
run;
Both PROC SGRENDER and the DATA step can be used to execute
this template. Both techniques minimally require you to specify the
input data source and the template name. Behind the scenes in both
cases, an ODS data object is populated and bound to the template.
The data object is then passed to a graph renderer, which processes
the data and graph request to produce an output image.
The PROC SGRENDER syntax is simple.
It uses the DATA= option to specify the data source and the TEMPLATE=
option to specify the template to use for rendering the graph:
proc sgrender data=sashelp.class template=mygraphs.scatter;
run;
The DATA step syntax is slightly more complex. To execute
a GTL template, the DATA step FILE and PUT statements provide syntax
that is specific to ODS. You must minimally specify the following:
data _null_;
set sashelp.class;
file print ods=(template="mygraphs.scatter");
put _ods_;
run;
-
The DATA
step uses keyword _NULL_ for the data set name so that the DATA step
executes without writing observations or variables to an output data
set. The input data source is defined with a SET statement. This approach
is appropriate in the current example, but the input data source can
be defined with any appropriate DATA step syntax (INPUT with DATALINES,
INPUT with INFILE, SET, MERGE, UPDATE, and so on).
-
FILE PRINT ODS directs output to
ODS. PRINT is a reserved fileref that is required when executing a
GTL template. It directs output that is produced by any PUT statements
to the same file as output that is produced by SAS procedures. The
TEMPLATE= specification is required to specify the input template
name.
-
The PUT _ODS_ statement, also
required, writes the necessary variables to the output object for
each execution of the DATA step.
Note: The necessary variables for
the output data object are the ones defined by the graph template
(in this case, HEIGHT and WEIGHT), not the input data source. As
with other DATA step or procedure processing, if you know exactly
which variables the template uses, you can restrict the input variables
with DROP= or KEEP= input data set options for slightly more efficient processing.