OUTPUT Statement
Writes the current observation to a SAS data set.
| Valid in: | DATA step |
| Categories: | Action |
| CAS | |
| Type: | Executable |
Table of Contents
Syntax
OUTPUT <data-set-name(s)>;
Without Arguments
Using OUTPUT without
arguments causes the current observation to be written to all data
sets that are named in the DATA statement.
If a MODIFY statement
is present, OUTPUT with no arguments writes the current observation
to the end of the data set that is specified in the MODIFY statement.
Arguments
data-set-name
specifies the name of a data set to which SAS writes the observation.
| Restriction | All names specified in the OUTPUT statement must also appear in the DATA statement. |
| Tips | Instead of using a data set name, you can specify the physical pathname to the file, using syntax that your operating system understands. The pathname must be enclosed in single or double quotation marks. |
| You can specify up to as many data sets in the OUTPUT statement as you specified in the DATA statement for that DATA step. |
Details
When and Where the OUTPUT Statement Writes Observations
The OUTPUT statement
tells SAS to write the current observation to a SAS data set immediately,
not at the end of the DATA step. If no data set name is specified
in the OUTPUT statement, the observation is written to the data set
or data sets that are listed in the DATA statement.
Implicit versus Explicit Output
By default, every DATA
step contains an implicit OUTPUT statement at the end of each iteration
that tells SAS to write observations to the data set or data sets
that are being created. Placing an explicit OUTPUT statement in a
DATA step overrides the automatic output, and SAS adds an observation
to a data set only when an explicit OUTPUT statement is executed.
Once you use an OUTPUT statement to write an observation to any one
data set, however, there is no implicit OUTPUT statement at the end
of the DATA step. In this situation, a DATA step writes an observation
to a data set only when an explicit OUTPUT executes. You can use the
OUTPUT statement alone or as part of an IF-THEN or SELECT statement
or in DO-loop processing.
When Using the MODIFY Statement
When you use the MODIFY
statement with the OUTPUT statement, the REMOVE and REPLACE statements
override the implicit write action at the end of each DATA step iteration. For more information,
see Comparisons. If both the OUTPUT statement and a REPLACE or REMOVE statement
execute on a given observation, perform the output action last to
keep the position of the observation pointer correct.
Comparisons
-
OUTPUT writes observations to a SAS data set; PUT writes variable values or text strings to an external file or the SAS log.
-
To control when an observation is written to a specified output data set, use the OUTPUT statement. To control which variables are written to a specified output data set, use the KEEP= or DROP= data set option in the DATA statement, or use the KEEP or DROP statement.
-
When you use the OUTPUT statement with the MODIFY statement, the following items apply.
-
Using an OUTPUT, REPLACE, or REMOVE statement overrides the default write action at the end of a DATA step. (OUTPUT is the default action; REPLACE becomes the default action when a MODIFY statement is used.) If you use any of these statements in a DATA step, you must explicitly program output for the new observations that are added to the data set.
-
The OUTPUT, REPLACE, and REMOVE statements are independent of each other. More than one statement can apply to the same observation, as long as the sequence is logical.
-
If both an OUTPUT and a REPLACE or REMOVE statement execute on a given observation, perform the OUTPUT action last to keep the position of the observation pointer correct.
-
Examples
Example 1: Sample Uses of OUTPUT
These examples show
how you can use an OUTPUT statement:
-
This line of code writes the current observation to a SAS data set.
output;
-
This line of code writes the current observation to a SAS data set when a specified condition is true.
if deptcode gt 2000 then output;
-
This line of code writes an observation to the data set MARKUP when the PHONE value is missing.
if phone=. then output markup;
Example 2: Creating Multiple Observations from Each Line of Input
You can create two or
more observations from each line of input data. This SAS program
creates three observations in the data set RESPONSE for each observation
in the data set SULFA:
data response(drop=time1-time3); set sulfa; time=time1; output; time=time2; output; time=time3; output; run;
Example 3: Creating Multiple Data Sets from a Single Input File
You can create more
than one SAS data set from one input file. In this example, OUTPUT
writes observations to two data sets, OZONE and OXIDES:
data ozone oxides;
infile file-specification;
input city $ 1-15 date date9.
chemical $ 26-27 ppm 29-30;
if chemical='O3' then output ozone;
else output oxides;
run;Example 4: Creating One Observation from Several Lines of Input
You can combine several
input observations into one observation. In this example, OUTPUT
creates one observation that totals the values of DEFECTS in the first
ten observations of the input data set:
data discards;
set gadgets;
drop defects;
reps+1;
if reps=1 then total=0;
total+defects;
if reps=10 then do;
output;
stop;
end;
run;See Also
Copyright © SAS Institute Inc. All Rights Reserved.
Last updated: March 29, 2017